LCLの開発者ブログ2017-11-04ChatWorkのWebhookをRuby/Railsで受信するRails先日、ChatworkがWebhookに対応されました。弊社では普段からChatworkを利用しており、早速検証しました。ChatWorkニュースリリースWebhook対応でできることChatworkがWebhookに対応したことで、「自分宛のメッセージ受信」「特定のルームでの発言」等をトリガーに、任意のURLを呼び出し処理を実行できるようになります。今までも、APIで特定のルームのメッセージをポーリングすることで、同様のことは実現できました。APIリクエスト数の「5分あたり100回」という制限もあり、リアルタイム性に課題がありました。公式ドキュメントに詳しく記載されていますが、簡単に紹介したいと思います。EC2上にRailsアプリケーションを構築し、Webhookから呼び出すコントローラを準備します。endendWebhookの作成Chatworkの設定画面で、Webhookメニューが新しく追加されており、そこからWebhookが作成できます。URLhttpsから始まる必要があります。イベントトリガーとなるイベントを設定します。アカウントに対するイベントか、特定のルームでのイベントのどちらかが選択できます。ルームイベントの場合は、自身が所属するルームIDしか入力できません。URLが呼び出され、Chatworkから以下のデータがPOSTされます。ポーリングとは異なり、即座に反応します。"update_time"=>0}}}これでWebhookの設定は完了です。あとはパラメータの内容を解析して、任意の処理を実装すれば、Chatworkでの投稿をトリガーとしたBotが作成できます。ありませんが、Webhookリクエストの送信元がChatworkであることを、確認する方法が用意されています。トークンをBASE64デコードしたバイト列を秘密鍵として、HMAC-SHA256アルゴリズムによりリクエストボディのダイジェスト値を得ますダイジェスト値をBASE64エンコードした文字列が、リクエストヘッダに付与されたsignature(X-ChatWorkWebhookSignatureヘッダの値)と一致することを確認します上記の説明だけでは少し複雑ですが、Ruby/Railsでは、以下のように実装しました。トークンは、Webhookの設定画面から確認できます。まとめWebhookを利用すると、簡単にリアルタイム性の高いやりとりが実現できることが確認できました。弊社では、既にChatworkとHubot連携してデプロイ等を行っていますが、Webhookを利用して更に自動化を進めていきたいと思います。techblog.lclco.comLCLではエンジニア・インターン募集中です。サービス開発はもちろん、開発プロセスの自動化も積極的に推進しています。興味がある方は、ご連絡お願い致します。q...2018-12-27JOBのログ出力をちょっと便利にした話Webエンジニアの横塚です。botの返事をカルーセル形式にしてみましたフロントエンドエンジニアの岡田です。1検索はてなブログをはじめよう!lcl-engineerさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。