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
関連記事
-
-
ちょっとしたCLI作業にEC2起動テンプレート
CLIでちょっとした作業したいだけのときに、Cloud9を使うまでもないなあと思 …
-
-
AWS Organizations組織でCompute Optimizerを有効にしました
OrganizationsでCompute Optimizerの信頼されたアクセ …
-
-
Amazon EC2のAMIイメージを自動取得して保持日数が過ぎたら削除
画像の保存をEC2に戻した事もあってEC2のバックアップの自動取得を勉強がてらや …
-
-
Backlogの課題チケット更新内容をMicrosoft Teamsに通知する(AWS Lambda Python)
BacklogにSlack連携が追加されました。 ですが、私の所属している会社で …
-
-
Amazon API GatewayのIAM認証の動作を確認しました
API GatewayのIAM認証は、IAMユーザーが実行できるように認証する、 …
-
-
EC2 Auto Scalingグループでインスタンスの更新を実行
このブログのAMI、起動テンプレートを更新して、EC2 Auto Scaling …
-
-
AWS Systems Manager Session ManagerでLinuxインスタンスのRun Asサポートを有効にする
AWS Systems Manager Session Managerの設定画面 …
-
-
S3インベントリ設定でインベントリファイルの作成を設定
インベントリレポートファイルはオブジェクトの一覧情報です。 日次、週次で定期作成 …
-
-
AWS LambdaのSQSへの自前ポーリングをやめてSQSイベントソーストリガーに変更した
以前は、LambdaがSQSからメッセージを受信するには、キューをポーリングして …
-
-
AMIをOrganizations組織で共有しました
よく使うAMIをOrganizations組織内のリソースパブリッシュ用のアカウ …