0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WebhookとAPIトークン

  • Webhook・apiトークンでできること
  • Webhookを利用してみる(Local to SlackBot)

初めに

Wikipedia Webhook

Webhookとは
Webhook(ウェブフック)は、web開発でカスタムのコールバックを用いてウェブページやウェブアプリケーションの動作を追加または変更するための方法である。
このコールバックは、元のウェブサイトやアプリケーションはサードパーティのユーザーや開発者がメンテナンス、修正、管理できる場合がある。「Webhook」という用語は、コンピュータプログラミングの用語hookから、2007年にJeff Lindsayによって作られた。

フォーマットには、通常JSONが利用される。リクエストは、HTTP POST(英語版)リクエストとして行われる。

イメージ

image.png

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を作成

  1. Slack AppからIncoming WebHooksを追加する。
  2. 通知先のチャンネルは、Botお試しなど新規で作成する。
  3. 試し用の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

image.png

Step2. Slack Incoming WebhookにLocalからメッセージを送信する

  1. Javascriptの実行環境を準備する。
    Node.jsをインストールしましょう。
  2. 先ほど、curlコマンドで実行した要求をJavascriptで実装してみる。

Step3. GASにSlackからメッセージを送信する

image.png

  1. Google Apprication Scriptを準備する。
  2. UrlFetchAppを利用してpost要求を実行する。

Step4. Outgoing WehbookでGASにメッセージを送信する

  1. doPost(e)でfunctionを作成する。
  2. ウェブアプリでアプリケーションを公開。アクセスできるユーザは全員とする。
  3. 公開したウェブアプリのURLを取得する。
  4. Slack AppからOutgoing WebHooksを追加する。
  5. GASのウェブアプリのURLを設定する。
  6. 呼び出ししてみる。

GASを経由して、利用するSlackにメッセージが送信できる機能です。
そのため、Tokenの一致判定を行いアタックを回避する。

  • 以下の内容を追加実装

    • Tokenの一致判定をおこない不一致の場合、処理を終了する。
    • メッセージ内容をあなたは、「xxxx」と言いました。と応答する。

    image.png

Step5. Outgoing WehbookでGASにメッセージを送信後、コールバックでSlackにメッセージを送信する

image.png

  1. Goolgeの翻訳APILanguageApp.translateを使ってみる。
  2. Step4で作成したBOTを拡張してメッセージを英語に翻訳する。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?