kintone x Power Automate X Twilio でSMSバッチ処理作ってみた

この記事は、[Twilioアドベントカレンダー2020](https://qiita.com/advent-calendar/2020/twilio)、12月14日担当分になります。
(お詫び)当初、盛大にTwilioの綴りを間違えておりました。ひでー。

#はじめに
こんにちは、「元」kintoneエバの新妻です。Twilioエバの高橋さんが泣いているのにほだされて、Twilioアドベントカレンダーにうっかり手をあげてしまいました（半笑）。
せっかくなので、あまり他の人がやってなさそうなネタを。MicrosoftさんのPower AutomateとTwilioとkintoneを連携してSMSのバッチ処理をしてみたいと思います。
とはいうものの、ハンズオンでTwilioちょっと触ったことがある程度の人だったので、「おいおい、そこ感心するとこちゃうで」みたいな突っ込みはなしで、温かい目でご覧下さい。

#Twilio側の準備から
今回のように、Twilioとサードパーティのサービスを連携するには、Twilio側の環境に一定の条件が必要になるようです。

>
You'll need 3 things to use Twilio with most third party applications:
>
+ Account SID and Auth Token
+ Upgraded Twilio account
+ Twilio phone number

ここは素直に、Twilioアカウントをアップグレードして、SMS用の電話番号を購入しました。

わかりやすいように、「Paxi Bank Global」という架空の名前をつけておきます。
![スクリーンショット 2020-12-14 16.28.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60483/62f4e6f9-0104-be99-a7f6-e8e9a7424bef.png)

アカウントSIDとトークンをメモって準備はOK。

#PowerAutomateのTwilioコネクター
のっけから脱力ですが、Power AutomateとTwilioの連携自体はむちゃくちゃ簡単です。なんのことはない、公式のコネクターやサンプルのフローも豊富に用意されていました。

![スクリーンショット 2020-12-14 16.31.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60483/9e3ae6d2-ef26-3fdd-409b-cfe4a3ccf4e4.png)


Power Automateの環境に、Twilioの接続情報を追加します。
ここで、アカウントIDとアクセストークンを入れれば、接続自体はすぐに終わります。

![スクリーンショット 2020-12-14 16.33.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60483/eb23997d-f665-87e8-f8ba-9a37c1ba6c31.png)


#kintoneアプリのレコードをバッチで取り出す
kintoneのアプリ(データベースのようなもの）に入っているレコードをバッチで取り出す部分から作っていきます。kintone用にもPower Automate用コネクターがありますが、残念ながら一定の条件の複数レコードをまとめて持ってくる機能はありません。が、ここ数年来のネタで使っているカスタムコネクターがまだ生きていたので（！？）これを使うことにしました。カスタムコネクターの内容については、[過去の記事](https://qiita.com/mniizuma/items/a4b0e50faa0c53dd828c)を参考にしてください。
このアプリは2つのフィールドがありますので、片方を発信先番号、もう片方を送りたいメッセージとしておきます。
抽出してくる条件は、なんでもいいのですが簡単に更新日が今日のレコードとしています。

![スクリーンショット 2020-12-14 16.35.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60483/f7762316-c775-abef-da87-41c9b2b77533.png)



#Twilioのメッセージ送信を使う
レコードが取り出せたら、あとはTwilioコネクターのメッセージ送信を使ってSMSを送る部分を作っていきます。といっても、ここはすごく簡単です。指定するのは、発信元番号、発信先番号、メッセージの3つです。
発信元番号は、あらかじめ用意しておいた番号がドロップダウンで選択できるはずです。
あとは、発信先番号とメッセージに入れたい内容として、kintoneのレコードのフィールドをそれぞれ入れてみました。

![スクリーンショット 2020-12-14 16.35.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60483/7669df2e-eb79-024b-eef1-c741f21ea950.png)

フローの全体像は、こんな感じになりました。
![スクリーンショット 2020-12-14 16.36.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60483/7feb1ab9-7b63-1362-bb33-0abd2316ef8f.png)


#フローをテストする
できたフローをさっそく試してみます。今回は夜間バッチを想定しているので、フロー上は夜の23:30に動く設定にしています。ただ、それまで待っているのも困りますよね。Power Automateには、トリガーの種類とは関係なく実行することができる「テスト」機能があります。
実際に走らせて、APIの入出力のログなどの詳細を全部追いかけることができるので、はじめて試すAPIがあるときには、とても便利です。

最初、フローの処理を間違えていて、Twilioからはエラーが返ってきてしまいました。パラメータをわたすところをミスっていたようで、発信先番号が抜けていたようです。

![スクリーンショット 2020-12-14 16.44.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60483/73b3aed4-3936-1c85-76ef-cb6ade28a49c.png)


見直して修正すると、次はうまくいったようです。
ちゃんとテスト先の手元のスマホにメッセージが飛んできました。
そのまま放置しておいたら、ちゃんと夜の23：30にも実行されたようです。

![IMG_BFCB530B3D8E-1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60483/2bdf9f37-6c57-45c0-fbe9-7667974e5884.jpeg)


#まとめ
今回は、kintoneのアプリを使ってTwilioとPower Automateを連携したバッチ処理を紹介してみました。SMSで複数の相手に自動的に通知をしたい処理の方法は、いろいろあるかと思いますが、公式コネクターがあると、やはり便利ですね。
元になる番号の情報をとってくる先は、kintone以外にもGoogleスプレッドシートでもOne Drive内のExcelファイルでも、同じようにできそうです。というか、たぶんもっと簡単なので(^_^;)、やってみたらいいんじゃないでしょうか。

なお、スクショ上にトークンが見えていますが、いずれ消す予定です。が、よい子はいたずらをしないようにお願いしますね。