ヤマムギ

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)ラッキーコンテンツ

@yamamanx

開発ベンダー5年、ユーザ企業システム部門通算9年、ITトレーナー1年目のSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。

このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。

また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。

 - event, study , , , ,

ad

ad

  関連記事

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

さて本日は少しだけですが、試験対策のメモをいつものごとくマークダウンで記載したの …

VUIがもたらすUXの不可避な流れを感じた日

「INEVITABLE ja night インターネットの次にくるもの 第 4 …

「【第2回】データ分析勉強会(尼崎Pythonの会#1)」に行ってきました

「【第2回】データ分析勉強会(尼崎Pythonの会#1)」に行ってきました。 略 …

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

本日は例外。 いつものごとくマークダウンで記載したのでそのままJetpack M …

「kintone Café 大阪 Vol.8 〜夏の事例祭り!〜」に行ってきました

「kintone Café 大阪 Vol.8 〜夏の事例祭り!〜」に行ってきまし …

走った!しゃべった!呑んだ!JAWS DAYS 2016 re:cap 〜JAWS-UG大阪&関西女子会 特別合同企画〜

先日のJAWS DAYS 2016 re:cap 〜JAWS-UG大阪&関西女子 …

「Talend ハンズオンセミナー」に行ってきました

Talendとは データの整備・統合 ビッグデータ対応 ストリーミングデータ ア …

「DevLOVE関西 ShareWisサービス開発の現場」に行ってきました

DevLOVE関西とは 「DevLOVE関西は素振りの場、現場は実践の場」 いつ …

TwilioJP-UG大阪 第二回 勉強会「Report SIGNAL2016」に行ってきました

TwilioJP-UG大阪 第二回 勉強会「Report SIGNAL2016」 …

「Amazon SageMaker|機械学習エンジニア向けセッション+体験ハンズオン」に行ってきました

残念ながらハンズオンまではいれませんでしたが、前半のSageMakerの解説を聞 …