AmazonSNS通知の内容を電話で通知する

Twilioという電話通知を行えるAPIサービスを使用して、

SNS通知 -> Lambda -> Twilio -> 携帯電話

という流れで電話通知を行う仕組みを作ってみます。

使用するサービス

Twilioのアカウントを作成する

  • サインアップからアカウントを作成します。
  • アカウントを作成したらこちらでTwilioの電話番号を取得します。
  • Show API CredentialsをクリックしAccountSidAuthTokenをメモします。

Lambdaアプリの作成

アプリはこちらからダウンロードします。 gitnpmを使用しますので入ってない場合はインストールしてください。

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から配信先を登録します。 ProtocolAWS Lambdaを選択すると先ほど作成したLambdaアプリが表示されます。

Create Subscriptionをクリックしたら準備完了です。

動作確認

先ほど作成したSNSトピックを選択しPublish to toipcをクリックします。 Messageに喋らせたい内容を記述してPublish messageをクリックします。

設定ファイルのtoNumberに設定した電話番号宛に電話が届いたら成功です。

まとめ

Lambdaを使用することでEC2なしでTwilioAPIをコールする仕組みができました。 Lambdaアプリの処理はnode.jsで記述しているためSNS通知の内容を読んで キーワードでフィルタしたり宛先を振り分けたりカスタマイズすると面白いかなと思います。