LINEとAWSとTwilioとkintoneでBOTを作ってみるハンズオン (6) Twilioからの電話受付と登録処理
2017/08/17
目次
作るところ
電話がかかってきてTwilioで受け付けてStepFunctionsを起動するところを作ります。
これが最後です。
プログラムの解説
使うコードはGithub-yamamugi_handson_from_twilioにあります。
Lambda関数
- Twilioからリクエストされる[‘param’][‘Digits’]でどのボタンがプッシュされたかを判定します。
- 1が押されていない場合は再生音声に「申込を中止」を返します。
- 1が押された場合は電話番号をStepFunctionsに渡して再生音声に「受付完了」を返します。
API Gateway 統合リクエスト
- TwilioからのリクエストをJSON形式に変換します。
API Gateway 統合レスポンス
- Lambdaの実行結果をXMLに変換します。
Twiml
- 電話をかけてまず最初に流れる音声です。
- Gatherでキー選択として、アクションをAPI GatewayのURLを指定しています。
Lambda関数の作成
AWSマネジメントコンソールでLambdaを開いて、[関数の作成]をクリックします。
何も選択せず、[一から作成]をクリックします。
何も選択せず、[次へ]をクリックします。
名前 : from_twilio
説明 : ヤマムギハンズオン Twilioで押された番号に対して処理
ランタイム : Python 3.6
コードエントリタイプは「コードをインラインで編集」を選択して、
こちらのコードを貼り付けます。
環境変数
* STATE_MACHINE_ARN : StepFunctionsのステートマシーンのARN
* LOG_LEVEL : DEBUG(ログを減らしたい場合は ERRORかINFOを設定します)
[既存のロールを選択]でLINEとAWSとTwilioとkintoneでBOTを作ってみるハンズオン (5) LINEからの投稿へ返信と登録処理 で作成したロール lambda_step_functions を選択します。
必要ないとは思いますが、念のためタイムアウトを5分にしておきます。
[次へ]をクリックします。
[関数の作成]をクリックします。
API Gatewayの作成
LINEとAWSとTwilioとkintoneでBOTを作ってみるハンズオン (5) LINEからの投稿へ返信と登録処理 で作成したAPI Gatewayを選択します。
[アクション] – [リソースの作成]をクリックします。
リソース名を from_twilio にして[リソースの作成]をクリックします。
作成したリソースを選択して[メソッドの作成]をクリックします。
GET を選択して「✓」をします。
統合タイプ : Lambda関数
Lambdaリージョン : ap-northeast-1
Lambda関数 : from_twilio
[OK]をクリックします。
[統合リクエスト]をクリックします。
[本文マッピングテンプレート]を展開して、[Content-Type]に application/json を入力して「✓」をクリックします。
[はい、この統合を保護します]をクリックします。
上記を右ペインに貼り付けます。
(Githubのrawからコピーすると項目のダブルクォーテーションが除去されてこの後エラーになるのでご注意ください。)
[保存]をクリックした後、左上の[メソッドの実行]リンクからメソッドの設定画面に戻ります。
次に[統合レスポンス]を設定します。
[本文マッピングテンプレート]を展開して、Content-Typeにすでにある application/json を「-」をクリックして削除します。
[削除]をクリックします。
[マッピングテンプレートの追加]から、application/xml を入力して、右ペインにこのXMLコードを貼り付けてください。
[保存]をクリックして、左上の[メソッドの実行]リンクからメソッドの設定画面に戻ります。
次に[メソッドレスポンス]を設定します。
200のレスポンスを展開して、右下のコンテンツタイプから application/json を「x」で削除します。
[レスポンスモデルの追加]から、 application/xml , Empty を追加します。
左上の[メソッドの実行]リンクからメソッドの設定画面に戻ります。
[アクション] – [APIのデプロイ]を選択します。
LINEとAWSとTwilioとkintoneでBOTを作ってみるハンズオン (5) LINEからの投稿へ返信と登録処理で作成したステージを選択します。
[ステージ]を選択してデプロイされたステージを展開します。
from_twilio – [GET]を選択して右ペインのURLを控えておきます。
Twilioの設定
Twilioコンソールにログインして #(電話番号)メニューで取得している電話番号をクリックします。
A CALL COMES INで[Webhook]を[Twiml]に変更します。
右の[+]をクリックします。
- FRIENDLY NAME : from_twilio
Twimlのコードをコピーして貼り付けます、
action = のURLはAPI GatewayのURLに変更します。
[Create]をクリックします。
[保存]をクリックします。
※一度作ったTwiml Binは右上のデバッグアイコンからRuntimeメニューが現れるのでそこから、Twiml Binsで修正出来ます。
電話をかけて試してみます
それではTwilioの電話番号にかけてみます。
トライアル環境では
「Twilioをご利用いただきありがとうござます。アップグレードいただきますとこのメッセージは削除されます。どれかキーをプッシュしてください。」
とメッセージが流れますので、なんでもいいのでキーをプッシュします。
その後設定した
「お電話ありがとうございます。キャンペーンにお申し込まれる場合は 1 とシャープを。お申し込まれない場合はそのままお電話をお切りください。」が流れますので、[1]と[#]をプッシュします。
Slackにメッセージが電話のアイコンで出力されて、リンクをクリックすると、kintoneに作成されたレコードが編集モードで開きます。
[コール]ボタンをクリックすると、登録された電話番号に、サラリーマン川柳スマートフォン編がコールされて、SMSが届きます。
この[コール]ボタンから呼ばれるAPIは課金対象となるので運営側で用意しています。
作り方はこちらのLINEとAWSとTwilioとkintoneでBOTを作ってみるハンズオン~ラッキーコンテンツ手順~に書いていますので、課金してもいいよ、って方はぜひお試しください。
目次
(4)Step Functionsで複数のLambdaを実行制御する
(6)Twilioからの電話受付と登録処理 ←今ここ
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
ヤマムギvol.15 AWS Codeサービスのデモをしました
ゴールデンウィーク10日連続朝30分のデモチャレンジ3日目です。 85名さんもの …
-
ActRoomの仕様を書いてみた
これはLow-Code/No-Code Advent Calendar 2018 …
-
Agile Japan 2015 大阪サテライト「アジャイル開発への架け橋」に行ってきました
Agile Japan 2015 大阪サテライトに行ってきました。 具体的な目的 …
-
「Kansai WordPress Meetup@大阪『サイトの作り方 3種おさらい&祝☆誕生20周年』」に参加しました
WordPress Meetupにはじめて参加しました。 WordPressの勉 …
-
JAWS FESTA 2017 Reverse X re:Birth
JAWS FESTA 2017 中四国 今年はブログタイトル「JAWS FEST …
-
「JAWS-UG佐賀 3年ぶり!re:Bootするよ!」に参加しました
全員自己紹介からスタートしました。 さくさくっとマイクをまわしてなんと10分まき …
-
「CXを推進するカスタマーサポート最前線<関西編>」に行きました
ウフルさん主催の「CXを推進するカスタマーサポート最前線<関西編>」に行ってきま …
-
「IoTの法律勉強会 第1回」に行ってきました
「IoTの法律勉強会 第1回」に行ってきました。 「関西のIoTを盛り上げよう」 …
-
「kintone Café 大阪 Vol.17 〜 kintoneと連携するスマホアプリを作ってみよう! 〜」会場スポンサー初体験!
kintone Café 大阪で弊社の会場を使ってもらいました。 この会社に来て …
-
「DevLOVE関西 ShareWisサービス開発の現場」に行ってきました
DevLOVE関西とは 「DevLOVE関西は素振りの場、現場は実践の場」 いつ …