LoginSignup
14
7

More than 3 years have passed since last update.

はじめに

Dialogflowでどんなことができるか、実際にチャットボットを作って確認してみたいと思います。

Dialogflowの種類

まずDialogflowは2つのエディションがあるので確認します。(2020/12/21時点)

エディション コメント
CX (Customer Experience Edition) 高度なエージェント タイプで、大規模なエージェントや非常に複雑なエージェントに適しているとのこと。料金高め。テキストで月あたり100 チャット セッションあたり $20。日本語未対応。
ES (Essentials Edition) 標準のエージェント タイプ。料金は1 リクエストあたり $0.002。日本語対応している!

今回はESを使います。
エディションの詳細は ドキュメントを参照してください。

何を作るか

「来週月曜に私用で休みます」と伝えると、次の項目を判別してくれるような休暇連絡チャットボットを作ります。

  • 日付
  • 勤怠種類
    • 有給休暇
    • 欠勤(無給休暇)
  • 理由
    • 私用
    • 体調不良

また、ボットがわからなかった項目があればユーザーに聞き返します。

イメージはこのような感じです。
スクリーンショット 2020-12-21 16.49.46.png

Dialogflowで作ってみる

それでは早速作っていきます。

まずエージェントを作成する

Dialogflowを開くとこのような画面が表示されます。
スクリーンショット 2020-12-21 14.03.06.png

Create Agentを押して登録します。DEFAULT LANGUAGEをJapanese - jaにします。

スクリーンショット 2020-12-21 14.03.54.png

エンティティを作成する

次にエンティティと呼ばれる単語辞書を登録していきます。今回は勤怠種類理由がこれにあたります。
ユーザーが「有給」と省略しても「有給休暇」とボットが認識できるように言い換え表現を入れていきます。

Dialogflow > Entities を開いて [CREATE ENTITY] ボタンを押して登録します。

勤怠種類は次のように作りました。

スクリーンショット 2020-09-14 15.58.35.png

理由は次のようにしました。

スクリーンショット 2020-09-14 16.10.31.png

インテントを作成する

インテント(意図)はユーザーの会話を分類する単位です。
今回はユーザーが休暇連絡について話しているか分類できるように登録していきます。

Dialogflow > Intents を開いて、[CREATE INTENT] ボタンで「Day off reporter intent」という名前でインテントを保存します。
Training phrasesの欄に、ユーザーがどのように話しかけてくるかを想像して文章を登録していきます。

スクリーンショット 2020-09-14 15.55.24.png

このとき、さきほど登録したエンティティがマッピングされて色付きでマークされます。
もし意図した単語がマークされていなかったらその単語を選択してエンティティに結びつけてください。

聞き返しを設定する

ボットが理解できない項目があったら、ユーザーにどのように聞き返すかを設定していきます。

  • 日付がわからない場合は「いつですか?」
  • 勤怠種類がわからない場合は「休暇種別はなんですか?(有給休暇、欠勤)」
  • 理由がわからない場合は「理由を教えてください(体調不良、私用)」

と聞き返すように設定していきます。

スクリーンショット 2020-09-14 15.59.30.png

最後にどのように応答するかを設定する

今回は日付勤怠種類理由をボットがどのように理解したかわかるように応答するようにしました。

Dialogflow > Intents でDay off reporter intentを開いて、Responses部分に設定します。

スクリーンショット 2020-09-14 16.07.11.png

テストする

事前に、Integration > Web Demo を有効にして、URLを取得します。

URLを開き、テストします。

screen-recording.gif

正しく動作しているようです。

Dialogflowのその他の機能

Knowledge

Beta版の機能で、csvやhtmlをアップロードしてQAチャットボットが作れるようです。残念ながら現在は日本語には対応していませんでした。日本語対応したらぜひ使ってみたいとおもいます。

複数のIntent

インテントは通常複数作成します。休暇連絡ができたら次は遅刻連絡のインテントを作るといった具合です。今回は試しませんでした。

Fulfillment

外部のAPIを呼び出すことができます。通常ユーザーからリクエストを受けたら他のサービスを更新したくなると思います。今回の例でいうと休暇であることをGoogle Calendarに登録する、Slackのステータスを休暇に変える、勤怠システムに休暇申請を出す、などです。そのような場合に、休暇連絡のIntentと結びつけてFulfillmentを登録します。

さいごに

ここまでコードを書くことなく実現できているのにお気づきでしょうか。Dialogflowを使ってユーザーが投げかけてくる投稿を理解するところまではノーコードで設定できるようです。この先もう一歩進めて、他のシステムに連携する場合は少しコードを書かないといけないですが数行でおさまる範囲なのでちょっとがんばればできそうです。

簡単にチャットボットが作れそうだな、おもしろそうだな、と思ってもらえたらうれしいです。

最後までありがとうございました。

14
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
7