Dialogbotでの人間の音声を理解するチャットボット

Dialogflowサービスでの私の経験を共有し、あまり明らかでないことについて話をしたいと思います。
画像
Dialogflowは、さまざまなプラットフォーム言語のチャットボットをさまざまなデバイスで作成できるサービスです

このサービスは完全に無料で使用できますので、時間を無駄にせず仕事を始められます。

この記事では、ストア内のユーザーから注文を受け取る簡単なボットの作成方法を説明します。

ステップ0。タスク


ボットは、名前、都市、住所の3つのパラメーターで構成されるユーザーからの要求を受け入れる必要があります。 同時に、ユーザーがこれらのパラメーターのいずれかを以前に言及した場合-コンテキスト内でそれを覚えておいてください。

ステップ1.初期セットアップ


まず、新しいエージェントを登録して作成する必要があります。




エージェントを作成した後、「統合」タブに移動して、必要なプラットフォームを接続します。



この段階では、ボットはすでに実行されており、ユーザーと通信できます。 次に、フレーズを正しく理解するように彼に教える必要があります。

ステップ2.予定を作成する


宛先は、ユーザーからの特定のリクエストのハンドラーです。
[インテント]タブに移動します。 エージェントを作成すると、次の2つの標準宛先が作成されます。

  1. デフォルトのウェルカムインテント -ユーザーへの挨拶を開始(ウェルカム応答を送信)
  2. デフォルトのフォールバックインテント -他の宛先がどれも適切でない場合に起動されます。 ユーザーが理解できないというメッセージを送信します(「この最後のフレーズは私には明確ではありません」、「自分の考えを異なるように表現してみてください」など)。

さらに、以下を実装します。ユーザーがボットに挨拶するとき、彼は将来これを使用するために彼の名前と住所を尋ねます。

ユーザーの質問を挨拶に追加する


「デフォルトのウェルカムインテント」を開きます。 ここにはいくつかのセクションがあります。


「イベント」セクションに注意してください。1つのサービスイベント「WELCOME」がここに示されています。
割り当ては、ユーザーテキストへの反応として、またはイベントによって、2つの方法で起動できます。

この場合、「デフォルトのウェルカムインテント」の予約は、ユーザーからのテキストではなく、WELCOMEサービスイベントに応答します。 たとえば、Telegramの場合、これは/ startコマンドでボットを開始しています。 イベントの詳細

したがって、「応答」セクションを検討してください。 以下は、ユーザーへの応答として送信されるメッセージです。 各メッセージは複数の行で構成できます。 各行は個別のメッセージです。 これらのオプションのいずれかが回答に選択されます。 そして、それらが多いほど、ボットが繰り返される頻度は少なくなります。

ここに自分自身について話すように求めるメッセージを追加します。



応答


次に、後続のメッセージに応答する割り当てを作成します。
[インテント]タブで、カーソルを[デフォルトのウェルカムインテント]に移動し、[フォローアップインテントを追加]をクリックします。 ドロップダウンリストでは、いくつかの事前定義されたオプションが提供されます。 彼らは私たちに興味がない-私たちは「カスタム」を選択します

「ユーザーの声」セクションに進み、ユーザーからのメッセージオプションを追加します。

次に、これらのメッセージに必要なデータを示す必要があります。 これを行うには、テキストを選択し、ドロップダウンメニューでデータタイプを選択します。 Dialogflowには、特に名前と住所用の事前定義されたタイプがいくつかあります。 ただし、独自に作成できます。 詳細

「アクション」セクションに注意してください。 この宛先が収集するすべてのパラメーターは次のとおりです。 テキストメッセージにマークを付けたパラメーターは自動的にインポートされました。


必須パラメーターとしてユーザー名を示します。 パラメーター名を「given-name」から「name」に変更して、利便性を高めます。 そして、「プロンプト」の列に、「あなたの名前は何ですか?」という質問を示します。 現在、「名前」は必須パラメーターであるため、メッセージにこのパラメーターがない場合、「プロンプト」の質問の1つがユーザーに送信され、名前が取得されます。

最後に、Responseセクションでユーザーに応答を追加します。



コンテキストを操作する


各宛先はインバウンドコンテキストで動作し、 アウトバウンドコンテキスト作成できます。

宛先にインバウンドコンテキストがある場合、そのコンテキストが存在する場合にのみ宛先がトリガーされます。 宛先にアウトバウンドコンテキストがある場合、宛先が作成され、収集されたすべてのデータがそこに書き込まれます。

順番に考えてみましょう:

デフォルトのウェルカムインテント -受信コンテキストはありません。 したがって、割り当てはすべての要求に対して開始できます。 割り当てにより、新しい空のコンテキスト「DefaultWelcomeIntent-followup」が作成されます(自動的に追加されます)。

デフォルトのウェルカムインテント-カスタム -受信コンテキスト「DefaultWelcomeIntent-followup」があります(自動的に追加されます)。 この割り当ては、このコンテキストが存在する場合(ユーザーが迎えられた場合)にのみトリガーできます。 発信コンテキストはまだありません。

「デフォルトのウェルカムインテント-カスタム」の発信コンテキストを「UserData」という名前で追加します。 これで、ユーザーが挨拶の後に自己紹介をすると、ユーザーに関する情報が新しい「UserData」コンテキストに記録されます。

ユーザー注文


発信「UserData」コンテキストで新しい「Order」割り当てを作成します。 この割り当てはいつでも開始でき、「UserData」のコンテキストを変更できます。
注文テキストには、名前、市区町村、住所が必要です。

フレーズを追加してマークアップします。 すべてのパラメーターを複製しますが、今回はすべてを必須としてマークします。



既知のデータを使用する


私たちの目的は、「UserData」コンテキストがない場合と存在する場合の両方で機能します。 最初のケースでは、ボットはユーザーにすべての欠落データを尋ねます。 そして第二に、彼はすでに知られているものを使用する必要があります。

これを行うには:


これで、ユーザーが以前に自己紹介した場合(名前がUserDataコンテキストに格納されている場合)、注文時に名前が自動的に置き換えられます。 そうでない場合、ボットはユーザーに名前を尋ねます。

注文確認を含む応答を追加します。 答えでは、パラメーターを使用できます。 詳細



作業結果


ボットの結果は、以下のスクリーンショットに示されています。 Telegramで彼とチャットできます@sample_ShopBotまたはWeb Demo



しばらくすると、コンテキストがリセットされます。 最初の連絡後、ボットは名前と配送先住所を尋ねます。 そしてコンテキストを再度設定します。



おわりに


したがって、Dialogflowはユーザーに関する情報のコレクション、注文を受け取り、完成した結果のみをサービスに送信します。 サーバーへのWebHookの送信を構成しサーバーが応答して配信を実装します。 詳細

参照資料


Webデモ
チャットボット
ドキュメント

Source: https://habr.com/ru/post/J342762/


All Articles