WebhookとAPIトークン
- Webhook・apiトークンでできること
- Webhookを利用してみる(Local to SlackBot)
初めに
Webhook(ウェブフック)は、web開発でカスタムのコールバックを用いてウェブページやウェブアプリケーションの動作を追加または変更するための方法である。
このコールバックは、元のウェブサイトやアプリケーションはサードパーティのユーザーや開発者がメンテナンス、修正、管理できる場合がある。「Webhook」という用語は、コンピュータプログラミングの用語hookから、2007年にJeff Lindsayによって作られた。
フォーマットには、通常JSONが利用される。リクエストは、HTTP POST(英語版)リクエストとして行われる。
イメージ
Webhookの説明
Webhookの種類
-
Incoming Webhook
外部から対象のアプリケーションに要求を受け付けることができる機能です。
SlackのIncoming Webhookは指定したチャンネルに外部からメッセージなどを送信できる機能になります。
Slack側からのデータの受信はできないので、Slack側に一方的にデータを送信するのみになります。
何らかの自動処理が完了したタイミングで通知したり、お問い合わせフォームで送信があった場合に内容を転送する、などの使い方ができるようです。 -
Outgoing Webhook
アプリケーションから外部にイベントを通知することができる機能です。
SlackのOutgoing Webhookは、指定したルールに該当するメッセージを外部に送信することができます。
IncomingとOutgoingを両方使うことでメッセージBotを作成することができます。
Webhookの使い方
Webhookを利用するには、Webhookを利用するアプリケーションから、事前にAPIトークンを取得して利用する必要があります。
Outgoing は送信用なので、APIトークンが不要になるケースがほとんどです。
ハンズオン
Step1. Slack Incoming Webhookを作成
- Slack Appから
Incoming WebHooks
を追加する。 - 通知先のチャンネルは、
Botお試し
など新規で作成する。 - 試し用のURLを利用してBOTを送信してみる。
curl -X POST --data-urlencode "payload={\"channel\": \"#bots\", \"username\": \"webhookbot\", \"text\": \"This is posted to #bots and comes from a bot named webhookbot.\", \"icon_emoji\": \":ghost:\"}" https://hooks.slack.com/services/xxxxxxxx/xxxxxxxx/xxxxxxxx
Step2. Slack Incoming WebhookにLocalからメッセージを送信する
- Javascriptの実行環境を準備する。
Node.jsをインストールしましょう。 - 先ほど、curlコマンドで実行した要求をJavascriptで実装してみる。
Step3. GASにSlackからメッセージを送信する
- Google Apprication Scriptを準備する。
- UrlFetchAppを利用してpost要求を実行する。
Step4. Outgoing WehbookでGASにメッセージを送信する
-
doPost(e)
でfunctionを作成する。 - ウェブアプリでアプリケーションを公開。アクセスできるユーザは
全員
とする。 - 公開したウェブアプリのURLを取得する。
- Slack Appから
Outgoing WebHooks
を追加する。 - GASのウェブアプリのURLを設定する。
- 呼び出ししてみる。
GASを経由して、利用するSlackにメッセージが送信できる機能です。
そのため、Tokenの一致判定を行いアタックを回避する。
Step5. Outgoing WehbookでGASにメッセージを送信後、コールバックでSlackにメッセージを送信する
- Goolgeの翻訳API
LanguageApp.translate
を使ってみる。 - Step4で作成したBOTを拡張してメッセージを英語に翻訳する。