TwilioとSlackを使用してSMSメッセージをSlackチャンネルに転送する

採用系プロダクトを提供している企業の社内もろもろを担当する予定のakibinです。

最近、事あるごとに腕立をしています。理由は筋肉が付くと酒が強くなるというまことしやかな情報を信じているから。

# やったこと
SMSメッセージをSlackチャンネルに転送して複数メンバーで共有できないかと思い調べたところこの方法にたどり着きました。

本件の作業手順は以下の感じです。

1. Twilioアカウント登録
1. SMS用電話番号を取得
1. SlackチャンネルでIncoming Webhook設定。Webhook URLを取得
1. Twilio StudioでSMSをSlackへ転送するフローを作成
1. Twilio Studioフローと電話番号を紐付ける


# 作業
## Twilioアカウント登録
[twilio](https://www.twilio.com/ja/)の[無料サインアップ]からアカウント登録。
クレジットカード情報など登録しなくてもアカウント登録可能でした。
![スクリーンショット 2022-01-12 18.15.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/da95f411-4cd8-28db-8a1e-4d9e08928a2f.png)

## SMS用電話番号を取得
ConsoleからDevelopタブ > Phone Numbers > Manage > Active numbersを開き、Buy a numberをクリック
![スクリーンショット 2022-01-12 18.19.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/f3b4847a-9780-bf29-1d70-67891c05449c.png)

次に必ずCountryでUnited Statesを選択してください。日本の電話番号だとSMS不可。
![スクリーンショット 2022-01-12 18.20.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/294ee599-7dc6-281e-55b0-bff7d9125e35.png)

検出された適当な番号をbuyします。費用が表示されていますが、トライアウト期間は料金発生しません。
![スクリーンショット 2022-01-12 18.27.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/3513dc2c-f625-c295-76cc-b1701f657c1a.png)

Active Numbersに購入した番号が表示されます。この時点でSMSがこの番号に送信可能です。
![スクリーンショット 2022-01-12 18.21.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/8b38679d-69a8-41d7-f04d-f23820b16f2e.png)

## SlackチャンネルでIncoming Webhook設定。Webhook URLを取得
SMS受信したらTwilioからHTTP POSTが実施され、SlackチャンネルにSMSメッセージが転送されることになります。なので、該当チャンネルにIncoming Webhookを設定してPOSTするURLを取得します。
手順については[Slack での Incoming Webhook の利用](https://slack.com/intl/ja-jp/help/articles/115005265063-Slack-%E3%81%A7%E3%81%AE-Incoming-Webhook-%E3%81%AE%E5%88%A9%E7%94%A8)を参照してください。

最終的に以下の用な感じでURLが取得できます。
![スクリーンショット 2022-01-12 18.33.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/be968e43-c38d-ce0c-1032-a29829f43d5c.png)

## Twilio StudioでSMSをSlackへ転送するフローを作成
ConsoleからDevelopタブ > Studio > Overviewを開き、Cleate new Flow(+)をクリック
![スクリーンショット 2022-01-12 18.36.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/be0e0199-ee2d-dab8-032c-9f66d5ff701f.png)

任意のFlow Nameを入れてNext
![スクリーンショット 2022-01-12 18.38.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/2b9474ad-1fca-3804-8596-37497f265002.png)

デフォルトのStart from scratchが選択された状態でNext
![スクリーンショット 2022-01-12 18.38.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/c6abf56b-c3ea-dbcf-6b05-6e092f782095.png)

諸々設定画面が表示されます。
WIDGET LIBRARYからMake HTTP RequestをドラッグしてTrigger下辺りに配置
![スクリーンショット 2022-01-12 18.39.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/ef30d9c1-5f1d-07ff-7bd2-abeed4436ffb.png)

配置されたWIDGETとIncoming Messageをドラッグしてピーっと紐付けます。
![スクリーンショット 2022-01-12 18.41.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/ddc70b0b-dfd4-4129-999f-1fc22fad6ba5.png)

WIDGETに各設定をしていきます。設定したらSaveをクリック。

* WIDGET NAME : 任意の名前
* REQUEST METHOD : `POST`
* REQUEST URL : Incoming WebHooksで取得したWebhook URL
* CONTENT TYPE　 : `Application/JSON`
* REQUEST BPDY : `{"text": "{{trigger.message.Body}}"}`

![スクリーンショット 2022-01-12 18.43.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/0a94b50a-139a-58f0-1084-3377699dd536.png)

最後にPublishをクリックしてパラメータを保存します。
![スクリーンショット 2022-01-12 18.44.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/f45df9b9-80a4-dd70-b50f-b021063a524c.png)

## Twilio Studioフローと電話番号を紐付ける
ConsoleからDevelopタブ > Phone Numbers > Manage > Active numbersを開き、先程取得した電話番号をクリック
![スクリーンショット 2022-01-12 19.13.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/b7db7026-39d1-af59-6dbe-6af4cc8512dd.png)

下の方のMessagingまでスクロールして、各設定値を入れる

* CONFIGURE WITH OTHER HANDLERS : `Webhooks, TwiML Bins, Functions, Studio Flow, Proxy Service`
* A MESSAGE COMES IN : 先程作成したStudio Flowを選択
* PRIMARY HANDLER FAILS : `Webhook`,`HTTP POST`
![スクリーンショット 2022-01-12 19.14.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/e9081999-c630-09b3-0801-78eb72a45e7e.png)

Saveをクリック。これで設定完了です！
![スクリーンショット 2022-01-12 19.14.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504009/92987ec4-fecc-7650-63fa-50986cc6849d.png)

# 資料参考
https://www.twilio.com/docs/studio/tutorials/how-to-post-sms-to-slack

# こちらもチェックお願いします！
[Twitterアカウント](https://twitter.com/akibinmusic)
[Youtubeチャンネル](https://www.youtube.com/channel/UC-JOpwEnJn3gCrUA4NdCYgg)