Robotic Crowd

Robotic Crowd

Slackトリガーでワークフローを起動

Author: Asao Nakamura 560 views

この記事では、Slack投稿をトリガーに指定のワークフローを起動させる方法について紹介します。

【できるようになること】

  • Slackの指定したチャンネルにて、特定ワードを受信したら指定のワークフローを起動
  • ワークフローを起動後、メッセージを自動返信

 Slackトリガーを実現

◇用意するもの

  • Google Apps Script:Googleが無料で提供しているプログラミング環境。
    ※以下「GAS」
  • Slack App:ワークフロー起動後に、メッセージを自動返信するにはAppの作成が必要。
  • Outgoing Webhook:設定した特定ワードが投稿された際に、GASを起動させるために必要なSlackアプリケーション。

それぞれの関係を図で示すと次のように表現できます。

 ワークフローの設定例

下記手順にてワークフローを設定します。

最初にGASの設定を行います。

GASではSlackからの情報を受信して、Robotic CrowdのAPIを実行します。

  - 初めてGASのプロジェクトを作成する方は「APPS SCRIPTを作成」を押下

  - 既存のプロジェクトがある方は左上の「新しいプロジェクト」を押下

「無題のプロジェクト」が作成されました。作成した本プロジェクトを外部と連携させるためにWeb公開設定を行います。

  • デプロイ > 新しいデプロイ の順にクリックします。
  • 歯車マーク > ウェブアプリ の順にクリックします。
  • 「説明」に任意の説明文を入力します。
  • 「次のユーザーとして実行」を自分とします。
  • 「アクセスできるユーザー」を“全員”とします(必須)。
    ※各種設定を完了し、初めてSlackからワークフローを起動させることに成功するまでは、”全員”を指定する必要があります。初回稼働確認後は、デプロイ管理画面(手順12)より、公開範囲を変更いただくことが可能です。

 
  • 発行されたウェブアプリ URLを確認します。
    ※後にコピペで使用します。あとからデプロイ画面にて確認可能です。
  • 「完了」します

Slack Appの設定は基本的にこちらに従って設定を行います。任意のチャンネルに、アプリを追加してください。

上記ページとの変更点は以下2点となります。(いずれも3. OAuth&Permissionsの設定内の内容です)

  • Redirect URLsは、先ほどコピー保存したGASのURLを設定します。
  • Scopesは「chat:write」のみでOKです。

 

  • OAuth $ Permissionsから、アクセストークンをコピーします。
  • コピーしたトークンはGASで使用するため、一時的に保持しておきます。

次にOutgoing Webhookの設定を行います。
本アプリを使用するにはまずSlackのワークスペースにインストールする必要があります。

  • サイドメニューのAppを開きます。
  • Outgoing Webhookで検索します。
  • 「追加」をクリックします。
  • 開いた画面で、「Slackに追加」をクリックします。

設定するのは以下の3点のみです。

  • チャンネル:下記の「引き金となる言葉」から始まるメッセージが投稿されるチャンネル(4, でアプリを追加したチャンネル)
  • 引き金となる言葉:ここで設定したキーワードから始まる文章がトリガーになり、ワークフローが起動
  • URL:3. で発行されたGASのURL

上記の場合は、「検証チャンネルにて『WF動』『WF起動』から始まる文章が投稿されたら、GASを起動する」という設定となります。なので「WF動いて」や「WF起動してください」というワードでもGASを起動することが可能です。

設定できたら、ページ下部の保存ボタンを押下します。

Slackのライブラリを導入します。これを導入することでこれから記載するスクリプトの中の一部関数を実行できるようになります。

  • ライブラリの+ボタンをクリックします。
  • スクリプトIDに以下を入力します。
    1on93YOYfSmV92R5q59NpKmsyWIQD8qnoLYk-gkQBI92C58SPyA2x1-bq
  • 「検索」をクリックします。
  • 「バージョン」に22を指定します。
  • 「追加」をクリックします。

次に、Slackからデータを受信するコードをコピペで設定します。

  • function myFunction()と記述されているコード入力画面(コード.gs)のテキストを、全削除します。
  • 削除できたら、以下のスクリプトをコピペします。
function doPost(e) {
  roboticCrowdMain(); //ワークフロー起動する
  var token = "";
  var message = "WFを起動しました"; //ワークフロー起動後に自動返信するメッセージ
  var slackApp = SlackApp.create(token);
  slackApp.chatPostMessage(e.parameter.channel_id, message); //Slackにメッセージ送信
}
  • コードのコピペ後、下記部分に「Slack Appの設定」の最後にコピー保存したトークンを入力します。

次に、Robotic Crowd APIの設定を行ないます。

  • ファイルの + ボタンをクリックします。
  • 「スクリプト」をクリックします。

  • 任意の名前を入力します。
  • 作成されたファイルが表示されるため、表示されているテキスト(function myFunction~~)を全て削除します。
  • 以下コードをコピペします。
function getToken(access_key_id,secret_access_key) {
 var data = {
     access_key_id: access_key_id,
     secret_access_key: secret_access_key,
     expires: 100000
   };
 var option = {
   method : "post",
   payload: JSON.stringify(data),
   contentType: "application/json",
   muteHttpExceptions: true
 };
 
 var req = UrlFetchApp.fetch("https://api.roboticcrowd.com/v1/token", option);
 var token = req.getContentText();
 return token;
}
function roboticCrowdMain(){
  var key = "",secret=""; //Robotic Crowdで作成したACCESS KEY IDとSECRET ACCESS KEY
  var token = getToken(key,secret);
  
  var header = {
    Authorization: "Bearer "+ token
  };
  var body = {
    workflow_id: "" //ワークフローID
  };
  var option = {
    method: "POST",
    headers: header,
    payload: JSON.stringify(body),
    contentType: "application/json",
    muteHttpExceptions: true
  };
  var queue = UrlFetchApp.fetch("https://api.roboticcrowd.com/v1/session_queues", option);
  Logger.log(queue.getContentText());
};

コピペしたコードに、RoboticCrowdのAPIキー2種とワークフローIDを入力する必要があります。

  • こちらの記事をに従い、APIキーを発行します
  • スクリプトの下記部分に、発行したAPIキーを入力します。


次に、実行したいワークフローIDを指定します。

  • 実行したいワークフローを開きます。
  • 取得したワークフローIDをスクリプトの下記部分に入力します。
 
最後に、フロッピーディスクボタンからプロジェクトを保存します。
 

最後に、デプロイを更新します。

  • 画面右上のデプロイ > デプロイを管理 をクリックします。
  • 編集ボタン(ペンのアイコン)をクリックします。
  • 「新バージョン」を選択します。
  • 「デプロイ」をクリックします。

 

  • 初回のみ、アクセス承認を行なう必要があります。
  • 画面の指示に従って、承認します。

※GASにて何かしらの変更があった場合は(上書き保存含む)都度上記のようにバージョンアップをする必要があります。

これにて設定は終了です。長い間、お疲れ様でした!

 ワークフローを実行

最後に、Slackにメッセージを送信し、ワークフローを実行させてみましょう。

  • 設定したチャンネルに、引き金となる言葉を送信します。

 

登録したBotによりワークフローが起動され、「WFを起動しました」と返されます。

※ Botからのメッセージ内容は、9. Google Apps Scriptコードを設定 〜Slackデータの受信〜のコード内に記述されています。

実際にワークフローが起動されています。

<Slack>Slackトリガー

このページは役に立ちましたか?