Chatworkでもwebhookが使えるとのことなので、いつものようにサーバ費用が全くかからないGoogle Apps Script(以降、GAS)を使ってChatwork Webhookを試してみました。
GASは、無料で簡単にウェブページの作成や、APIサーバの作成をすることができるので、個人的によく使っています。
APIドキュメント(Webhook)
ドキュメントは以下のページになります。
こちらを参考にしながらGASのスクリプトを書いていきたいと思います。
サーバの用意(GAS側にスクリプトを入力)
はじめにGASで新しいプロジェクトを作成します。 ※Googleドライブを開いて、新しく作成すればいいので、今回は詳しくはこの記事では書きませんが、GASの使い方については以下でまとめていますので、御覧ください。
今回作成したプログラムはオウム返しをするだけの簡単なボットです。
var spreadsheetId = '***********'; var chatworkToken = '***********'; var myAccountId = '***********' function doPost(e) { try { var json = JSON.parse(e.postData.contents); SpreadsheetApp.openById(spreadsheetId).getSheetByName('log').getRange(1, 1).setValue(json.toSource()); var accountId = json.webhook_event.account_id; if (accountId == myAccountId) { return; } var message = json.webhook_event.body; var roomId = json.webhook_event.room_id; postChatwork(roomId, message); } catch(ex) { SpreadsheetApp.openById(spreadsheetId).getSheetByName('log').getRange(1, 1).setValue('error'); } } function postChatwork (roomId, message) { var payload = { "body" : message }; var headers = { "X-ChatWorkToken": chatworkToken }; var options = { "method" : "post", "payload" : payload, "headers" : headers }; return UrlFetchApp.fetch("https://api.chatwork.com/v2/rooms/" + roomId + "/messages", options); }
このスクリプトで***********
となっているところが3箇所あるので、そちらは人によって異なるので修正する必要があります。
spreadsheetId
こちらはログを出力する用にスプレッドシートを使っています。そのスプレッドシートのidをここに入力します。
logというシートを指定して出力しているため、空のスプレッドシートのプロジェクトを作成して、log
というシートを作成する必要があります。
chatworkToken
オウム返しをするときの投稿するときに必要にります。 使っているチャットワークアカウントのトークンをここに入力します。
myAccountId
自分自身のチャットワークアカウントのidをここに入力します。
オウム返しで投稿した内容もwebhookで飛んできてしまって、オウム返しのオウム返しを投稿して無限ループになってしまうのを防ぐためです。もし、無限ループになったら急いでdoPost()の処理の直後にreturnを入れたりして、スクリプトを止めてあげましょう。
確認の方法ですが、自分宛てのToの[To:*****]
の*****にあたるものになります。
サーバの公開(GASの公開設定)
プログラムが完成したら、外部から叩ける用に公開する必要がります。 GASの上のメニューの「公開」→「ウェブアプリケーションとして導入...」を選択
以下の項目は間違えやすいので気をつけましょう。
項目 | 内容 |
---|---|
次のユーザとしてアプリケーションを実行 | 自分(****@gmail.com) |
アプリケーションにアクセスできるユーザ | 全員(匿名ユーザーを含む) |
これで、公開します。公開が完了すると、URLが表示されるので、それをコピーしましょう。
チャットワークのWebhookの設定
チャットワークの管理画面にログインします。 以下から設定画面に遷移できるかと思います。
Webhookのタブを選択して、新規作成ボタンをクリックします。
項目 | 内容 |
---|---|
Webhook名 | わかりやすいように名前をつけてあげる。なんでも大丈夫 |
Webhook URL | GASの公開したときに表示されたURLをここに入力する |
イベント | 今回はルームイベント を選択してみる。 |
メッセージ作成 | ルームイベントを選択すると表示される項目。チェックを入れておく |
メッセージ更新 | ルームイベントを選択すると表示される項目。チェックを入れておく |
ルームID | ルームイベントを選択すると表示される項目。Botの部屋のURLのhttps://www.chatwork.com/#!rid***** の***** の部分 |
このような内容を入力して、作成ボタンを押してあげましょう。
実際に動かしてみる
これで完成ではあります。エラーにならなければオウム返しをしてくれるはずです。
また、スプレッドシートにもログがちゃんと吐かれるはずです。
さいごに
このようにして、無料でチャットワークのWebhookが簡単に扱うことができました! GASは無料なので便利ですね!