概要
以前紹介していた雑談BotがAPIの提供のサービス終了のようで利用できなくなっていました。
新しくA3RTのAPIを用いて実装してみたいと思います。今回GASを使うことで無料で運用することできました。
yunabe.hatenablog.com
準備するもの
A3RT
こちらのリンクでユーザ登録をすることでAPIトークンが手に入れます。 a3rt.recruit-tech.co.jp
Incoming Webhook(Slack)
通知先のチャネルのWebhockのurlを取得します。
https://{{チーム名}}.slack.com/apps の検索欄にて Incoming Webhook
で検索すると出てきますので、設定からURLを取得してください。
Outgoing Webhook(Slack)
今回 雑談
というキーワードでA3RTに対してAPIを叩き、雑談を実現します。
- 引き金となる言葉:雑談
- URL:後ろで説明するGASで生成したURL
- トークンはメモしておいてください。
GAS(Google Apps Script)
実装するポイントは以下になります。
- Slackから雑談したい文字を受け取る
- 受け取った文字を用いA3RTのAPIを叩く
- A3RTからのレスポンスをSlackに通知する
試しに以下のコードを書きました。
//A3RTのAPIを叩く function postA3RT(text){ var url = "https://api.a3rt.recruit-tech.co.jp/talk/v1/smalltalk"; var api_key = "{{APIトークン(A3RT)}}" var payload = { "apikey" : api_key, "query" : text }; var options = { "method" : "post", "payload" : payload }; var response = UrlFetchApp.fetch(url, options); var result = JSON.parse(response.getContentText())["results"][0]["reply"]; Logger.log(result); return result; } //Skackへ通知する function postSlack(text){ var url = "{{Incoming Webhook(Slack)}}"; var options = { "method" : "POST", "headers": {"Content-type": "application/json"}, "payload" : '{"text":"' + text + '"}' }; UrlFetchApp.fetch(url, options); } // Slackからの入力を受け取る function doPost(e) { var varify_token = "Outgoing Webhook(Slack)"; if (varify_token != e.parameter.token) { throw new Error("invalid token."); } var data = e.parameter.text.split(" "); var message = postA3RT(data[1]) postSlack(message); }
こちらをGASで実装しデプロイを実施するとURLが取得できます。こちらのURLを先程の Outgoing Webhook
に入力してください。
動かし方
雑談 おはよう
などとSlackで発信すると返事くれば成功です。