はじめに
iPhone を使い始めて10年弱、 Siri が全く働いていないことに気付きました。
スマートスピーカーが流行っている昨今、自分の Siri にももっと活躍して欲しいので Slackbot が投稿した AWS 請求額を読み上げてもらうことにしました。
Slackに投稿した内容を読み上げてくれました。
では、作り方諸々を紹介していきます。
構成
それぞれの役割を紹介していきます。
- Siri
- 音声呼び出しによるショートカットアプリの実行
- Slack に投稿された AWS 請求額の読み上げ
- ショートカットアプリ
- SlackAPI を使用して投稿
- SlackAPI を使用して最新の投稿を JSON で取得
- 取得された JSON 情報から必要な内容を抽出
- Slackbot
- Lambda の呼び出し
- Lambda
- AWS 請求額の取得
処理内容
今回はショートカットアプリに重点を置いて説明していきます。
Lambda と Slackbot についてはそれぞれ以下の記事にて詳細を記載しているので参照してください。
Lambda:(Python)AWSの請求金額を取得する
Slackbot:echobotを作成し、Slackに通知する
それでは、ショートカットを作成していきます。
まず、ショートカット名を決めます。
Siri にショートカット名を呼びかけると登録しているショートカットを実行してくれます。
なので今回は『今月の料金は』というショートカット名にします。
(『AWSの料金は』としたかったのですが Siri が AWS の部分を理解してくれませんでした...)
続いて、各処理で使用する変数を定義していきます。
- token:SlackAPI で使用する token (今回は Legacy tokens を使用しています。)
- channel_nm:SlackAPI で投稿するチャンネル名
- channel_id:SlackAPI で最新の投稿を取得する対象のチャンネルID
- text:Slack に投稿する文章
変数が設定できたら、 Slack 投稿用 API の URL を作成し、実行します。
API を実行すると、 AWS 請求額取得 Lambda が実行されます。結果がSlackに投稿されるまで時間がかかるので待機させます。
待機後、 Slack の最新投稿取得APIを実行していきます。
投稿用 API の時と同様に URL を作成し、APIを実行します。
最新投稿取得 API を実行すると以下のような JSON が返却されます。
{"messages":
[{
"bot_id":"XXXXXXXX",
"ts":"1579095866.000200",
"attachments":
[{
"color":"36a64f",
"id":1,
"fallback":" ・AWS Cost Explorer: 1.04 USD\n ・Tax: 0.10 USD",
"pretext":"01月01日から01月14日の請求額は、1.14 USDです。",
"text":" ・AWS Cost Explorer: 1.04 USD\n ・Tax: 0.10 USD"
}],
"type":"message",
"subtype":"bot_message",
"text":""
}],
"has_more":true,
"ok":true,
"channel_actions_ts":null,
"channel_actions_count":0}
ここから pretext の値を変数に追加していきます。
これで Siri に読み上げてもらう内容が取得できました。
最後に読み上げる文章をテキストに起こし、読み上げのアクションを設定します。
完成です。
Siri に向かって『 Hey Siri! 』と話しかけましょう!
おわりに
これで Siri が一つ仕事を覚えてくれました。
この構成を使えばもっといろいろな事ができると思います。
今回は Slack + Lambda をショートカットアプリから呼び出しましたが、 アプリの Pythonista3 から Python を実行しても面白い事ができると思います。