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 eventsにlink_sharedを追加 -
App unfurl domainsに 検知したいドメインを追加-
https://your-domain.io/posts/123345ならyour-domain.io
-
-
- Scopeの追加
-
OAuth & Permissionsをクリック -
ScopesのBot Token Scopesに 下記2つのScopeを追加links:writelinks:read
-


Lambda functionを作成する
Lambda functoionを作成し、下記の3つを環境変数に設定します。
- Slack Signing Secret
- Slack Bot User Token
- DocBaseのAPI Token
Lambdaでは以下のような処理を行います。
- Slackからのリクエストの正当性を電子署名で検証
- DocBase APIを利用した記事情報の取得
- 処理対象を全体公開の記事のみに限定
- 記事情報から生成したプレビューのSlackへの投稿
具体的なコードは GitHub にあげましたので、下記をご覧ください。
(コンソール上でLambdaにサクッと貼れるものにしたくてあまりきれいなコードじゃなくてすみませんorz)
Lambda関数URLをSlackAppに設定する
Lambda関数のURLを生成し、そのURLをSlack Appの Request URL に設定します。

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

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