前回の記事 の続きです。
そもそもワークボットとは
WorkatoではSlackへの双方向処理を簡単に構築できる仕組み「ワークボット」が提供されています。
ワークボットには次の2種類があります。
標準ワークボット
- Workatoが配布するSlack Appを媒介して動作
- スコープやイベントは固定
- 大抵の処理はこれで十分実現できる
カスタムワークボット(Enterprise Workbot)
- 自作のSlack Appを媒介して動作
- 対象のイベントやスコープは自由に設定でき、拡張性に優れる
- 標準ワークボットよりもできることが多い
- エディションにより利用個数に制限あり
さて、今回実現することに話を戻します。
- Slackの投稿に絵文字リアクション
が付けられたら起動
これには、Slackイベント「reaction_added(リアクションが追加された)」の受信が不可欠ですが、標準ワークボットでは非対応のため、カスタムワークボットを使用します。
カスタムワークボット利用までの道のり
<工程1>必要なイベントやスコープの洗い出し
<工程2>Custom OAuth profileを作成する
<工程3>コネクションを作成する
<工程4>ボットをチャンネルに追加する
おや?肝心のSlack Appは作らないの?と疑問に思うかもしれません。安心してください。
工程2のガイドの中で、Slack Appもついでに作れるようになっています。
<工程1>必要なイベントやスコープの洗い出し
今回受信したいイベントは1つです。
reaction_added(リアクションが追加された)
ここで注意したいのが、リアクション追加イベントを受信した際のペイロードには、肝心のメッセージのテキストは含まれていないことです。
そうなると、メッセージテキストを取得する処理が別途必要となります。
SlackのAPIメソッド一覧から、今回使うメソッドは
conversations.history
かな?とアタリを付けて、必要なスコープを確認しておきます。
<工程2>Custom OAuth profileを作成する
Workatoの左サイドメニューから Tools > Custom OAuth profiles の順にクリックします。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3778017%2F1238a1f6-b851-e767-22c7-69a17f451a6e.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=dd7e1272456efc4b3732264dd5178848)
「+ New OAuth profile」をクリックして、「New custom profile」と書かれた画面に遷移します。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3778017%2F5ae86e70-eb1a-9902-65ea-021ddabb3a66.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=17ce7e4c48d796583a55d6c114e522bb)
- Step1のApplication:
Workbot for Slack
を選択 - Step2のName:任意の値を入力
上記設定のうえ、「Create new app」ボタンをクリックします。
別ウィンドウが開かれ、ログイン中のSlackに自動で遷移します。
(利用するSlackの環境によっては、適用先のSlackのワークスペースを選択する画面が途中で表示されることがあります。その際は、適宜選択してください)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3778017%2Fdd48f67a-2256-b0c7-5a37-ba2f0eef3cf1.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=372f80013dddea258f07f5d638c38365)
ここでは、何やらこまごまとした設定が施されたAppを作っていいかを問われています。
これはワークボットとして最低限動作するためのスコープなどが初期設定されているものです。
「Create」ボタンを押すと、Slack Appが作られます。
WorkatoのCustom OAuth profileの設定画面に戻り、先ほど作成したSlack AppのClientIDなどの情報を転記し、「Save」ボタンで保存します。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3778017%2F01b0bc0e-32f5-ecdf-5d79-ef5fa102bb58.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=eac036af5215d34e39674f75553e506e)
最下部の「Done」ボタンも忘れずに押しておきます。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3778017%2F89577f35-fa13-2e5b-24c4-ce22a5fddb85.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=6d987a8a0da41a7d108bf9b03f91e937)
設定のカスタマイズ
今回の用途に合わせて、Slack App側の設定を追加します。
受信イベントの追加
SlackAppの「Event Subscriptions」の画面に遷移して、Subscribe to bot events で以下を追加します。
- reaction_added
スコープ追加
SlackAppの「OAuth & Permissions」の画面に遷移して、Scope > Bot Token Scopes で以下を追加します。
- channels:history
- groups:history
- im:history
- mpim:history
Slack Appのインストール
作成したSlack Appを、Slackワークスペースにインストールします。
多くの場合、ワークスペースの管理者がアプリの制限をしているため、承認を経てからのインストールという流れになります。
SlackAppの「Install App」の画面に遷移して、「Request to Install」ボタンをクリックします。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3778017%2F0d52a143-dcf5-f206-b52a-68e3175886b6.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=a35b0d511e457a3529323c7b9c6cb059)
この時点では、申請した状態です。(未インストール)
管理者の承認が下りたらインストールし、工程3に進みます。
<工程3>コネクションを作成する
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3778017%2F8d7011ae-c7b6-a3a5-bd6e-0e22226e9378.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=f09810e0991d1200d1b97a0129d61d64)
-
Custom OAuth profile:先ほど作成したプロファイルを選択します。
これにより、意図したSlackAppと紐づけることができます。
「Connect」ボタンでSlackの画面に遷移しますので、「許可する」ボタンをクリックします。
コネクションのステータスがConnected
となれば完了です。
<工程4>ボットをチャンネルに追加する
ボットユーザーも人間のユーザーと同様に、参加しているチャンネルならばイベントに気づける/投稿できるというSlackの基本仕様が適用されます。
このため、ボットを該当のチャンネルに参加させる必要があります。
該当のチャンネルで、ボットをメンションするとSlackbotから返信が届くので、「招待する」ボタンを押します。
別の方法もあります。
- チャンネルで、インテグレーション>アプリの追加
- アプリで、「+チャンネルにこのアプリを追加する」
チャンネル追加は、あくまでチャンネルに関する送受信をおこなう場合に必要な工程です。
できればやっておくこと
Slack Appの初期アイコンは、人間ユーザーと同様の画像が適用されるため見分けがつきにくいです。
一目でボットと分かるアイコンに変更しておくと無難です。
Slack Appの「Basic Information」の画面に遷移して、Display Informationで任意のアイコンに変更できます。
さいごに
これで難所は越えました。
次回は、レシピ構築編です。