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からの電話受付と登録処理 ←今ここ
最後までお読みいただきましてありがとうございました!
【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。
【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。
【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。
【PR】 「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル」という本を書きました。

開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
ヤマムギvol.21 AWSのAPIリクエストに署名を追加するデモをしました
ゴールデンウィーク10日連続朝30分のデモチャレンジもいよいよ9日目です。 平日 …
-
-
VUI and IoT device(Alexa Day 2019でのブログ)
以下は、気になったことのメモとか感想を書いています。 登壇者、発表者、主催企業な …
-
-
GW勉強会を開催しました ~「AWSではじめるLinux入門ガイド」出版記念~
2020年ゴールデンウィークの5/2~5/6の午前に連続勉強会を開催しました。 …
-
-
「関ジャバ Java開発のためのDocker & てらださんせきらら in MS関西」に行ってきました
「関ジャバ Java開発のためのDocker & てらださんせきらら i …
-
-
「API Meetup Tokyo #29 ニッポンのAPIエコノミー最前線 〜国産APIが社会を変える〜」に参加しました
API Meetup Tokyoに来ました〜 会場はおしゃれなDEJIMAさんで …
-
-
「JAWS-UG Osaka 第22回勉強会 東西の中の人が語る!!! Microservices × Serverless On AWS」で運営と懇親会LTをしてきました
「JAWS-UG Osaka 第22回勉強会 東西の中の人が語る!!! Micr …
-
-
ヤマムギvol.11「AWSではじめるLinux入門ガイド」クイックスタート勉強会を開催しました
2020/7/15に、ヤマムギvol.11としまして、「AWSではじめるLinu …
-
-
ヤマムギ vol.10 (AWS)EC2モニタリングハンズオン 手順
このブログは2020/5/6に開催しました、「ヤマムギ vol.10 (AWS) …
-
-
IoTセミナー in おおさか「IoTで変わる!企業と働き方」に行ってきました
これからの企業と働き方 ~IoT・AIが創造する未来~ さくらインターネット株式 …
-
-
Innovation EGG 第6回 『IoT 今と未来』に参加してきました
雨を心配していましたが、曇り空ながら雨はやんで、180名強の方が参加されたInn …