Integromat x TwilioでSMS通知する -Salesforceを例に-

SendGridサポートエンジニアの[キクタロー](https://twitter.com/kikutaro_)です。最近はノンコーディングツールにハマっていて、特に[Integromat](https://www.integromat.com/)を愛用しています。今日はTwilio Advent Calendarということで、IntegromatとTwilioの連携について書きたいと思います。

# Integromat

Integromatは様々なサービスとの連携をノンコーディングで簡単に実現できるものです。[Zapier](https://zapier.com/)や[IFTTT](https://ifttt.com/)、[Microsoft Flow](https://flow.microsoft.com/ja-jp/)と同じサービスですが、個人的にはIntegromatの直感的なUIとコネクタの多さ、柔軟性がとても気に入っています。

連携サービスの一覧はこちらです。
https://www.integromat.com/en/integrations
<img width="1344" alt="Integromatで連携できるサービス" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47737/3c04f371-d394-1172-55f6-63ffbd3e0b89.png">

# Twilio Studio

ノンコーディングといえば、Twilio自身にも[Twilio Studio](https://twilio.kddi-web.com/function/studio/)というビルダーがあります。直感的に処理を組み立てられるので、主にTwilio内で完結するものについてはこちらを使うのが良さそうです。LINEやFacebook Messangerなどのチャネルとも連携できるとのこと。
<img width="1405" alt="Twilio Studio" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47737/76ddf195-5b7e-f5a0-eee3-9564d8f9f79e.png">

# Integromat x Twilio

Integromatを使うのは主に外部サービスと連携するときで、Twilioのトリガーやイベントには次のようなものがあります。
<img width="690" alt="スクリーンショット 2019-12-01 21.22.11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47737/19fae166-5f98-60a2-d810-32ec460b093e.png">

コネクタの設定は簡単で、TwilioのSIDとAuth Tokenを設定するだけです。
<img width="820" alt="スクリーンショット 2019-12-01 10.04.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47737/9c2c985f-8a38-2d0a-018b-0eef84352c8c.png">

SIDとAuth Tokenは「一般的な設定」から取得できます。
<img width="1406" alt="スクリーンショット 2019-12-01 10.04.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47737/c49c33bd-2206-c19e-c93b-e227e9d258b3.png">

# Integromat x Twilio x Salesforce

今回はSalesforceのイベントを契機にTwilioを使ってSMS通知してみました。それならZapierやMicrosoft Flowでもいいのでは？と思われそうですが、Plemiumプランが必要だったり、特定のオブジェクトに対する操作しかできなかったり、それなりに制限があります。Integromatの場合はFreeプランで利用可能、かつ、カスタムオブジェクトを含めあらゆるオブジェクトの操作ができます。
<img width="709" alt="スクリーンショット 2019-12-01 22.06.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47737/78db58b7-8d94-8145-6837-23da19a086f6.png">

[Twilio for Salesforce](https://jp.twilio.com/docs/salesforce#get-started-with-twilio-for-salesforce)を使えば、Salesforceのプロセスビルダーから似たようなことも可能ですが、Integromatには「Make an API Call」というアクションがあり、SOQLを使った処理を組み込むことができるので、とても柔軟性が高いです。

<img width="775" alt="スクリーンショット 2019-12-01 21.52.34.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47737/1ce2a9fa-94df-fd7d-f856-2b2912ecc6b3.png">

コネクタの設定も簡単で、名前を決めて、あとは画面でログインするだけです。

<img width="847" alt="スクリーンショット 2019-12-01 10.20.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47737/bbf6ebd2-f705-d98b-f8c1-cb4cc694e17e.png">

<img width="1019" alt="スクリーンショット 2019-12-01 10.21.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47737/4bf77ba0-0238-b8c5-7d77-8d744a4fc96b.png">

以下の例は「Make an API Call」でOpportunityFieldHistoryというオブジェクトの情報を取るものです。URLの部分に「query」、Keyに「q」を指定してValueにSOQLを書きます。

<img width="790" alt="スクリーンショット 2019-12-01 21.39.08.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47737/f3e8ca76-7ddc-fb87-f344-b1a11eabd6e3.png">

設定したら「Run once」で実行できます。実行結果は右上の数字部分で確認できます。

<img width="765" alt="スクリーンショット 2019-12-01 23.53.04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47737/f93875a0-2411-8ca6-b244-a7302780c31b.png">

Salesforceの処理が設定できたので、これにTwilioのコネクタを繋げて、特定の電話番号を設定します。日本の場合「+81」の国番号をつけて、携帯など「090」で始まる場合には頭の0を取って「+8190xxxxxxxx」と設定します。Messageの部分は先ほど実行した結果を元にそのままパラメータを選ぶことができるので非常に簡単です。

<img width="693" alt="スクリーンショット 2019-12-01 23.49.20.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47737/2b188da6-ed62-3514-5138-94cc577457ab.png">

以上で設定は完了です。実行するとSalesforceからSOQLでオブジェクトを取得し、その結果の値がSMSで飛んできます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47737/f7216c22-dd9b-705a-45cd-0146b896be24.png" width=50%>

今回はTwilioによるSMS通知のみでしたが、もちろんSendGridによるメール通知も簡単にできますし、両方使ったマルチチャネルの通知設定も簡単です。ぜひIntegromatを使って色々なサービスとの連携をお試しください。