🍒

DocbaseのリンクをunfurlするSlackAppを作った

に公開

こんにちは!unfurlのことをずっと「あんふゆーあーるえる」と読んでました、
英語はずっと話せませんmochicoです。

正しくは「あんふぁーる」って読むらしいです。

今日話すこと

今日は、Slackに投稿したDocbaseのURLをunfurlするSlackAppの話をしようと思います。

自社ドキュメンテーションツールなどで、公式がAppを提供してくれてない場合、URLをSlackに貼ってもプレビューがでなくて「この記事なんやねん・・」ってなったりしませんか?

そんなときは自分でSlack Appを作成しちゃいましょう!

システム構成

ざっくりこんなフローとなっています。
今回はLambdaを採用しましたが、Slack Appからイベントを受け取ってURLの内容を返却できるものであれば、GASやherokuでもいけるはずです(未検証ですが...)

Slackアプリを作成する

Your Apps にアクセスし、[Create New App] を押下して作成!

  • Eventsの有効化
    • Event Subscriptions を クリックし、Enable Events をオンにする
    • Subscribe to bot eventslink_shared を追加
    • App unfurl domains に 検知したいドメインを追加
      • https://your-domain.io/posts/123345 なら your-domain.io
  • Scopeの追加
    • OAuth & Permissions をクリック
    • ScopesBot Token Scopes に 下記2つのScopeを追加
      • links:write
      • links:read

Lambda functionを作成する

Lambda functoionを作成し、下記の3つを環境変数に設定します。

  • Slack Signing Secret
  • Slack Bot User Token
  • DocBaseのAPI Token

Lambdaでは以下のような処理を行います。

  • Slackからのリクエストの正当性を電子署名で検証
  • DocBase APIを利用した記事情報の取得
  • 処理対象を全体公開の記事のみに限定
  • 記事情報から生成したプレビューのSlackへの投稿

具体的なコードは GitHub にあげましたので、下記をご覧ください。
(コンソール上でLambdaにサクッと貼れるものにしたくてあまりきれいなコードじゃなくてすみませんorz)
https://github.com/mochico50/slack-unfurl-docbase

Lambda関数URLをSlackAppに設定する

Lambda関数のURLを生成し、そのURLをSlack Appの Request URL に設定します。

結果

こんな風に記事の内容をプレビューできるようになりました! 🎉
いちいち記事のタイトルをコピーしてSlackに貼る必要がなくなり便利ですね。

まとめ

今回はDocbaseを対象にしてAppを作成しましたが、APIで記事内容さえ取得できるものであれば他のツールでもunfurlの対応ができます。
よかったら参考にしてみてくださいm

Discussion