Flexの Salesforce Integrationで、着信前にユーザー情報を表示させる

:::note alert
2023年5月1日を持ちまして、株式会社KDDIウェブコミュニケーションズのTwilioリセール事業が終了したため、本記事に記載されている内容は正確ではないことを予めご了承ください。
:::

# はじめに

みなさん、こんにちは。
KDDIウェブコミュニケーションズ、Twilioエバンジェリストの高橋です。

Twilio Flex の [Salesforce Integration](https://www.twilio.com/docs/flex/admin-guide/integrations/salesforce) を使うと、Salesforce の画面上に Twilio Flex の機能をプラグインのように表示できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86046/ce323ead-5fd4-5af2-d0bd-ebadfcf05fb1.png)

この方法は、Salesforce 連携を行うためのもっとも簡単な手法になりますが、いくつか課題もあります。
その一つが、着信した際には誰からかかってきたのかがわからず、応答してから始めて該当データが表示される点です。

そこで今回は、応答する前に Flex プラグイン上に SFDC 上のユーザー情報を表示させる方法について解説をします。
完成すると、以下のように応答前にユーザー情報が表示されるようになります。

![スクリーンショット 2022-05-01 16.51.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86046/e81aa953-54a7-f292-28c2-dfbe3da8ec19.png)

# 準備

このシナリオでは、Flex の着信時の Studio フロー内でSFDCに対して電話番号をキーにデータを検索するための Functions を作成します。該当取引先、及び取引先責任者が見つかった場合は、それらの名前を取得することで、TaskRouter に引き渡します。

そのため、今回の記事での作業は大きく2つとなります。

- SFDCを検索する Functions の作成
- 作成した Functions を呼び出す Studio フローの作成

では、一つずつやっていきましょう。

## SFDCを検索するFunctionsの作成

Salesforce の RestAPI を呼び出す方法はいくつかありますが、サーバー間連携を行うためにはOAuth2.0 JWTベアラーフローを用いることが推奨されているようです。
ただ、この方法では証明書の作成など、かなり手数が必要になります。そこで、以下のGitHub上に一連の手順を行うためのコードと解説を作成しておきましたので、こちらの README をよく読んで Functions を作成してください。

https://github.com/mobilebiz/sfdc-connection

## 作成したFunctionsを呼び出すStudioフローの作成

Functions ができてしまえば、あとはそれを Twilio Studio から呼び出して TaskRouter に渡していけばOKです。

フローはこんな感じになります。

![スクリーンショット 2022-05-01 17.20.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86046/b5608453-53e1-7ddd-c704-e30949a8c10c.png)

ではそれぞれのウィジェットを説明していきます。

### FindAccount

こちらは、`Run Function`ウィジェットで実現します。
先程作成した Functions を呼び出すのですが、呼び出す際に以下のパラメータを指定します。

![スクリーンショット 2022-05-01 17.27.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86046/3bfdfb02-e8c4-fa0d-2c9f-dc028a4e89f9.png)

### SendFlex

こちらは、`Send To Flex`ウィジェットで実現します。
ポイントは、`Attribute`の設定です。具体的には以下のように指定してください。

![スクリーンショット 2022-05-01 17.29.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86046/c1e20f30-b7ae-285e-bb09-f56b9d39b0ce.png)

ます、`name`パラメータとして、Functions の戻り値（body)を指定します。
ただ、このままですと応答した際に正しく取引先などが表示されません。これは、Salesforce Integration では、`name`値を使って検索をしてしまうからです。
そこで、`sfdcSearchString`パラメータに、電話番号（`trigger.call.From`）を指定して渡すことで、こちらを使って検索されるようになります。

あとは、フローをデプロイしてテストをしてみてください。
応答前にユーザー名が表示され、応答すると該当ユーザーの情報が表示されるようになればOKです。

# まとめ

今回は、Flexの Salesforce Integration を使ったときのTipsを書きました。
SFDCのRestAPIの呼び方がわかれば、裏側で色々と作業ができるはずなので、ぜひ参考にしてみてください。

---
### Twilio（トゥイリオ）とは

https://cloudapi.kddi-web.com
Twilio は音声通話、メッセージング（SMS /チャット）、ビデオなどの 様々なコミュニケーション手段をアプリケーションやビジネスへ容易に組み込むことのできるクラウド API サービスです。初期費用不要な従量課金制で、各種開発言語に対応しているため、多くのハッカソンイベントやスタートアップなどにも、ご利用いただいております。

Twilioに関するご相談などがございましたら、ぜひ毎週水曜日の午後に開催しております相談会をご利用ください。
[Twilio相談会（毎週水曜日）](https://cloudapi.kddi-web.com/contact/consultation?hsLang=ja-jp)

自己紹介|　
:--|:--
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86046/b51a8b88-abd5-ce5e-195a-de3564ba2ae6.png" height='200' width='150'/>|高橋克己（Katsumi Takahashi） 自称「<font color='red'>赤い芸人</font>」<br />グローバル・インターネット・ジャパン株式会社　代表取締役<br />株式会社KDDIウェブコミュニケーションズ　Twilio事業部エバンジェリスト<br /><br />2001年より大手通信事業者の法人サービスの教育に携わり、企業における電話のしくみや重要性を研究。2016年よりTwilio事業部にジョインし、Twilioを使ったスマートコミュニケーションの普及活動を精力的に行っている。<br />2015 Hall of Doers<br />2019 Twilio Champions