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の発信元電話番号 |
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
Cloud9でSAMローカルテスト
せっかくテストするので、Amazon CloudSearchからAmazon E …
-
-
VPC新コンソールの日本語UIでルートテーブル編集時のエラー(2021/6/10)が発生したのでフィードバックを送った
VPCの新コンソールがリリースされていたので使って作業してましたところ、こんなエ …
-
-
EC2 Auto Recovery機能を設定しておいた
以前EC2インスタンスのリタイア対象になったこともあり、というより、やっておいて …
-
-
AWS Cost Explorerの設定で「EC2リソースの推奨事項を受け取る」を有効にしました
「EC2リソースの推奨事項を受け取る」という機能がAWS Cost Explor …
-
-
AWS Organizations組織の移動
AWS Organizations組織の移動 やりたいことは、Organizat …
-
-
AWS DeepLensセットアップの儀
AWS DeepLensのセットアップを開始します。 AWS DeepLensを …
-
-
S3オブジェクトロックを試しました
S3オブジェクトロックが必要になる要件に今のところ、出会ってないのでまだ設定した …
-
-
Amazon CloudWatch Syntheticsでハートビートモニタリングを実行
このブログに対してハートビートモニタリングのCanaryを実行してみました。 C …
-
-
AWS CloudFormationでAmazon DynamoDBテーブルを作ってアイテムを追加する
デモ用にDynamoDBテーブルを作って消して、ということをたまにするので、Cl …
-
-
AWS Lambda Layersのアーカイブファイルをダウンロードする
Cloud9にLambda Layersをダウンロードしたかったので検索してみた …

