crispy.data

Slack によるプレビュー目的の GET リクエストを判定する方法

2024-08-04
Slack のメッセージにハイパーリンクを埋め込むと、メッセージの下にプレビューを表示するために Slack がリンク先に GET リクエストを飛ばす。
Slack メッセージのプレビューの例
メッセージに埋め込むリンクが何らかの API や PV を計測したいページである場合、Slack が自動で行うこのような GET リクエストを無視する挙動を実現したくなる。 このような GET リクエストを無視しない場合、API のエンドポイントを共有するつもりで URL をメッセージに記載しただけなのに API サーバー上で処理が実行されたり、PV が不当に高く集計されるといった不都合が生じる。 プレビューのために行われる GET リクエストの header の User-Agent には “Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots)” のような値が設定される。 したがって、開発した API や PV を集計するクエリ側で、User-Agent の値に基づいて処理・集計の対象外とするロジックを実装すれば、前記の不都合を回避できる。