不動の鳥の勉強記録

時間があるときに勉強したことをメモします。

Dialogflowの使い方について

先日Google Homeアプリのハンズオンに参加したので忘れないようにメモします。
ただの会話だけだとノンプログラミングで作成できてしまうのに驚きです。

用語としては、Agent, Intent, Entity, Fulfillmentの4つを覚えればOKと思いました。
これらの用語を用いて簡単な会話を作る手順をまとめます。

■用語解説(※個人的かつ独断的な解釈です)
 Agent: 代理人。会話の対応をしてくれるアプリ 
 Intent: 意思。実施したい目的と一連の会話
 Entity: 実体。単語と類似語をまとめた集合
 Fulfillment:実現。処理ロジック

■記事のアウトライン
 0. Dialogflowにログインする
 1. Agentを作成する
 2. Intentを作成する
 3. Integrationsでテストする
 ※EntityとFulfillmentについては今回は記載しません。

■0. Dialogflowにログインする
 Google HomeアプリはDialogflowというWebサイト上で会話のシナリオを作っていきます。
 Dialogflowのサイトは下記となります。
 ※ログインにはGoogleアカウントが必要になるので、Googleアカウントがない方は作成してください。 
dialogflow.com

■1. Agentを作成する
 ログイン後の画面から、左側のサイドメニューからまずはAgentを作成します。
 下記5つの手順で作成が完了します。
 今回は「Agent name」を「Test-Agent」と入力し進めていきます。

 【画面操作】
 ①サイドメニューの最上部のタブを押下します。
 ②「Create new agent」を押下します。
f:id:hiyo-ac:20180225120657p:plain

 ③「Agent name」欄に名前を付けます。
 ④ 日本語のアプリを作りたいので、DEFAULT LANGUAGEを「Japanese - ja」にします。
 ⑤「CREATE」を押下します。
f:id:hiyo-ac:20180225150854p:plain

■2. Intentを作成する
 Agentを作成したら、Agentが利用するIntentを作成します。
 各項目細かいので操作方法とやっていることを説明します。
 「Intent name」は「Test」とし、ユーザが「テスト」と発した時に、
 「テストは順調です。会話を終了します。」と応答し会話を終了するIntentを作成します。

 【画面操作】
 ①サイドメニューから「Intents」を押下します。
 ②「CREATE INTENT」を押下します。
f:id:hiyo-ac:20180225151535p:plain

 ③「Intent name」欄に名前を付けます。
 ④「Training phrases」を押下します。
  ※⑤で押下する「ADD TRAINING PHRASES」が表示されていれば押下する必要がありません。
 ⑤「ADD TRAINING PHRASES」を押下します。
f:id:hiyo-ac:20180225153427p:plain

 ⑥「Add user expression」にユーザが発するフレーズを入力します。入力後はEnterキーを押下してください。
  ※今回は「テスト」と入力し、Enterキーを押下します。
f:id:hiyo-ac:20180225153706p:plain
 
 【説明】
 ④~⑥でユーザがどんなフレーズを入力した時にこのIntentを利用するかを指定しています。
 このTraining phrasesをトリガー?のようにし、返却する会話やFulfillmentに記載のロジックを実行します。
 今回は単純に返答を返すだけにします。

 ⑦「Reponses」を押下します。
  ※⑧で押下する「ADD RESPONSE」が表示されていれば押下する必要はありません。
 ⑧「ADD RESPONSE」を押下します。
f:id:hiyo-ac:20180225154035p:plain

 ⑨「Text response」の「Enter a text response」に応答するフレーズを入力します。
  ※今回は「テストは順調です。会話を終了します。」と入力します。
 ⑩「Set this intent as end of conversation」のバーを押下し有効にします。
  ※スライドバーが青くなればOKです。
 ⑪「Save」を押下します。
f:id:hiyo-ac:20180225154621p:plain

 【説明】
 ⑨で複数「Text response」を入力した場合は、ランダムでどれか1つを選択し応答を返します。
 ⑩で会話を終了するように設定をしています。
 
■3. Integrationsでテストする
 作成したアプリは実機でテストを行いたいと思います。
 実際にテストを行う際にIntegrationsを用いて行います。
 ※実機(Google Homeバイス)に設定しているGoogleアカウントと、
  今回のアプリ開発Googleアカウントが一致している必要があります。

 【画面操作】
 ①「Integrations」を押下します。
 ②「Google Assistant」を押下します。
f:id:hiyo-ac:20180225155424p:plain

 ③「Auto-preview changes」のバーを押下し有効にします。
  ※スライドバーが青くなればOKです。
 ④「TEST」を押下します。
f:id:hiyo-ac:20180225155657p:plain
 
 【説明】
 ③では、Dialogflowで操作した記録を自動的に反映するように設定しています。
 これを行うことで開発効率がテストしながら修正できるので作業効率は高くなると思います。

 ⑤お手持ちのGoogleHomeデバイスがある場合は、ぜひ話しかけてみてください。
  「OK, Google。テスト用アプリにつないで」
  Web画面上でテストを行う場合は、入力欄に「テスト用アプリにつないで」と入力しEnterキーを押下してください。
f:id:hiyo-ac:20180225160339p:plain

 【説明】
  作成したアプリは、デフォルトの設定では「テスト用アプリ」という名前になっています。

 ⑥「わかりました。テスト用アプリのテストバージョンです。」と応答が返ってくることを確認してください。
  ※複数アプリを作っている場合は、ほかのアプリにつながってしまうかもしれませんのでご注意ください。
 ⑦「テスト」 と入力し動作を確認します。
  ※画面キャプチャではすでに入力した状態です。
 ⑧「テストは順調です。会話を終了します。」と、表示されることを確認してください。
  ※実機で確認している場合は、上記応答があることを確認してください。
 ⑨「テスト用アプリがチャットから退出しました。」と 表示されることを確認してください。
f:id:hiyo-ac:20180225162604p:plain

 【説明】
 ⑦で、作成したIntentとマッチし、Intentで設定したResponseが応答としてありました。
 ⑨では、Intentを作成する際に会話を終了するように設定したため、アプリが終了しました。

■まとめ
 Dialogflowでの会話作成の流れを紹介しました。
 複雑な会話を作る場合は、Intentを複数作成します。
 アプリ作成時は、ユーザとの会話のシナリオを作成し、
 シナリオの中で会話をやり取りする部分をIntentとして作成していくのがよさそうです。
 本記事について誤りなどありましたらご指摘お願いします。

■その他
 画面キャプチャは2018/02/25時点のものとなります。

以上。