Dialogflow CXでオウム返しを試してみた

2020年9月1日に [Dialogflow CX](https://cloud.google.com/dialogflow/cx/docs)のベータ版が公開されました。
今まで使っていたDialogflowは `Dialogflow ES` という名前に変わりました。

![スクリーンショット 2020-10-22 17.46.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154355/a8e41ba1-96bf-19e0-15a9-caecc3d2b65e.png)

# 概要
CXが大規模向けで将来的にコールセンターなどで利用されることを想定しています。従来のESは小規模の位置づけになる模様。

|項目|説明 |
|:--|:--|
|Dialogflow CX|大規模なエージェントや非常に複雑なエージェントに適した高度なエージェント タイプを提供します。|
|Dialogflow ES|小規模エージェントとシンプルなエージェントに適した標準エージェント タイプを提供します。|

https://cloud.google.com/dialogflow/docs?hl=ja

# 1. プロジェクト作成
下記URLにアクセスしてプロジェクトを新規作成します。
https://dialogflow.cloud.google.com/cx/projects

# 1-1. プロジェクト新規作成
`Create new project` をクリックしてプロジェクトを作成します。クリックするとGCPページへ遷移します。

![s100.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154355/f9e7bf10-e7fb-f655-7025-c84b780bc447.png)

適当にプロジェクト名を入力して、「作成」ボタンをクリックします。
![s101.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154355/24e5464d-8b7e-ac3b-f0a3-1b170a3036e6.png)

## 1-2. Dialogflowを有効化
作成したばかりだとDialogflowが有効化になっていないので、対応しておきます。
左上の①「ハンバーガーメニュー」から②「APIとサービス」→③「ダッシュボード」とクリックします。

![s102.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154355/ce423064-a814-97df-7b85-3e8ab8af8e3e.png)

「＋APIとサービスの有効化」をクリックします。
![s103.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154355/692c7aee-0ba4-0103-983c-0492be533038.png)

機械学習カテゴリにある「Dialogflow API」をクリックします。

![s104.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154355/ca3c927a-8e92-1d42-663a-6bbeb2db82ef.png)

「有効にする」をクリックします。

![s105.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154355/934c6086-292f-b445-7d62-bd6280b7904c.png)

## 1-3. Agent作成
Dialogflow CXのページに戻って、作成されたプロジェクトをクリックします。

![s106.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154355/ce3ef100-2ac5-688b-4937-c7475e728e64.png)

適当にAgent名を入力して「Save」ボタンをクリックします。タイムゾーンや言語は日本を選択しておきます。

|項目|値|
|:--|:--|
|Agent name| Parrot |
|Time zone| (GMT+9:00) Asia/Tokyo|
|Default language|ja - Japanese|

![s107.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154355/564356c8-1792-b033-c5cd-b7e8c79da24b.png)

# 2. Intent設定

## 2-1. Default Welcome Intent を編集
①Manageタブをクリックして、その中の②Intentsをクリックします。 ③`Default Welcome Intent` をクリックして、Intentを編集します。

![s200.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154355/c6f91e01-63ad-a568-48f2-7e3a07bade2b.png)

Training phrases部分に `any` と入力してEnterキーを押します。
any部分をマウスで選択すると、ポップアップメニューが表示されるので、その中にある `@sys.any` を選択します。設定後 「Save」をクリックします。

`@sys.any` は入力した言葉を全て `any` に保持されます。

![s201.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154355/71c47e54-4011-2df7-160e-e7b97f3c22a1.png)

## 2-2. Startページを編集
①Buildタブをクリック、PAGESにある②Startをクリック、③Default Welcome Intentをクリックします。クリックすると右側からメニューが表示されます。
FulfillmentカテゴリにあるAgent saysに下記を入力して、「Save」ボタンをクリックします。

入力した文字列がsessionのパラメータany変数に格納されます。

```
「$session.params.any」と言ったね
```

![s202.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154355/18bafa2c-a455-16a6-688b-b793d452da54.png)

## 2-3. シミュレーターで確認
右上の ①`Test Agent` をクリックして、シミュレーターを起動します。 ②`Talk to agent` 部分に入力するとメッセージが③オウム返しされます。

![s203.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154355/88253cf1-a92a-9c3f-977c-5354441191d5.png)

# 3. 繰り返し対応
「はい」で引き続きオウム返しを行い、「いいえ」でオウム返しを終了する確認対応を行います。

## 3-1. 継続確認ページを作成
`Transition` カテゴリにある「+ new Page」を選択して、ページ名を「Again」と入力します。（※分かりやすい名前を決めてもOKです）

![s300.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154355/9112b98c-b301-0aae-11f7-60ebcfe033f8.png)

作成された ①`Again` ページをクリック、②`Edit fulfillment` をクリック、Agent saysに「もう一度する？」と入力し、「Save」ボタンをクリックします。

![s301.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154355/c178fc85-342e-ac40-7027-16ccdbfd3ef2.png)

## 3-2. 「はい」「いいえ」 Intentを作成する
①`Intent routes`の「＋」をクリックします。Intentカテゴリから「+ new Intent」を選択します。

![s302.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154355/39b48a5b-6a3a-b2af-c6ea-2f9a5e6bcb3d.png)

Intent nameに「YesIntent」を入力します。Training phrasesに「はい」「もう一度」など継続するための言葉を登録します。設定後に「Save」をクリックします。
（※日本語を入力するとうまく反映されないので、コピペするといけます）

![s303.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154355/8fd89ae3-3ae6-6e16-f42f-b3fceba4fa6e.png)

FulfillmentカテゴリにあるAgent saysに「何か入力してね！」と入力します。

![s304.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154355/6e769727-8f3c-8c06-84af-b977cd965596.png)

Transitionカテゴリに「Start」ページを設定して、「Save」ボタンをクリックします。

続いて「いいえ」に反応するIntentを作成します。「いいえ」「しない」などの言葉を登録します。

![s306.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154355/e1498e03-e4be-c71c-5fc8-8786b4726383.png)

「いいえ」を入力した際に反応する言葉を登録します。FulfillmentカテゴリのAgent saysに「さようなら」と入力します。
![s307.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154355/b1ca6e14-981a-dd20-a417-5cc4f6abc309.png)

「いいえ」の場合`End Session`ページを指定します。これでセッションが全て無くなります。

![s308.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154355/4471e794-0a56-0736-14b7-ac3f72a9fb2b.png)

シミュレーターで確認します。もう一度するかどうか確認されるので、「はい」「いいえ」を入力します。

![s309.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154355/38b19e4d-fdb1-a423-ee20-550a975e39f7.png)

# まとめ
以前紹介した[Actions Builder](https://qiita.com/h-takauma/items/aa3c2e84a8cc1e0d9e33)と非常に似ています。基本的な考え方や作り方は同じでした。一度作成したIntentなどを使い回せる点が良いと思いました。

システム化のご検討やご相談は弊社までお問い合わせください。
https://i-enter.co.jp/contact/