ヤマムギ

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

  関連記事

CloudWatch Logs機密データ保護を設定しました

Amazon CloudWatch Logs を使用して機密データを保護するがリ …

Amazon WorkSpaces Web Accessを有効化する

仕事がら、Amazon WorkSpacesをディレクトリも含めて一時的にセット …

プライベートサブネットのEC2でセッションマネージャを使うようVPCエンドポイントを構成する

インターネットゲートウェイへのルートがないルートテーブルに関連付けられたプライベ …

ブラウザからJavaScript SDKを使ってAmazon S3 への写真のアップロードチュートリアルをやってみました

ブラウザから Amazon S3 への写真のアップロードをやってみました。 HT …

ALBにWAFを関連付けて特定のヘッダー以外はブロックする

おかげさまで、ブログのアクセスも増えてきて、t3.nano EC2インスタンス単 …

WordPress W3 Total Cache のDatabaseCacheをAmazon ElastiCacheのmemcachedに格納する

このブログのアーキテクチャは現在こちらです。 データベースは、Amazon Au …

AWS Systems Manager セッションマネージャを使用するために必要な設定

AWS Systems Manager セッションマネージャを使用するために必要 …

Route 53で不要なドメインを削除

勢いで作ったけど結局使うのをやめたドメインがあります。 要らないので削除しました …

S3バケットのリクエスタ支払い

S3バケットのリクエスタ支払いを試しました。 バケットの設定 検証用のS3バケッ …

Amazon Connectのパスワードどころかユーザー名も忘れたのでEmergency accessした

長い間放置していたAmazon Connect環境にアクセスしようとしたところ、 …