OSSのチャット基盤であり、Dockerコンテナとして簡単に導入できるRocketChatを使った、コミュニケーション基盤の作り方を学ぶ連載。最終回は、RocketChatと他のアプリケーション(Subversion、Redmine、Jenkins、Zabbix、fluentdなど)と連携させる方法を紹介します。
本連載「OSSチャット基盤RocketChat入門」では、OSSのチャット基盤でありDockerで簡単に環境構築ができるRocketChatを使って、コミュニケーション基盤の作り方を学びます。
前回の「Docker Composeを使ったRocketChatのインストールと基本的な使い方」では、実際にRocketChatをDocker上へ構築し、接続やチャットなどの基本的な使い方について学びました。今回は、応用編としてRocketChatと他のアプリケーションとの連携方法を紹介します。
RocketChatのようなチャットツールと他のアプリケーションを連携させる方法はいくつかありますが、本稿では以下の2つの方法について、実装方法も含めて紹介します。
なお連携させる各アプリケーションは、すでに構築済みであることを前提とします。
まず、Webhookを使った連携方法を紹介します。Webhookにより他アプリケーションのデータをRocketChatへ送信し、チャンネルに投稿することを目指します。
Webhookとは、データの送受信に関する仕組みの1つです。HTTPリクエストのように、受信側から送信側へリクエストすることでデータを受信するのではなく、送信側がトリガーとなってデータを送る仕組みです。通信プロトコルはHTTPであり、受信側で「Webhook URL」というデータを受信するためのURLを作成します。送信側は、このWebhook URLに対して、通常はJSONもしくはXML形式でPOSTリクエストすることで、データ連携を行います。
HTTPのPOSTリクエストによりデータ連携を行うので、curlコマンドなどPOSTリクエストが実行できる環境があれば、送信側から受信側にデータを送信できます。このWebhookという仕組みを使って、他アプリケーション(送信側)からRocketChat(受信側)にデータを連携していきます。
Webhookにおいて、受信側であるRocketChatにはデータを受け取るためのWebhook URLを作成する必要があります。RocketChatには「Incoming Webhook」というAPIが提供されており、簡単にWebhook URLを作成できます。「Incoming Webhook」は、RocketChatの管理画面で「管理」→「サービス連携」→「新しいサービス連携」→「Incoming WebHook」から使用します。
ここで作成したWebhook URLに、curlコマンドなどでPOSTリクエストによるデータ送信を行います。以下、RocketChatへデータを送信する際のcurlコマンドの例を記載します(見やすいように改行しています)。なお、このcurlコマンドの例は「Incoming WebHook」の画面にも記載されているので、そちらも参考にしてください。
curl -X POST --data-urlencode 'payload={ "channel": "#channel", // 投稿チャンネル名 "username": "username", // 投稿ユーザー名 "text": "Example message", // 本文 "attachments": [{ // 添付情報 "title": "Rocket.Chat", // タイトル "title_link": "https://rocket.chat", // タイトルのリンク "text": "Rocket.Chat, the best open source chat", // 添付メッセージ "image_url": "https://rocket.chat/images/mockup.png", // 添付画像 "color": "#764FA5" // 色 } ] }' [Webhook URL(http://〜)] // Webhook URL
Copyright © ITmedia, Inc. All Rights Reserved.