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
関連記事
-
-
「JAWS-UG大阪 第18回勉強会 サーバーレス」の運営をしました
JAWS-UG大阪 第18回勉強会 サーバーレスを開催、運営しました〜。 事の発 …
-
-
Alexaで作る受付システム(Alexa Day 2019でのブログ)
ランチタイムセッション3本目はウフルさん。 たくさんのLEDをコントロールされて …
-
-
JAWS-UG Osaka 第14回勉強会 「DIY」 〜自社内システムを作る側からの物申す〜に参加、運営、登壇しました
先日、JAWS-UG Osaka 第14回勉強会 「DIY」 〜自社内システムを …
-
-
「Serverless Days Tokyo 2023 Keynote」を見ました
2023/9/23にServerless Days Tokyo 2023に参加し …
-
-
「四国クラウドお遍路 2021 -コロナ後の地方創生-」に参加しました
徳島サテライト会場 今年の四国クラウドお遍路 2021 -コロナ後の地方創生-は …
-
-
Alexa Day2018で「Alexa連携デバイスクラウドを構成するAWS ソリューション」を聞きました
以下は、思ったことや気になったことをメモしていますので、必ずしも登壇者の発表内容 …
-
-
実録 JAWS DAYS 2016 ~スタッフ,RoadTrip,懇親会LTで参加しまして~
2016/3/12 参加してまいりましたJAWSDAYS2016 スタッフとして …
-
-
「四国クラウドお遍路 2023 – 四国の外のモノサシを知ってみよう-」に参加しました
2023/9/16に愛媛大学で開催された四国クラウドお遍路 2023 ̵ …
-
-
Alexa Day 2018 で「金融機関向けAmazon Echo/Alexaへの取り組み事例紹介」を聞きました
Alexa Day 2018 で「金融機関向けAmazon Echo/Alexa …
-
-
IPython Notebookで梅田のラーメン屋さんの統計情報を抽出するというハンズオンに行ってきました
IPython Notebookで梅田のラーメン屋さんの情報をWebスクレイピン …