Salesforceから簡単にSMS送信等ができるTwilio for Salesforceを試してみた

#Twilio for Salesforceでできること
- プロセスビルダーからSMS送信やTwilio Studioを呼び出せる

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

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

- Twilio REST APIをApexで呼び出せる（電話とかSMS送信とかを自由に組み込めるみたい）

#チュートリアル
基本的には以下のドキュメントをみながら設定していくことで簡単に上記のことができる。
[Twilio for Salesforce公式ドキュメント](https://jp.twilio.com/docs/salesforce#get-started-with-twilio-for-salesforce)

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

###流れ(全部チュートリアルに書いてあります)
- Salesforceの組織にAppExchange「[Twilio for Salesforce](https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3A00000EtEuBUAV)」をインストール
- Twilioアカウントの用意 [sign up](https://jp.twilio.com/try-twilio)
- TwilioでUSの電話番号を購入　※投稿時点で日本の電話番号はSMS未対応のため
- Twilioで Messaging Serviceを作成し購入したTwilio電話番号を登録
- Salesforce側でTwilioの認証を行う
- プロセスビルダー作成
- レコードを更新してSMS送信検証

###商談の金額が一定以上の時に、商談の所有者の電話番号にSMS送信するプロセスビルダー
![スクリーンショット 2019-10-03 22.36.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/337592/68faf882-e104-f8c4-4584-fa481faf9f94.png)

###商談のレコード
この金額を変えてみる
![スクリーンショット 2019-10-03 22.43.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/337592/054024c6-b73c-cbab-626e-f587bafe164f.png)

###商談所有者の宛先にTwilio電話番号からSMSが送信されていることを確認
<img width="350" alt="スクリーンショット 2019-10-03 22.50.58.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/337592/97ebf01a-23ec-10f8-9cb4-c7bc1a4d20ba.png">

かなり簡単にできましたね。

##Salesforceレコードページから連絡先と1対1でメッセージ（Chat形式のコンポーネントを配置できる）
ページレイアウトに埋め込むだけでこんなこともできるみたいですね。
![スクリーンショット 2019-10-03 22.55.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/337592/2e519e0e-bf3a-1fb9-6c8a-2d9d751db9b1.png)

##ApexでSMSを送信してみる
テスト用VFページ
SendSMSボタン押したらSMSを送信
![スクリーンショット 2019-10-03 23.10.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/337592/9f2f08a9-f519-1f7a-4288-9ebcc843d329.png)

Visualforce

```
<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>
```

Apex Controller

```
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;
    }


}

```

送信結果
![Inkedsid_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/337592/b5ba2d16-58e2-929c-a7f3-69e5c95abfa5.jpeg)



##まとめ
Twilio for SalesforceをSalesforceに導入することで結構簡単に、SMSの送信などができることがわかりました。
ApexでTwilioのRest APIを叩くところがSMS送信しかドキュメントが見当たらなかったので、電話など他の機能もドキュメントが欲しいですね。。