こんにちは。アプレッソ開発本部でサポートを担当している佐野です。
弊社開発本部では、最近注目されているチャットツール「Slack」をコミュニケーションツールとして導入しました。
これまで使っていたチャットツールでもコメントのやりとりはできましたが、バグ管理システムなど他のアプリケーションとの連携をするために API や連携機能が充実していることからSlack に変更することにしました。
Slack についていろいろと調べていたところ、Slack API はDataSpider Servista の REST アダプタから簡単に呼び出せることがわかりました。
また、Slack には無償でのSalesforceとの連携機能が用意されておりませんでした。(2015年9月現在)
そこで今回は、Salesforce アダプタと REST アダプタを使用して、Salesforce と Slack を連携するスクリプトを紹介します。
シナリオ
定期的にSalesforceの特定のオブジェクト(今回は商談)に更新があるかのチェックを行い、更新されている場合にSalesforceアダプタで更新された内容を取得してSlackにコメントをします。
連携のイメージ図です。
利用の事前準備
Slack APIを利用するためには事前にtokenを発行する必要があります。
以下のページからtokenを発行できます。
https://api.slack.com/web
tokenの有効期間は大丈夫?と思う方もいるかもしれませんが、有効期限が無制限と下のページに書いてありましたので大丈夫です。
https://api.slack.com/docs/oauth
次に、Slack APIでコメントをする場合、対象チャットルームのChannelIDが必要です。
今回はダイレクトメッセージのSlackbotにコメントをします。
ChannelIDは以下のように確認します。
まず対象のチャットルームから[Open messege archives]を選択します。
スクリプト
それでは、スクリプトをご紹介していきます。
全体はこんな感じです。
画像は作成したスクリプトに説明のために番号を書き加えたものです。
それぞれの処理について、説明していきます。
①変数mapperを使用して、現在時刻から5分前の時刻を取得します。
今回は更新があるかのチェックを行う間隔を5分としていて、Salesforceからこの5分間で 更新があったケースを取得するためです。
②Salesforceアダプタのデータ読み取り(クエリー)処理を使って、Salesforceから情報を取得します。
①で取得した時間以降に更新があったケースを取得します。
③繰り返し(データ件数)処理で取得した件数分繰り返します。
④変数mapperでSlackにコメントするためのメッセージを作成します。
以下作成するメッセージは以下の通りです。
・最終更新日時と作成日時が同じ場合
⇒商談:商談名 が作成されました。
・最終更新日時と作成日時が違う場合
⇒商談:商談名 が更新されました。
⑤RESTアダプタのGET実行処理を使用してSlack APIにアクセスしてコメントします。
今回はスクリプト変数で指定していますが、それぞれ以下を設定します。
token:事前準備で取得したtoken
channel:事前準備で取得したChannelID
text:コメントする内容
⑥⑤のコメントに失敗した場合に同じ内容で再実行します。
Slack APIは1秒に1回という制限があるため、その制限に引っかかりエラーになった場合には1秒待機してから再実行します。
スクリプトはこんな感じです。
実際の連携処理
それでは実際にSalesforceで更新をしてみてSlackに連携されるか見ていきます。
まずSalesforceで新しく商談を作成します。
そして少し待つと、作成された商談の情報がSlackにコメントされました!
次に商談を更新します。
少し待つと、商談が更新された情報がSlackにコメントされました!
「テスト商談_更新」のリンクを開くとSalesforceの商談情報ページが開き、詳細情報を確認することができます。
終わりに
DataSpider ServistaにはSlackアダプタはありませんが、今回ご紹介したようにRESTアダプタを使用することで簡単にSlackのAPIをコールすることができます。
ぜひSlackをご使用の皆様は、RESTアダプタを使った連携を試してみてください!