LINEとAWSとTwilioとkintoneでBOTを作ってみるハンズオン~ラッキーコンテンツ手順~
2017/08/18
LINEとAWSとTwilioとkintoneでBOTを作ってみるハンズオンで一通り終わって時間が余ったた方、
かつ、有料課金してもいいよっていう方向けのラッキーコンテンツの手順です。
目次
作る部分
APIを呼出して、電話で川柳を読んで、SMSで広告を送る部分です。
API Gatewayで受け取ったリクエスト(電話番号)へLambdaがPollyを使って生成したMP3を電話音声としてTwilioを使用して流します。
同時に同じ番号へSMSも送信します。
ハンズオン本編では有料課金範囲になるので運営で用意したAPIを呼んでもらっていましたが、これを自環境で作るための手順を以下に記載します。
課金の内容(2017年8月現在)
電話番号
SMSの送信が必要なためUSの番号を取得します。
月額150円です。
電話発信料金
1コール1分あたり16.2円です。
本プログラムでは10秒程度ですので1コール16.2円です。
SMS発信料金
キャリアによって異なりますが、1通あたり 8円~9.6円です。
Twilioのアカウントアップグレード
まず、無料利用アカウントの場合は、Twilioのアカウントのアップグレードを行います
Twilioダッシュボードにログインして右上の[UPGRADE]をクリックします。
クレジットカードの情報を入力して、ポイントを追加してオートチャージの有無を設定して、アカウントをアップグレードします。
SMSが使える番号の購入
「#」電話番号をクリックして、電話番号ダッシュボードで「+」の「番号を購入」をクリックします。
国 で「United States」を選択して、「音声通話」、「SMS」、「MMS」をチェックして[検索]をクリックします。
検索結果から電話番号を選んで[購入]をクリックします。
プログラムのダウンロード
Github-yamamanx-polly-twilio-callにあります。
こちらのダウンロードリンクからダウンロードしてください。
S3バケットの作成
Amazon Pollyがテキストから音声に変換したMP3ファイルとTwilioに指示を出すためのTwimlを格納するS3バケットを作成します。
Twilioがアクセスする必要があるので、静的ホスティングを有効にしてどこからでもアクセス出来るようにします。
既存のバケットを使用する場合はどこからアクセスされても問題のないBucketを使用してください。
ここではバケットを新たに作成する手順を記載します。
S3マネジメントコンソールで[バケットを作成する]をクリックします。
バケット名とリージョンを設定します。
バケットが出来たら[プロパティ]-[Static website hosting]を設定します。
有効にしてインデックスドキュメントなどを一応設定しておきます。
次に[アクセス権限]-[バケットポリシー]を設定します。
バケットポリシーの例です。
Resourceのbucket_nameをそれぞれのバケット名で書き換えてください。
Lambda実行用のIAMロールの作成
Lambdaを実行するロールに対して、S3へput objectする権限と、PollyでSynthesizeSpeech出来る権限を付与する必要があります。
ポリシーの内容を分かりやすくするためにPolicy Generatorを使用しています。
S3にMP3オブジェクトをPUTするポリシーの作成
IAMマネジメントコンソールで[ポリシー]-[ポリシーの作成]をクリックします。
Policy Generatorを使用します。
効果 : 許可
AWSサービス : Amazon S3
アクション : PutObject
ARN : S3バケットを指定(arn:aws:s3:::bucket_name/*)
[ステートメントを追加]をクリックします。
こうなります。
こうなります。
名前を s3-put-object-bucketname にします。
Policy Generatorを使わなくても最終的にはこのJSONが書ければそれでOKです。
Pollyでシンセサイズするポリシーの作成
テキストをMP3に変換するSynthesizeSpeechを実行するためのポリシーです。
IAMマネジメントコンソールで[ポリシー]-[ポリシーの作成]をクリックします。
Policy Generatorを使用します。
効果 : 許可
AWSサービス : Amazon Polly
アクション : SynthesizeSpeech
ARN : *
こうなります。
そしてこうなります。
名前を polly-synthesize-speech にします。
こちらもPolicy Generatorを使わなくても最終的にはこのJSONが書ければそれでOKです。
LambdaからCloudWatchにログを作るポリシーの作成
LambdaがCloudWatchにログを出力を出来るようポリシーを作成します。
IAMマネジメントコンソールで[ポリシー]-[ポリシーの作成]をクリックします。
Policy Generatorを使用します。
効果 : 許可
AWSサービス : AWS CloudWatch Logs
アクション : CreateLogGroup , CreateLogStream , PutLogEvents
ARN : arn:aws:logs:::*
こうなって
こうなります。
名前を lambda-put-log にします。
こちらもPolicy Generatorを使わなくても最終的にはこのJSONが書ければそれでOKです。
IAMロールの作成
[ロール] – [新しいロールの作成]をクリックします。
ロールタイプは「AWS Lambda」を選択します。
先ほど作成した3つのポリシーを選択します。
* s3-put-object-bucketname
* polly-synthesize-speech
* lambda-put-log
ロール名に「lambda-polly-hands-on」と入力します。
作成したロールの[アクセス許可]タブで3つのポリシーがアタッチされていることを確認します。
Lambda関数の作成
マネジメントコンソールでLambdaを開いて、[関数の作成]をクリックします。
何も選択せず、[一から作成]をクリックします。
何も選択せず、[次へ]をクリックします。
名前 : polly_twilio_call(任意の名前)
説明 : 電話番号をパラメータで渡すと音声とSMSで案内をするサンプル(任意の説明)
ランタイム : Python 3.6
コードエントリタイプで「.zipファイルをアップロード」を選択して、ダウンロードしているコードのzipファイルをアップロードします。
環境変数を設定します。
変数名 | 設定値 |
---|---|
LOGGER_LEVEL | ログレベル INFOにする |
BUCKET_NAME | Amazon Pollyが生成するMP3ファイルを格納するS3バケット名 |
BUCKET_REGION | ap-northeast-1など S3バケットがあるリージョン名 |
VOICE_ID | Amazon PollyのボイスID 日本語なので Mizukiを設定する |
POLLY_REGION | Amazon Pollyのリージョン名 us-east-1 |
TWILIO_ACCOUNT_SID | TwilioのアカウントSID |
TWILIO_AUTH_TOKEN | Twilioのトークン |
TWILIO_FROM_NUMBER | Twilioの発信元電話番号 |
Twiloの情報はTwilioにログインして、プログラマブルVoiceダッシュボードの[Show API Credentials]から確認します。
ハンドラ : lambda_fcuntion.lambda_handler のまま
ロール : 既存のロールを選択
既存のロール : lambda-polly-hands-on
そんなに時間はかからないと思いますが、念のためアイムアウトだけ5分にのばしておきます。
テストイベントは着信出来る電話番号を設定します。
1 2 3 4 |
{ "tel": "08012345678" } |
「08012345678」を実際の番号に変更してください。
これでテストを実行します。
電話がかかってきてSMSが送られればテストOKです。
API Gatewayの作成
[APIの作成]をクリックします。
API名を任意で設定して、[APIの作成]をクリックします。
[アクション] – [リソースの作成]をクリックします。
リソース名に任意の名前を設定して[リソースの作成]をクリックします。
作成したリソースを選択して[メソッドの作成]をクリックします。
POSTを選択して[✓]をクリックして右のペインで設定します。
- 統合タイプ : Lambda関数
- Lambdaリージョン : ap-northeast-1(Lambda関数を作成したリージョン)
- Lambda関数 : polly_twilio_call(作成したLambda関数)
[保存]をクリックします。
[OK]をクリックします。
[メソッドリクエスト]をクリックします。
[APIキーの必要性]をfalseからtrueに変更します。
[アクション]-[APIのデプロイ]をクリックします。
デプロイされるステージ : [新しいステージ]
ステージ名 : (任意のステージ名)
[デプロイ]をクリックします。
[ステージ]を選択してデプロイされたステージを展開します。
[POST]を選択して右ペインのURLを控えておきます。
[APIキー] – [アクション] – [APIキーの作成]をクリックします。
名前に任意の名前を設定して[保存]をクリックします。
APIとステージを選択して[追加]をクリックします。
APIキーの[表示]をクリックして表示されるAPIキーをメモしておきます。
kintoneアプリへの設定
kinotneアプリの[アプリの設定を変更]をクリックします。
[JavaScript / CSSでカスタマイズ]をクリックします。
customize.jsをダウンロードします。
(クリックするか、右クリックで対象を名前をつけて保存など)
20行目 ~ 30行目付近の
‘x-api-key’ : に、API Gatewayで設定したAPIキーに、
api_url = にAPI Gatewayで作成したステージのURLに書き換えて保存します。
[アップロードして追加]でkintoneに反映します。
[アプリを更新]をクリックします。
これで、自環境に作ったTwiioとPollyのAPIをkintoneから呼び出す事が出来ます。
目次
(4)Step Functionsで複数のLambdaを実行制御する
(7)ラッキーコンテンツ ←今ここ
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

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

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

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

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


開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
「関西AWSスタートアップ勉強会」に行ってきました
第2回 関西スタートアップAWS勉強会に行ってきました。 akippa 拠点数コ …
-
-
ヤマムギ vol.8 (AWS)EC2でLinuxサーバー構築ハンズオン 手順
ヤマムギとは from Mitsuhiro Yamashita 「AWSではじめ …
-
-
「nakanoshima.dev #36 コンテナについて話したい、助けてほしい人集まれLT大会」に参加しました
アールスリーインスティテュートさんのAshibinaaで開催されました! いつも …
-
-
「kintone Café 大阪 Vol.17 〜 kintoneと連携するスマホアプリを作ってみよう! 〜」会場スポンサー初体験!
kintone Café 大阪で弊社の会場を使ってもらいました。 この会社に来て …
-
-
「JAWS-UG 名古屋 AWS Demo-1グランプリ」を開催しました
「JAWS-UG 名古屋 AWS Demo-1グランプリ」を開催しました! 「開 …
-
-
Innovation EGG 第4回 『各クラウドの現状とこれから』に参加してきました!
Innovation EGG 第4回 『各クラウドの現状とこれから』に参加させて …
-
-
「JAWS-UG KANSAI meetup Jan 2021」に参加しました
ようやくタイミングがあって、hopinに移行してから初の参加。 「今どんくらい人 …
-
-
「Fin-JAWS 第25回 ~Go to Fin-JAWS School! 2022~」で発表しました
「Fin-JAWS 第25回 ~Go to Fin-JAWS School! 2 …
-
-
「ChatGPT Meetup Osaka #2」に参加しました
ChatGPT Meetup Osaka #2に参加してきました。 今日も素敵な …
-
-
JAWS DAYS 2018 「Cost-Driven AWS クラウドアーキテクチャデザインとコスト最適化方法 – Cost-Driven AWS Cloud Architecture Design : The Lean Startup on AWS」を聞きました
以下は、思ったことや気になったことをメモしていますので、必ずしも登壇者の発表内容 …