ふと思った
Twilio使って、電話申し込みを受け付ける場合で「電話番号だけ取得すればいい」というケースってありますよね?
でまぁ、Twilioからサーバー経由でkintoneに着信情報を保存とかで出来るわけです。
最近だと、サーバーレスアーキテクチャという事で、
こんな構成がよくありますよね。
でも、この前、こんなサイトを見つけまして。。。
http://qiita.com/monamu/items/5fb59ac0d747b8db09c4
いやまぁ、「ズンドコキヨシ」のリンクを追っかけてて気づいたんですけどね(汗
あ、Kが大文字・・・
kintoneへAPIGatewayから直接POST出来るなら、Twilioからも出来るよね!
という事で試してみました。
実際にやってみよう
Integration Requestでは、こんな変換が必要
あと、受け取ったのを再マッピングで、こんな感じ
これを、こんな風にマッピング。
ここまでで、kintoneへ通話履歴を追加する事ができます。・・・たぶん、出来るはずです。。。
まだ足りない
このままだと、Twilio側はTwiMLが返ってこないので、いきなり回線が切れたり、アプリケーションエラーとか言われたりなど、使う上ではちょっと問題があります。
なので、TwiMLを返せるようにもう少し修正します。
kintoneにレコード追加した場合のレスポンスは、
{"id":"21","revision":"1"}
という感じなので、TwiMLには使えそうにありません。しかもjsonで返ってくるので、application/xmlに変換する必要もあります。
なので、こんな感じで、Integration Responseに追加します。
あと、Response Modelにもapplication/xmlを設定しておく必要があります。多分。
というか、この辺は理解が浅いので、間違ってるかもです。ちゃんとしたのがあれば教えてくだされー
でまぁ、ここまで出来れば、
・電話を受け付けて発信元番号を記録
ってのが、超サーバーレスで実現します。
こうして作ったアプリに、
みたいな、一括発信ボタンを配置すれば、無敵ですね!
このボタンの詳細は、プロ生を見た人だけが知っていたり。
http://pronama.azurewebsites.net/2016/05/28/pronama-41-at-matsuyama/
ちなみに、APIGatewayをもう1つ作れば、プッシュでアンケートも出来ますね。更には、kintoneからGETして喋らせるのも出来るはず。多分。
それを、Cloudformationで一括作成できるので、構築が楽で良い事づくめ!
Lambdaを使った構成で、これと同じなのを作ってはいるのですが、やはりやってみたくて手を出してしましました(^^;;
Lambdaで作ったほうが100倍速いとかいうツッコミは聞こえません(ぉ
Twilio x AWS x kintone の組み合わせは可能性無限大で楽しいですね。おすすめ。