この記事では、最小限の手順でとりあえず動いているように見えるチャットボットをコーディング無しで作ってみます。この記事を書かれていることを行うと、Dialogflow を少し触ってみることができると思います。
お題は、日時と場所を伝えると天気を教えてくれるBot です。
成果物
このチュートリアルを通してできるチャットボットは以下のようなものです。
https://bot.dialogflow.com/d534cccb-773b-429a-8917-8781b40222d8
作成手順
1. Google アカウントの準備とログイン
Google アカウントを作成し、Dialogflow Console にログインします。
2. Agent の作成
Agent とは Dialogflow 内のプロジェクトの単位になります。公式用語集では以下のように定義されています。
A project that you can create in Dialogflow to handle specific conversational experiences; each agent can have its own intent mappings and corresponding fulfillment and entity definitions. Agents can also handle multiple languages, and have versions (for example, "dev" and "prod").
Agent の名前と言語を設定します。ここでは、Agent名をWeather, 言語をJapanese としています。Agent名には日本語は設定できないのようなので、注意します。
CREATE をクリックして、しばらく待つとAgent が作成されます!
3. Intent の作成
Intent とは、会話を通してユーザーが行いたいタスクの単位になります。例えば、「天気を聞く」や「ホテルを予約する」などでしょうか。公式用語集では以下のように定義されています。
A goal or task that users want to do, such as ordering coffee or finding a piece of music. In Actions on Google, this is represented as a unique identifier and the corresponding user queries that can trigger the intent. When using Dialogflow, this refers to the intent mappings you define in your agent.
- 画面左のメニューから Intents をクリック
- 画面上部の CREATE INTENT をクリック
- 画面上部の Intent name に任意の名前を設定し、SAVE をクリック。ここでは、天気 と入れます(日本語でOK)。
- そのままの画面で、少し下にある Training phrases 欄の ADD TRAINING PHRASES をクリック(上の画像にも表示されています)
- テキストボックスが表示されるので、ここでは 今日の島根の天気は? と入力してEnter キーを押します。
- テキストボックス欄の下に先程入力した文字が出てきます。そこで、島根 をドラッグして選択すると、このキーワードが何を表しているかを選択するリストが出てくるので、
@sys.location
を探して、クリックします。 - 同様に、今日 に対して、
@sys.date
を割り当てます。 - 5.-7. をフレーズを変えて何度か行います。語尾の? を消してみたり、日付を指定してみたり、いろいろやってみましょう。
- 画面上のSAVE をクリックします。
4. Response の作成
トレーニングしたフレーズに対して、応答文を作成します。
- 先程と同じ画面の下に行くと Responses という欄があるので、ADD RESPONSE をクリックします。
テキストボックスが表示されるので、以下のように入力します。$ がついているものは、変数として扱われ、Bot でユーザーが入力した値が入ります。ユーザーが入力した文章から変数に入れるワードを切り取るのは、先程のトレーニングをもとにDialogflow がやってくれます。例えば、
$location
には 島根 や 大阪 などが入ります。
同様に曇りや雨のパターンも作ってしまいましょう。複数パターンを入れると、この中からランダムに応答文が決められます。
SAVE をクリックします。
応答文がちゃんと返ってくるかチェックします。画面右上のテキストボックスに、明日の北海道の天気は? などの文を入れてみましょう。先程入力した応答文が返ってきたら成功です。
5. 不足情報を補完する対話を追加
ここまでの設定では、今日の天気は? や 兵庫の天気は? など、「場所」と「日付」のどちらかが欠けていると、ちゃんとした応答が返ってきません。ここでは、足りない情報をBot から聞いてくれるような動作を追加します。
- 先程と同じ画面内の Action and parameters 欄を開きます。
- location, date に対して、REQURED チェックを入れます。
- すると、右側に PROMPTS という列が追加されるので、 Define Prompts をクリックします。
- テキストボックスに、その情報が欠落していたときに問い合わせる文章を入力します。
- date に対しても同様に行います。そして、一旦 SAVE。
- Training phrases で、情報が欠落した場合のトレーニングを何フレーズか行い、 SAVE します。
- 画面右側で 今日の天気は? と入力して、問い合わせが返ってきたら成功です。
5. 公開する
ここで作成したAgent を公開してみます。Dialogflow では、Slack や Google Home などを通して簡単に公開する方法がありますが、今回はシンプルにWebページを使った Demo として公開してみます。
- 画面左のメニューから Integrations をクリック
- Web Demo をクリック
- ポップアップ上部のスイッチを ON にする
- ボットのURLが表示されるので、アクセスしてちゃんと動作すれば完了!
このあと
今回は、date や location など予め準備されているパラメータしか使いませんでしたが、Entity を使用すると開発者側でパラメータの定義を追加することができます。
また、今回はノーコーディングで行い、天気の情報もランダムに返すことしかできませんでしたが、Fulfillment を使って、取得した情報を処理して応答文を作成したりすることもできるみたいです。今回でいうと、Date や Location の情報から実際の天気の情報をどこからか取得する感じでしょうか。
何れにせよ、ここで紹介した機能はごく一部なのでぜひいろいろと触ってみてください。