2020.01.14

『Twilio』の紹介と、Salesforceから簡単にSMS送受信ができる『Twilio for Salesforce』の紹介

はじめに

はじめまして、テラスカイでエンジニアをしている上川と申します。
最近、Salesforceを導入されているお客様の中で、簡単にSMS送信を実現したいという要望をお聞きします。
テラスカイと言えば、Salesforceに強いというイメージですが、最近はTwilioというクラウドサービスも扱い始めました。
今回はそのTwilioを使用して簡単にSalesforceでSMS送信を実現する方法を紹介します。

『Twilio』とは?

Twilioについて、『電話やSMSをAPIで簡単に組み込めるサービス』と認識している方も多いのではないでしょうか?
もちろん、それらの機能もありますが、それだけではありません。
はじめに、Twilioについて紹介したいと思います。

Twilio社について

Twilio社は2008年にアメリカで生まれた会社です。
また、2019年1月にTwilio Japanが設立されています。

Twilioのサービス全体像

Twilioは、CPaaSと呼ばれるクラウドコミュニケーションプラットフォームを提供しています。
提供しているサービスはたくさんありますが具体的には、以下のようなものです。

・プログラマブルな次世代クラウドコンタクトセンター
(Twilio Flex)
・サーバーレス開発
(Twilio Function)
・認証サービス、人工知能、スキルベースルーティング、フロー
(Authy、AutoPilot、TaskRouter、Studio等)
・チャネルAPI
(電話、SMS、ビデオ、Chat、SNSメッセンジャー(LINE/WhatsApp/Facebook Messenger)、メール、Fax等)
・スーパーネットワーク
(グローバルネットワークと9地域27カ所のデータセンターをベースとしてネットワークが構築されており、180の国と地域で電話番号を利用でき、600億件のインタラクション数をさばいている)

一番下のスーパーネットワークを基盤として、各種チャネルAPIを提供しており、数行のコードで簡単にアプリに電話などの機能を組み込むことが出来ます。
Studioは受電時やメッセージ受信時に行う動作(IVRの設定等)をフローで視覚的に定義できます。
Twilio Functionはサーバレスの開発環境です。
これらを統合したクラウドコンタクトセンターがTwilio Flexです。
Twilio FlexはjavaScriptライブラリであるReactで柔軟に画面のカスタマイズが可能です。なので、タスクの種別やチャネルの種類によって、オペレータとって最適な画面を作成することが可能です。(ここについては後日詳細な記事を書きたいと思います。)

これらを組み合わせた例

例えば、顧客から受電した時にCRMから情報を取得し、オペレーターがその情報を参照できる例を考えてみます。
①まずTwilioで購入した電話番号に電話がかかってくるとします。
②Twilio電話番号に対して、受電時に特定のStudioを起動するように設定しておくことで、Studio内のフローに入ります。
③Studio内で定義したIVRで条件分岐し、Twilio Functionで外部APIを叩いてCRMから顧客情報を取得します。
④スキルベースルーティングで最適なオペレーターにタスクを振り分けます。
⑤タスクを受け取ったオペレータはTwilio Flex上で、取得した顧客情報とカスタマイズされた最適な画面を見ながら作業することが出来ます。

押さえておくべき3つの点

・Twilioは電話やSMSのAPIだけではなく、様々なコミュニケーションに関するソリューションを提供している。
・それらの部品を組み合わせることで自由で柔軟なカスタマイズが可能である。

・Twilioのソリューションを統合したTwilio Flexという柔軟にカスタマイズ可能なクラウドコンタクトセンターも提供されている。

『Twilio for Salesforce』とは?

さて、本題に入りましょう(笑)
『Twilio for Saleforce』とは、Salesforceに簡単にSMS等のTwilio機能を組み込める、Twilio社が提供しているAppExchangeです。

『Twilio for Salesforce』でできること

プロセスビルダーからSMS送信Twilio Studioを呼び出せる

キャンペーンに関連付けられたリードおよび連絡先に、カスタマイズされたSMSメッセージを送信

Salesforceレコードページから連絡先と1対1でメッセージ(Chat形式のコンポーネントを配置できる)

Twilio REST APIApexで呼び出せる(電話とかSMS送信とかを自由に組み込めるみたい)

チュートリアル

基本的には以下のドキュメントをみながら設定していくことで簡単に上記のことができます。

プロセスビルダーからSMS送信

流れ(チュートリアルの通りになります)

・Salesforceの組織にAppExchange「Twilio for Salesforce」をインストール
・Twilioアカウントの用意 sign up
・TwilioでUSの電話番号を購入 ※投稿時点で日本の電話番号はSMS未対応のため
・TwilioでAPIキーの作成
・Twilioで Messaging Serviceを作成し購入したTwilio電話番号を登録
・Salesforce側でTwilioの認証情報を登録
・プロセスビルダー作成
・レコードを更新してSMS送信検証

商談の金額が一定以上の時に、商談の所有者の電話番号にSMS送信するプロセスビルダー

商談のレコードの金額を変更

商談所有者の宛先にTwilio電話番号からSMSが送信されていることを確認

コーディング一切なしで、簡単にSMS送信を実現することが出来ました。

Salesforceレコードページから連絡先と1対1でメッセージ(Chat形式のコンポーネントを配置できる)

ページレイアウトに埋め込むだけで1対1のやりとりが可能でした。

ApexでSMSを送信してみる

テスト用に作成したVFページです。
SendSMSボタン押したら、SMSを送信します。

<apex:page controller="TestSendSMSTwilioFromApexPageController">
  <!-- Begin Default Content REMOVE THIS -->
  <h1>Congratulations</h1>
  This is your new Page<br/>
  sid:<apex:outputText value="{!sid}"></apex:outputText><br/>
  totalSegments:<apex:outputText value="{!totalSegments}"></apex:outputText><br/>
  media:<apex:outputText value="{!media}"></apex:outputText>
   <apex:form >

    <apex:commandButton action="{!sendSMS}" value="SendSMS" id="theButton"/>

   </apex:form>
  <!-- End Default Content REMOVE THIS -->
</apex:page>
Visualforce
public with sharing class TestSendSMSTwilioFromApexPageController {

    public String sid { get; set; }
    public Integer totalSegments { get; set; }
    public String media { get; set; }

    public PageReference sendSMS() {
        //Post Example
        TwilioSF.TwilioApiClient api = new TwilioSF.TwilioApiClient();
        api.addUrlPart('Accounts');
        api.addUrlPart('Account SIDをここに書く');
        api.addUrlPart('Messages.json');

        api.addParam('To','宛先の電話番号(+819012345678)');
        api.addParam('From','Twilioの電話番号');
        api.addParam('Body','Here is my message');
        TwilioSF.TwilioApiClientResponse response = api.doPost();

        //Example with key value pairs
        sid = response.getTwilioJsonParser().get('sid').getString();
        totalSegments = response.getTwilioJsonParser().get('num_segments').getInteger();

        //Example a key with object
        media = response.getTwilioJsonParser().get('subresource_uris').get('media').getString();

        return null;
    }
}
Apex Controller
送信結果です。

まとめ

Twilio for SalesforceをSalesforceに導入することで簡単に、SMSの送信などができることがわかりました。
SalesforceでSMSを送信したいときに、是非ご検討頂ければと思います。
個人的には、ApexでTwilioのRest APIを叩くところがSMS送信しかドキュメントが見当たらなかったので、電話など他の機能もドキュメントが是非欲しいところですね。
45 件
     
  • banner
  • banner

関連する記事