Google Cloud Platform

Cloud Machine Learning API を使った会話アプリの作成 - Part 3

このブログ記事の Part 1Part 2 では、API.AI と Google Cloud Machine Learning API を使った会話型ツアー ガイド アプリの作成方法を紹介しました。最終回となる今回は、このアプリを、Google Assistant が動作するデバイス(Google Home、動作要件を満たす Android スマートフォンおよび iPhone、Android Wear)に拡張する方法を見ていきます。この拡張アプリは、Part 1 と Part 2 で作成した既存の API.AI エージェントがベースとなります。

Actions on Google 用の新しいインテント

Part 1 では会話型ツアー アプリの入力コンテキストと出力コンテキストの関係について説明しました。

5qwiyM4kPl5aqB6w31K3OCrsY5ACLwc_3U2H6vntNONLzPCiH66EujYXaqmt6a5V97D0IWoBV4Kwl62JRUtDOTcmp5zR_Ye32t6fbS_pJpdYo9wF9FuYTD4HpXcYKxriCIRb_Czgxlz9.PNG

where コンテキストはユーザーに画像のアップロードを要求しますが、これは Google Assistant ではサポートされていません。このコンテキストの関係は次のように変更できます。

wMdKamn2qEe9cZN9P_umPea_xH7lZUy4DdJy9RzxTfTI2CwoprlDh5tnGaQPOjtkigc7-n8gKOH5xL7EYhrx9Eo7u0T33GrIpHZLoRwU-ZDUVgfB3kjq8BEktV_4EQILCzq9ELTTmhkk.PNG

hours-no-contextticket-no-contextmap-no-context という 3 つの新しいインテントを追加します。各インテントは、他のインテントが location を入力パラメータとして使えるように、location を出力コンテキストとして設定します。

nAvo-RV4puHIShLEiuuXbsgGOSZp7RF2obdFYld7LxzQZlf3zQHbSnDI3A7kkxM0wzzhTDeksr31MLujbuEjjM0SV8nrY95YjwRHYZkqMUGKqlK2A_VjCEduA5RIUfqTO_oK1bkwz5oo.PNG

Actions on Google の統合を有効にする

今度は Actions on Google を有効にして、Google Assistant と連携させます。

  1. API.AI コンソールを開き、Integrations(統合)タブで Actions on Google の統合をオンにします。

z0LW_vmCka--h7w9UgdpvBoMPdE-QKTPuUynSCOpX63BYwRv24ZaV77ZvTLR0htFkAyEcoL-Buz7MZ5LxcihuCYei2U0ZWtvY5rs1b17nHfxYtJ1dl8Xq2xPcW8B_NVMpjUaxS7bxjas.PNG

  1. Additional triggering intents(追加するトリガー インテント)の下のポップアップ ダイアログで、Google Assistant でサポートしたいすべてのインテントを追加します。なお、Welcome Intent はシステムによって自動的に Default Welcome Intent に設定されます。後で Actions on Google で SETTINGS(設定)をクリックすると、この設定ダイアログを表示できます。
    inquiry.where インテントは画像のアップロードを要求しますので、Google Assistant ではサポートされないことに注意してください。そのため、このインテントをトリガー インテント リストに追加してはなりません。また、サポートする新しいインテントを追加作成する方法については、上述の『Actions on Google 用の新しいインテント』で説明しています。
  2. Actions on Google でサポートしたいすべてのインテント(hours-no-context インテントなど)を Additional triggering intents のリストに追加したら、最下部の UPDATE(更新)および TEST(テスト)ボタンをクリックします。すると、緑色のボックスが生成されるので、VIEW(表示)ボタンをクリックし、Actions on Google Web Simulator に移動します。

2847.png

Actions on Google コンソールに初めてアクセスする場合はプロンプトが表示され、Activity controls センターにおいて Device Information(端末情報)と Voice & Audio Activity(音声アクティビティ)をオンにするよう促されます。

274659.png

デフォルトでは、これらの設定はオフになっています。これらをすでにオンにしている場合は、このプロンプトは表示されません。

347387.png

  1. この 2 つの設定をオンにすると、Actions on Google Web Simulator に移動します。いよいよシミュレータで統合のテストに入ります。
    まず、“Talk to my test app”(テスト アプリと会話)とタイプするか、話しかけます。すると、シミュレータは Default Welcome Intent に基づいてこの文に応答します。続いて、API.AI テスト コンソールにアクセスしているかのように、アプリをテストできます。

uq61EjyBl1xaUbTlj9cCIzniAMJGxnaGJnoLTo0GyjlP_J0XE2jWqRQpye7WoByAac2nDhTHIJJs8jgRtrVBJNm8J0JC05ni2DjHnw_CYMHqMHPzIH1STralH7AwZoNCrPqrDqapwvet.PNG

tell() API と ask() API の違い

Part 2 で触れたように、Actions on Google SDK で Google Cloud Functions を実装するときの tell() API と ask() API には微妙な違いがあります。Part 1 と Part 2 では両 API にはあまり違いはありませんが、Actions on Google を統合する Part 3 では違いがあります。tell() は会話を終了させ、マイクを閉じますが、ask() は会話を継続し、ユーザーの次の入力を待ちます。

この違いはシミュレータでテストできます。Cloud Functions で tell() を使うと、Cloud Functions のウェブフック、たとえば inquiry.parades インテントの “Are there any parades today?”(今日はパレードがある?)などでインテントをトリガーした場合、再び “Talk to my test app” と言わなければなりません。

ask() を使用すればテスト アプリとの会話を続けられるので、再び “Talk to my test app” と言う必要はありません。

次のステップ

このサンプル アプリを通じて、機械学習を利用したシンプルなアプリの作成方法をおわかりいただけたと思います。さらに多くの情報を得たいのであれば、以下のクイックスタートを試してみるとよいでしょう。


ソース コードは GitHub からダウンロードできます。

* この投稿は米国時間 8 月 28 日、Software Engineer である Chang Luo と Bob Liu によって投稿されたもの(投稿はこちら)の抄訳です。

- By Chang Luo and Bob Liu, Software Engineers