Google Home でツイッターをする
新しい職場で開かれたとあるコンテストで入賞し、GoogleHomeを頂いたので遊んでみました。
今回作った機能は下記の3つです
- 「OK,Google ツイート {ツイート内容}」と言うと{ツイート内容}がツイートされる。
- 「OK,Google リプライ {ツイート内容}」と言うと{ツイート内容}が一番最後に自分に対してリプライをしたユーザのツイートに対してリプライされる。
- 自分へのリプライが行われると、GoogleHomeがリプライ内容を喋る。
1.ツイートする
上の記事を参考に、基本的にはIFTTTで実装しています。
「おっけーぐーぐる ツイート 外に出る気力がない」
と言うと以下のようにツイートされるようになりました。
ただ、これだとツイート内容の単語間にスペースがはいってしまっています。
そのため、Firebase Functionsを経由し、そこで整形を行った後にツイートするというようにしました。
exports.tweet = functions.https.onRequest((request, response) => { var postParams = { status: request.body.text.replace(/ /g, '') + " - Google Home から" } client.post('statuses/update', postParams); response.status(200).end(); });
出来ました。
2.リプライする
リプライについても同様に、IFTTTからFIrebase FunctionsのエンドポイントURLを叩き、内部でツイッターAPIを使って最後のリプライを指定、ツイート。と言うような感じです。
つまづきポイントとしては、IFTTTの音声認識の設定を「リプライ $」とすると認識されづらく、「reply $」でも認識されるようにしたぐらいです。
3.自分へのリプライを喋る
↑を参考にしました。 GoogleHomeを喋らせるようのサーバを建て、発話APIを作ります、 IFTTTをつかってリプライが来たらwebhookによって発話APIを叩くようにします。
@EnsekiTT pic.twitter.com/0ZN3CrLDfy
— あのちっくしなちく (@anoChick) 2017年10月14日
こんな感じで、リプライが来ると喋りだすようになりました。 上のデモでは、「@anoChick おk」というツイート内容を発話しており、「@anoChick」の部分を抜きたかったので、この場合に関しても、Ficebase Functionsを経由して整形しています。
結果、下記のような構成に落ち着きました。
やっぱりIFTTTだけだと痒いところに手が届かないので、Cloud Functionsや AWS Lambda等、を使うといい感じになりそうです。
こういう独特な言い回しは間違えやすい