2018年9月3日
Google Homeアプリ開発を試してみました
こんにちは、中川です。
今回は、DialogflowとCloud Functions for Firebaseを使った、
Google Homeアプリ開発を試してみました。
作るもの
まずは簡単なもので試したいと思いますので、
「Google Homeに話しかけた内容を逆にして返答する」というアプリとします。
Googleスプレッドシートを使って会話内容を設定したりもできる ようですが、
後々プログラムで柔軟に処理できるように、
今回は Cloud Functions for Firebaseを利用してみたいと思います。
アプリケーション構成
用語
- Google Home
- グーグル製のスマートスピーカー
- Google アシスタント
- Googleが開発したAIアシスタント。
Google Homeや、Android端末などに導入されている。
iOS端末では「Google アシスタント」アプリとして利用できる。
- Googleが開発したAIアシスタント。
- Actions on Google
- Google アシスタント用の開発者プラットフォーム。
シミュレーターでのテストや、アプリの公開などを行える。
- Google アシスタント用の開発者プラットフォーム。
- Dialogflow
- 自然言語での会話型インターフェイスを開発できるサービス。
2016年にGoogleに買収されてAPI.AIから改名し現在の形に。
Google Assistantの他、Amazon Alexa, Facebook Messenger、その他いろいろなプラットフォーム連携を行える。
- 自然言語での会話型インターフェイスを開発できるサービス。
- Cloud Functions for Firebase
- Firebaseの機能の一つ。
Firebaseの各種イベントやHTTPSリクエストによって、バックエンドコードの実行を行える。
今回は、DialogflowのWebhook機能で呼び出して利用する。
- Firebaseの機能の一つ。
開発
まずは、Actions on Google にログインし、
「Add/import project」からプロジェクトを作成します。
- Project Name: test1
- default language: Japanese
- country: Japan
次に作成したプロジェクトを選択し、プロジェクト内のメニューからActions画面を開き、
「ADD ACTION」から新しいActionを作成します。
「Custom intent」を選択肢、「BUILD」をクリックします。
別タブでDialogflowの画面が開かれますので、ここからはそちらで作業します。
Dialogflowのメニューから「Intents」を開き、「CREATE INTENT」で新しいインテントを作成します。
- Intent Name: test1
- Training phrases: テスト (なんでもOK)
- Action and parameters
- PARAMETER NAME: any
- ENTITY: @sys.any
- VALUE: $any
- Fullfillment: Enable webhook call for this intent: ON
「SAVE」を教えてインテントを保存します。
次に「Fullfillment」メニューを開きいて、Webhookのプログラムを作成します。
今回は「Inline Editor」でブラウザ上で作ってしまいたいと思います。
'use strict';
const functions = require('firebase-functions');
const {WebhookClient} = require('dialogflow-fulfillment');
process.env.DEBUG = 'dialogflow:debug'; // enables lib debugging statements
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
const agent =