ヤマムギ

growing hard days.

*

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を作ってみるハンズオン~ラッキーコンテンツ手順~に書いていますので、課金してもいいよ、って方はぜひお試しください。

目次

(1)LambdaからSlackへ通知する1

(2)LambdaからSlackへ通知する2

(3)Lambdaからkintoneへレコードを登録する

(4)Step Functionsで複数のLambdaを実行制御する

(5)LINEからの投稿へ返信と登録処理

(6)Twilioからの電話受付と登録処理 ←今ここ

(7)ラッキーコンテンツ


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第2版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - event, study , , , ,

ad

ad

  関連記事

「JAWS-UG京都 最新のAIを本気で学ぼう」に参加しました

前日 京都タワーの地下のフードホールで運営メンバーのみなさんとご飯食べてました。 …

「ChatGPTで開発する技術勉強会」に参加しました

ビヨンドさんの「ChatGPTで開発する技術勉強会」に参加しました。 ビアバッシ …

ゴールデンウィーク10日連続デモ解説勉強会にチャレンジします

これまでに執筆した書籍の関連デモを解説する30分の勉強会を4/29~5/8の10 …

Developers Summit 2024「LLMで切り拓く完全自動運転の道、エンジニアが創るクルマの未来」を見ました

チューリング株式会社 取締役CTO 青木 俊介さん 「ハンドルがない乗用車」の販 …

Alexa Day 2018で「Alexa Skill Contest」を聞きました

Alexa Day 2018のラストセッションは、「Alexa Skill Co …

ヤマムギvol.5 「BI ファーストステップ ~re:dash , PowerBI , Google Data Studio , Wave~」を開催しました

僭越ながら主催運営していますヤマムギの第5回目勉強会「BI ファーストステップ …

Java SE 7 Gold対策勉強をしながらメモ 2015/9/1

さて、9/26の試験を目指して久しぶりに試験勉強を始めます。 今月は非常に忙しい …

Java SE 7 Silver対策勉強をしながらメモ 2015/2/4

本日は継承をどっぷりと。 一気に詰め込んで正解だったかも。 いつものごとくマーク …

LINEとAWSとTwilioとkintoneでBOTを作ってみるハンズオン (2)LambdaからSlackへ通知する2

作る部分 この部分のLambdaを作成します。 手順1でSlackのIncomi …

Alexa Day 2018で「kokexaの話」を聞いてきました

スピーカーはサバワ坂本さん これは、私、山下の勝手な印象とか思い込みですが、坂本 …