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認定クラウドプラクティショナー 改訂第2版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
AWS EC2 でインスタンスにIPアドレスを紐付ける
AWS EC2で作ったサーバは何もしなければ起動するたびにIPアドレスが変わって …
-
kintoneで設定したスケジュールにあわせてlambda(python)からSQSへメッセージを送る
EC2の起動停止をそろそろ手動でやるのも疲れてきそうなのと、やはり停止するのを忘 …
-
EC2ユーザーデータからメタデータを取得してRocket.Chatで80ポートを使用する
Rocket.Chatのデフォルトポート番号は3000です。 80を使うようにす …
-
JAWS-UG 大阪 関西女子合同 Amazon Personalizeハンズオンやってみました
久しぶりに大阪でJAWS-UGに参加です。 Amazon Personalize …
-
Amazon SESの受信ルールでSNSトピックを追加
SESの受信ルールにSNSトピックを設定してみました。 [View Active …
-
AWS Step Functions まずはパラレルでLambdaを並列実行してみました
複数のlambdaの実行制御をLambdaでやってましたが、その部分をStep …
-
AWS Transfer Family S3向けのSFTP対応サーバーをVPCで作成してEIPをアタッチ
EIPの作成 同じリージョンでEIPを作成しておきます。 SFTP対応サーバーの …
-
Developers Summit 2018 「AWSのフルマネージドな環境でCI/CDをやってみよう!AWS Cloud9からAWS Fargateへの継続的デプロイをご紹介」を聞きました
※写真は展示のAmazon Echoです。 以下は、思ったことや気になったことを …
-
「Fin-JAWS 第14回 Fin人類育成計画」で話させていただきました!
「Fin-JAWS 第14回 Fin人類育成計画」で話させていただきました。 久 …
-
AWS認定ソリューションアーキテクトアソシエイトのサンプル問題
AWS認定ソリューションアーキテクトアソシエイトのサンプル問題の解説を会社のブロ …