ヤマムギ

growing hard days.

*

kintoneに登録されたアカウントの電話番号にGoogleカレンダーの予定をAmazon Pollyが読み上げてTwilioから電話でお知らせする(AWS Lambda Python)

      2017/05/07


Google Calendar Twilio Reminder

Googleカレンダーの予定を電話音声でリマインダーします。

  • 対象とするGoolgeアカウントと受電する電話番号はkintoneに登録します。
  • トリガーはAmazon CloudWatchで毎時0分にAWS Lambdaを実行します。
  • Googleカレンダーの予定はAmazon PollyがMP3ファイルを生成してS3に格納します。
  • Googleカレンダーは使用するサービスアカウントに閲覧権限を設定します。

ソースコードはGitHubに置いてます。

各APIの説明はAPIごとにブログ記事に書いてます。
以下をご確認ください。

以下、簡易説明です。

kintoneアプリの作成

以下の項目を持つアプリを作成します。

フィールド名 フィールドコード タイプ 内容
メールアドレ calendar_id 文字列(1行) Googleアカウントのメールアドレス
電話番号 tel_number 文字列(1行) Twilioからかかってくる先の電話番号
無効 invalid チェックボックス 選択項目は「無効」のみ

※「無効」は設定を無効にするための項目です。レコード削除でも同じです。

Googleカレンダー

Google Developers ConsoleでCalendar V3 APIを発行してサービスアカウントを作ります。
認証キーはjson形式にしてソースコードと同じフォルダに配置します。
対象のカレンダーに作ったサービスアカウントに閲覧権限を設定します。

AWS Lambda

ソースコードをダウンロードして、requirements.txtに記載のパッケージをソースコードと同じフォルダにインストールしてzipで固めて、Lambdaにアップロードします。

AWS Lambdaに設定する環境変数

変数名 設定値
TIME_LAG 予定を何時間前に通知するかを設定します
TIME_ZONE Asia/Tokyoなど
BUCKET_NAME Amazon Pollyが生成するMP3ファイルを格納するS3バケット名
BUCKET_REGION ap-northeast-1など S3バケットがあるリージョン名
VOICE_ID Amazon PollyのボイスID 日本語なので Mizuki
POLLY_REGION Amazon Pollyのリージョン名
KINTONE_DOMAIN kintoneのドメイン xxx.cybozu.com
KINTONE_APP kintoneのアプリの数字
KINTONE_HEADERS_KEY X-Cybozu-API-Token
KINTONE_API_KEY kintoneのAPIキー
KINTONE_BASIC_HEADERS_KEY Authorization
KINTONE_BASIC_HEADERS_VALUE kintoneベーシック認証のキー(Basic)で始まる
DOMAIN Googleのドメイン GSuiteは独自ドメイン、フリーアカウントはgmail.com
GOOGLE_SERVICE_ACCOUNT_ID GoogleのサービスアカウントID
TWILIO_ACCOUNT_SID TwilioのアカウントSID
TWILIO_AUTH_TOKEN Twilioのトークン
TWILIO_FROM_NUMBER Twilioの発信元電話番号

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

【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。

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

【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。

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

 - AWS , , , , , , ,

ad

ad

  関連記事

AWSルートユーザーのパスワード復旧

AWSルートユーザーのパスワード最設定は、メールアドレスだけでいいのですね。 M …

Amazon Connectの新規作成からプッシュボタン入力と発信元電話番号をLambdaで処理するまで

とりあえずやりたいことはタイトルに書いたとおり、「電話をかけて、プッシュボタンに …

Amazon Aurora Serverless 課金確認

Amazon Aurora Serverlessを使い始めてみましたの記事で書い …

AWS Lambdaで「Process exited before completing request」

AWS lambdaで「Process exited before comple …

Amazon Route 53プライベートホストゾーン設定

Amazon Route 53プライベートホストゾーンを作成してみました。 Ro …

執筆環境(PyCharm, CodeCommit, CodePipeline, S3, Lambda, 署名付きURL)

2018年から、年に1回ぐらい商業本の執筆をさせていただいております。 2020 …

EC2 Ubuntu DesktopにRDP

Ubuntu Desktopが必要になりましたので、こちらのAWS EC2でデス …

Route 53のホストゾーンにサブドメインを登録する

親ドメインを移行しないでサブドメインの DNS サービスを Amazon Rou …

AWS Lambda(Python)で生成した文字をAmazon Connectで音声を設定して発信する

Amazon Connectから発信する電話の音声を動的に設定します。 Lamb …

Extend Switch Roles(Chromeのアドオン)で6つ以上のスイッチロール履歴

最近アカウントIDを忘れたりすることも多くなったので、切り替えに手間取ることがあ …