radioc@?

レディオキャットハテナ

Google Assistantアプリ開発まとめ

Google Homeが届いてから色々遊んでみてGoogle Assistantアプリを作ってみたので、Alexaに移る前にいったんまとめてみる(招待メールまだ来ないけど)。

構成

最もスタンダードな構成は以下のようになる。

f:id:radiocat:20171118172831p:plain

Action on Google

Assistantアプリの開発プラットフォーム。会話メッセージと音声のリクエストを受信しレスポンスを返す。実機に繋いだシュミレーターによるテストなどもここから行える。

f:id:radiocat:20171009135023p:plain
Action on Google

Dialogflow(旧API.AI)

チャットボット作成のプラットフォーム。元々はAPI.AIという名前で2016年9月にGoogleに買収され、自然言語対話の統合的なプラットフォームとして進化し2017年10月にDialogflowに名称が変更になった。会話のコントロールを軸としてWebHookで他のプラットフォームと連携したり外部のチャットサービスと連携することができる。

Dialogflowは標準でFirebaseと連携している。そのためDialogflowでプロジェクトを作成すると必ずFirebaseにもプロジェクトが作成され、Dialogflowで設定した内容がスクリプト化されてFirebaseに保存される。Firebase上に配置するスクリプトはInline Editorから直接編集してカスタマイズすることも可能。

f:id:radiocat:20171118185445p:plain

Firebase

Firebase上に配置されるスクリプトはNode.jsベースのコードなので独自に開発してデプロイすることもできる。Dialogflow上からできることは限られているので、会話の内容を元にデータベースにアクセスしたり、Googleの他のサービスと連携するような仕組みを構築する場合はFirebaseのプロジェクトを作って開発することになる。firebase-toolsaction-on-google のライブラリが準備されているため比較的用意に実装ができる。

f:id:radiocat:20171118185056p:plain

その他サービスを使う

上記の構成はあくまで標準的な構成で、公開されているSDKAPIを使うことで他のプラットフォームを使って連携することもできる。

Fulfillment Hosting  |  Actions on Google  |  Google Developers

Firebaseは無料アカウントだと外部ネットワークにアクセスできないため、WebHook部分はFirebaseを使わずにHerokuから外部サービスと連携させるようなやり方も試してみた。firebase-tools を使わない場合は自分でJSONフォーマットのレスポンスを返すことになる。その際の注意点はQiitaに幾つかまとめておいた。

qiita.com

qiita.com