「九大のメシ」というWebサイトを作成し,TwitterBotまで作ったものの,もっと簡単に今日のメニューを知りたくなったので,Googleアシスタントに今日の学食メニューを教えてもらえるアプリを作ってみました.
ネット上に情報は転がっているのですが,情報がやや古く,現在(2022/04/05)ではうまくいかないことも多かったので,備忘録として残しておこうと思います.
処理の流れ
- Googleアシスタントから「Actions on Google」で作成したアプリを起動する
- Googleアシスタントから,アプリで実行したい処理を送信する
- アプリに紐付けられたDialogflowを使って言語解析を行い,サーバにリクエストを送る
- サーバ上でリクエストに沿った処理を行い,Dialogflowにレスポンスを送る
- Googleアシスタントに返答が送られる
作り方
全部紹介するのは面倒なので,他のサイトを参考にしつつ変更部分を補完していきます.
Actions on Googleでアプリを作成する
このページを参考.
種類は「Custom」「Conversation Components」で作成.下の方にちっちゃく書いてある「〜Dialogflow」でもよさそう.
Dialogflowで言語解析する
このページを参考.
「User says」は消えており,代わりに「Training phrase」で複数の言葉を設定できるようになっていた.UIも若干変わっているので注意.
サーバーを立てる
このページを参考.
JSONの返答形式が変更になったようで上記の方法ではうまくいきませんでした.リファレンスに詳しい仕様が載っていたのでそれを参考に作成.
管理人は「九大のメシ」と同じHeroku上にAPI用のページを作成しました.APIは公開してあるので,DialogflowのwebhookにこのURLを指定し,リクエストのパラメータに「cafeteria」属性を加えれば誰でも管理人と同じことができると思います.
cafeteria属性は以下のように設定すればOK.右はアシスタントが文字起こしを行う際の表記揺れを束ねるためにいくつか設定しています.
テストする
Dialogflowにもどり,「integration」から必要なIntentを追加し,テストを行いました.上記の参考サイトとはUIが変わっているので注意.これを行うとGoogleアシスタントからアプリを起動できるようになっているはず.
完成!
きちんと今日のEcafeのメニューを読み上げてくれた!スマホからでも応答を確認できました.
おわりに
というわけでGoogleアシスタントが今日の学食メニューを教えてくれるようになりました.
改善点としては,
- アプリを起動→メニューを尋ねるという2段階を踏むのがやや面倒な点.ルーティーンを用いて複数目コマンドの同時実行をしてみてもうまくできなかった.
- スマートスピーカーからは起動できなかった点
- 日付や読み上げ件数の設定ができるようにする点
などが挙げられると思います.
古い情報が転がっていて正しい情報を探るのに時間がかかった点を除けば,比較的簡単にGoogleアシスタントのアプリを作成することができました.まあGoogleアシスタントで作りたいと思っていたものはできたので,次はまた別のものを作ってみたいと思います(管理人のアイデア帳にはまだ実現できていないさまざまなアイデアがあと30個ほどある).
それではまた.
コメント