ChatWork→Slack連携: ChatWorkの新着通知をSlackに投稿する
とあるプロジェクトでChatWorkを使うことになったのですが、ChatWorkは普段使っておらず、通知に気づけません。
それだと困るので、ZapierでSlackに流すように設定しました。
標準のZAPでは連携できなかったので、設定方法をメモしておきます。
Zapierとは
IFTTTのビジネス版みたいのです。
クラウドサービスをつなぐものです。
こんなことができます。
- Salesforceで新規リードがあったらSlackに通知したり
- Google Driveの更新をSlackに通知したり
- Wufooの問い合わせフォームに入力されたらMailChimpでメール送ったり
- Facebookに投稿したら同内容をChatterに投稿したり
ChatWork -> Slack連携ZAPの作成
では、作っていきましょう。
Triggerの作成
[Make a ZAP]から[Code by Zapier]を選択し、どちらでもいいのですが、今回は[Run javascript]を選択します。
[Edit Options]で以下のコードを入力します。
roomIdやChatWorkTokenは適切なものに変更してください。
var roomId = '9999'; var headers = {'X-ChatWorkToken':'99999999999999XXXXXXXXXXXXXXX'}; fetch('https://api.chatwork.com/v1/rooms/' + roomId + '/messages', { headers: headers }) .then(function(res) { if (res.status == 204) { return []; } return res.json(); }).then(function(json) { console.log(json); callback(null, json); }).catch(function(error) { console.log(error); callback(error); });
指示通りに先に進むと、ちゃんと結果が取得できていることが確認できます。
なお、ChatWorkの/<room_id>/messages
APIは前回取得分からの差分を取得するので、何度も試していると取得できなくなります。データが取得できないとActionのメッセージテンプレートが作成できないので、ChatWorkに新規投稿をするか、force=1
というパラメータを一時的につけて試すとよいです。
Actionの作成
Actionは[Slack]を選び、今回は私はプライベートちゃんねるに投稿したいので[Send Private Channel Message]を選択します。
[Edit Template]で以下のように編集します。
[Message Text]は下図を参考に、それ以外は適切に設定してください。
https://www.chatwork.com/#!rid9999-
の9999
はChatWorkのルームIDです。
- Channel: 投稿先のチャンネル名
- Message Text: 下図参照
- Bot Name: ChatWork (なんでもいいです)
- Bot Icon Emoji:
:fire:
(お好きなのを)
次の手順でテストをすると以下のようにSlackに投稿されます。
有効化
ZAPを[ON]にします。
ONにすると以下の画面になります。
案内の通り15分毎にChatWorkにAPI投げて新着をチェックして、Slackに通知してくれるようになります。
参考リンク
- チャットワークAPIドキュメント
- Code (Javascript) - Integration Help & Support - Zapier
- bitinn/node-fetch at 32b60634434a63865ea3f79edb33d17e40876c9f
- 作者: 松下雅和,小島泰洋,長瀬敦史,坂本卓巳
- 出版社/メーカー: 技術評論社
- 発売日: 2016/06/28
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る