のしメモ アプリ開発ブログ

Unityアプリとかロボットとか作ってるときに困ったこととかメモ

Actions on Googleを始める

Actions on Google

音声を使用した会話形式のアプリが作れるツールです。
Google Homeのアプリもシミュレータで確認しながら作れるみたいなので試してみました。

サンプルではAPI.AIのNode.jsを使ったアプリで、Firebaseを使ってデプロイできるようになっています。
今回は公式のGetStartedをやりながら手順をメモしたものになります。

参考資料について

公式のGet startedを参考に進めていきます。公式マニュアルを読みながらの方が、最新で細かいところも書いているのでおすすめです。
https://developers.google.com/actions/get-started/


実行手順

1. ActionsのプロジェクトとAPI.AIエージェントを作成

(1) サンプルアプリケーションを導入

https://github.com/actions-on-google/apiai-facts-about-google-nodejs
サンプルのフォルダを作成します。(今回は`SampleAction`というフォルダ名とする)
`SampleAction/FactsAboutGoogle.zip`
`SampleAction/functions/index.js`
というディレクトリ階層になるように配置します。

(2) Activity controlsから権限を編集

Chromeの下記の権限を有効に設定します。
・ウェブとアプリのアクティビティ
・音声アクティビティ
・端末情報
編集はこちらから。
https://myaccount.google.com/activitycontrols?pli=1
f:id:noshipu:20170717025103p:plain

(3) プロジェクトとAgentを作成する

a. Actions on Google Developer Consoleに移動します
b. `Add Project`から`FactsApp`を選択しプロジェクト名をSampleActionと入力、regionをJapanに設定し、`Create Project`を選択します。
c. `Use API.AI`から`CREATE ACTIONS ON API.AI`を選択しActionsをビルドします。
d. API.AIコンソールが立ち上がり、Agentの画面でそのままSaveを押して情報を保存します。

(4) FactsAppのAgentにサンプルプロジェクトを復元

a. 左側のナビゲーションバーにある、Agent名の右にある歯車アイコンを押します。

f:id:noshipu:20170717141911p:plain

b. `Export and Import`タブを選択します。
c. `RESTORE FROM ZIP`を押し、先ほど配置した`SampleAction/FactsAboutGoogle.zip`を選択します。
d. RESTOREとテキストボックスに入力し、`RESTORE`ボタンを押し、その後`DONE`ボタンを押します。

2. fulfillmentをデプロイ

firebaseを使用してデプロイします

(1) Node.jsをインストールする

後述しますが、v6以上のインストールが必要です。
※Node.jsのインストール手順説明は飛ばします。

(2) firebaseクライアントソフトをインストー

npm install -g firebase-tools

(3) Googleアカウントでログイン

下記を実行しGoogleにログイン

firebase login

(4) firebaseをActionsのプロジェクトに紐付けます

a. {PROJECT_ID}を確認する

`firebase list`を叩くと先ほど作ったプロジェクトのIDを確認することが可能です。
先ほどの管理ページからも確認することが可能です。

b. プロジェクトに紐付ける
cd SampleAction/functions
firebase use {PROJECT_ID}

`Now using project {PROJECT_ID}`と表示されたら成功です。

(5) デプロイ開始

下記コマンドを実行します

cd SampleAction/functions
npm install
firebase deploy --only functions

=================実行時にエラーが起きた場合=================
実行時にNode.jsのバージョンが古く、下記のメッセージが表示されたのでアップデート。

Error: There was an unknown problem while trying to parse function triggers. Please ensure you are using Node.js v6 or greater.

Node v8.0.0だと下記のエラーが

TypeError: Cannot read property 'pipesCount' of undefined

v8.1.4にあげて再度実行すると成功しました。
=================実行時にエラーが起きた場合ここまで=================

デプロイに成功するとこのようなメッセージが表示されます。

✔  Deploy complete!

Project Console: {PROJECT CONSOLE URL}
Function URL (factsAboutGoogle): {FUNCTION URL}

{FUNCTION URL}をコピーしておく

(6) URLを設定

a. API.AIのページに戻る
b. 左側のナビゲーションバーから`Fulfillment`を選択し`ENABLED`にする
c. URLの入力を求められるので{FUNCTION URL}を入力し`SAVE`を押す

f:id:noshipu:20170717152129p:plain
Basic認証を設定することも可能です。ローカル開発機を使いたい場合はngrok等のツールを使えば可能だが、脆弱性に気をつける必要があるとのことです。

3. シミュレータを動かす

(1) API.AIのページの左側のナビゲーションバーから`Integrations`を選択

(2) Actions on GoogleのカードがOnになっていることを確認

f:id:noshipu:20170717153312p:plain

(3) そのままカードをクリック

(4) そのままカードをクリックして`TEST`ボタンをクリック

`TEST`ボタンが存在しない場合は`AUTHORIZE`ボタンを押してから`TEST`をクリックします。
`TEST`を押すとAgentがアップロードされてシミュレータでテストできるようになります。

(5) `Test your Assistant app`の項目の`VIEW`をクリック

(6) シミュレータのWebページが開くので、`START`をクリック

(7) シミュレータのチャットのテキストボックスに入力

`talk to my test app`を入力するとこんな形でメッセージが返ってきたらサンプルの実行成功です。

Welcome to Facts about Google! Do you want to hear about Google's history or do you want to hear about its headquarters?

(8) アプリを使ってみる

下記のメッセージを送るとIntentを呼び出して試せます。
`talk to Facts about Google about cats`
`talk to Facts about Google`
`talk to Facts about Google about Google"s history`

日本語の設定ができたりもするので、Zip内の設定ファイルを編集して色々試してみようと思います。

何か間違いや、問題があればお気軽にコメント等ください。