AmazonSNS通知の内容を電話で通知する
Twilioという電話通知を行えるAPIサービスを使用して、
SNS通知 -> Lambda -> Twilio -> 携帯電話
という流れで電話通知を行う仕組みを作ってみます。
使用するサービス
Twilioのアカウントを作成する
- サインアップからアカウントを作成します。
- アカウントを作成したらこちらでTwilioの電話番号を取得します。
Show API Credentials
をクリックしAccountSid
とAuthToken
をメモします。
Lambdaアプリの作成
アプリはこちらからダウンロードします。 gitとnpmを使用しますので入ってない場合はインストールしてください。
git clone https://github.com/y-matsuki/sns-phone-call.git cd sns-phone-call/
設定ファイルconfig/default.yaml
を編集します。
twilio: accountSid: 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' authToken: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' language: 'ja-jp' voice: 'woman' toNumber: '+81xxxxxxxxxx' fromNumber: '+81xxxxxxxxx'
accountSid
,authToken
は先ほどメモした値を設定します。fromNumber
には先ほど取得したTwilioの電話番号を設定します。toNumber
には認証済みの電話番号(アカウント登録時の電話番号)を設定します。
設定ファイルを修正したら以下のコマンドでzipパッケージを作成します。
npm install npm run build
SnsPhoneCall.zip
が出来たら成功です。
Lambdaアプリのデプロイ
AWS Management ConsoleにログインしAWS Lambdaのページへ移動します。 現在(2015/6)はまだ東京リージョンに作成できませんが夏には来るそうです。
項目名 | 設定値 |
---|---|
Name | sns-phone-call(任意) |
Runtime | NodeJS |
Code entry type | Upload a .ZIP file |
Handler | SnsPhoneCall.handler |
Role | Basic execution role |
Upload
ボタンから先ほど作成したSnsPhoneCall.zip
をアップロードして、
Create Lambda Function
ボタンをクリックします。
SNS通知の作成
Amazon SNSのページへ移動してCreate new topic
からトピックを作成します。
作成したらActions > Suscribe to topic
から配信先を登録します。
Protocol
にAWS Lambda
を選択すると先ほど作成したLambdaアプリが表示されます。
Create Subscription
をクリックしたら準備完了です。
動作確認
先ほど作成したSNSトピックを選択しPublish to toipc
をクリックします。
Message
に喋らせたい内容を記述してPublish message
をクリックします。
設定ファイルのtoNumber
に設定した電話番号宛に電話が届いたら成功です。
まとめ
Lambdaを使用することでEC2なしでTwilioAPIをコールする仕組みができました。 Lambdaアプリの処理はnode.jsで記述しているためSNS通知の内容を読んで キーワードでフィルタしたり宛先を振り分けたりカスタマイズすると面白いかなと思います。