대화형 봇을 구축하는 데 있어 중요한 요소 중 하나는 상황에 맞는 하위 의도를 추가하는 것입니다. 대화 흐름에서 다른 경로를 택하고, 이전에 제공된 엔티티 값을 수정하는 등 다양한 목적을 위해 상황에 맞는 적절한 의도가 필요할 수 있습니다. 컨텍스트 전환 관리 방법에서 컨텍스트 데이터를 중단 처리와 함께 사용하여 봇과 더욱 자연스럽고 인간적인 상호 작용을 실현하는 방법을 살펴보았습니다. 이 기능은 주로 두 의도의 중단 동작을 정의할 수 있도록 합니다. 이 기능을 사용하면 맞춤형 처리 동작으로 상황에 맞는 의도의 동작을 정의하기가 어려울 수 있습니다. 상황별 NLU를 간소화하기 위해 그룹 노드 기능이 의도 범위 지정, 훈련 및 처리 설정으로 향상되었습니다. 자세한 내용은 여기를 참조하세요. 본 방법에서는 맥락 이탈, 입력 값 수정, 상황에 맞는 후속 쿼리를 포함하는 항공편 예약 봇 시나리오를 살펴봅니다. 이 모든 것을 한 곳에서 쉽게 달성할 수 있도록 그룹 노드를 사용하겠습니다.

문제 설명

항공권 티켓 예약 과정 중:

  1. 사용자는 목적지 또는 여행 날짜에 관한 생각을 바꿀 수 있습니다.
  2. 사용자는 예약을 확인하기 전에 항공편 예약 작업의 일부가 아닌 날씨 정보를 확인할 수 있습니다.
  3. 사용자는 예약에 관한 후속 질문을 할 수 있습니다.
  4. 사용자는 작업 취소를 선택할 수 있습니다.

전제 조건

이 방법에서는 다음과 같은 대화 작업과 함께 항공편 세부 정보 봇을 사용합니다.

  1. 항공편 예약 대화는 다음을 수행합니다.
    1. 출발지, 목적지, 여행 날짜 및 웹 체크인 옵션을 사용자에게 알립니다.
    2. 예약 확인 메시지를 표시합니다(간소함을 위해 실제 예약을 위한 서비스 호출은 추가되지 않았습니다).
    3. 사용자에게 추가 지원이 필요한지 확인합니다.
    4. 대화를 종료합니다.

  2. 날씨 보고서 대화는 다음을 수행합니다.
    1. 원하는 위치의 날씨 보고서를 사용자에게 알립니다.
    2. 날씨 보고서 메시지를 표시합니다(간소함을 위해 실제 날씨 조회를 위한 서비스 호출은 추가하지 않았습니다).

구현

엔티티 수정

사용자가 목적지 또는 여행 날짜를 변경하려는 경우를 살펴보겠습니다. 다음은 동일하게 달성하기 위한 단계입니다. 1단계: 하위 의도 범위를 지정하는 노드를 그룹화: 첫 번째 단계는 목적지 및 여행 날짜의 변경을 트리거 하는 하위 의도에 대한 범위를 정의하는 것입니다.

  1. 사용자는 대화 중 실제 예약 전에 언제든지 목적지 또는 여행 날짜를 변경할 수 있어야 하므로 범위는 엔티티 노드가 됩니다. 마우스를 사용하여 그룹 노드를 형성하는 엔티티를 선택합니다.
  2. 그룹 이름을 명명합니다(예: 여행 세부 정보 그룹)

2a단계: 하위 의도 정의, 목적지 및 여행 날짜 변경에 대한 동작 속성을 학습 및 설정합니다. 다음으로 하위 의도를 정의하고 학습을 추가하며, 하위 의도가 식별되어야 하는 조건과 이러한 경우의 봇 동작을 선택적으로 설정해야 합니다. 먼저 목적지 및 여행 날짜를 변경할 수 있는 경우를 생각해 봅시다.

  1. 엔티티 그룹 화면에서 의도 추가 버튼을 클릭
    1. 여행 날짜 및 목적지 변경을 허용하기 위한 의도 생성
      • 의도 이름을 입력(예: 날짜 및 목적지 변경)
      • 설명을 입력합니다.
    2. 학습기계 학습 옵션을 사용하여 이러한 의도를 파악할 수 있는 사용자 발화까지 학습해보도록 하겠습니다.
      • 발화 추가(예: “다른 날짜 및 목적지를 시도해 봅시다“)
      • 선택적으로 다른 발화를 추가(예: “생각이 바뀌었네요. 다시 시작합시다.“)
      • 이 발화의 하위 의도를 학습

    3. 목적지 및 여행 날짜 값 재설정:
      • 처리컨텍스트 변수 설정 옵션에서 다음 키-값 쌍을 사용하여 목적지 도시 및 이동 날짜를 재설정합니다:
        context.entities.To null
        context.entities.When null
    4. 선택적으로 사용자에게 변경 사항에 대한 메시지 표시를 합니다.(예: “좋습니다. 처음부터 다시 시작합니다.”)
    5. 전환 흐름 아래에서 노드로 이동 옵션을 사용하여 흐름을 출발지 엔티티 노드로 다시 가져갑니다 시작 엔티티 값이 변경되지 않았기 때문에 흐름이 다음 엔티티로 이동하고 목적지 및 시간으로 이동합니다

2b단계: NER 학습과 함께 목적지 변경에 대한 하위 의도를 정의하고, 학습하고, 행동 속성을 설정합니다 원래 엔티티 값을 변경하는 위의 활용 사례를 계속 사용하면 사용자가 자신의 발화에서 변경 사항을 지정할 수 있습니다. 사용자가 사용자의 발화에서 목적지의 변경을 나타내는 경우를 생각해 보세요.

  1. 의도 추가 버튼을 클릭하여 새 하위 의도 추가
    1. 목적지 변경을 허용하기 위한 의도 생성
      • 의도 이름 입력(예: 목적지 변경)
      • 설명을 입력합니다.
    2. 학습기계 학습 옵션을 사용하여 이러한 의도를 파악할 수 있는 사용자 발화까지 학습해보도록 하겠습니다.
      • 발화 추가(예: “대신 시카고로 갑시다“)
      • NER 접근 방식을 사용하여, 발화 내 목적지 엔티티에 주석을 답니다.
      • 이 발화의 하위 의도를 학습

    3. 목적지 값을 캡처된 값으로 설정합니다. 이 값은 컨텍스트 객체에서 identifiedSubIntents 배열로 저장됩니다. 가장 최근에 식별된 하위 의도는 항상 배열의 0번째 인덱스에 저장됩니다.
      • 처리컨텍스트 변수 설정 옵션에서 다음 키-값 쌍을 사용하여 목적지를 설정합니다:
        context.entities.To context.identifiedSubIntents[0].entities.To
    4. 선택적으로 사용자에게 메시지 표시 (예: “목적지를 {{context.identifiedSubIntents[0].entities.To}}로 변경“)
    5. 전환 흐름 아래에서 노드로 이동 옵션을 사용하여 흐름을 출발지 엔티티 노드로 다시 가져갑니다

봇 테스트하기

  1. 봇과 대화 옵션을 사용하여 봇을 테스트합니다.
  2. 다양한 수정 시나리오를 시도해 보고 봇 응답을 확인하세요

맥락 이탈

대화는 선형 방식으로 일어나지 않습니다. 사용자는 주요 의도에서 이탈한 후 다시 돌아올 수 있습니다. 그룹을 사용하여 이를 달성하기 위한 단계를 살펴보겠습니다. 항공편을 예약하는 동안 사용자는 여행 날짜를 확정하기 전에 목적지 도시의 날씨를 확인하길 원할 수 있습니다. 봇이 여행 날짜 입력을 기다리는 동안 “내일 XYZ 도시의 날씨는 어떠냐“라는 질문을 할 수 있습니다. 이러한 경우, 사용자에게 날짜를 다시 묻는 메시지가 표시되기 전에 날씨 정보가 사용자에게 표시되어야 합니다. 위의 엔티티 수정 사례와 마찬가지로 날씨 보고서 대화의 범위를 설정하고 동작을 학습하고 설정하는 단계가 있습니다.

  1. 날씨 보고서와 관련된 쿼리의 범위는 실제 예약 이전이므로 엔티티 사용 사례 수정에 사용된 같은 엔티티 그룹을 사용합니다.
  2. 대화 작업 노드를 추가하여 현재 대화에서 날씨 보고서 대화 상자를 실행합니다. : 날씨 보고서 대화 작업을 기존 노드에 추가한 다음 연결에서 제거하여 다른 노드에 연결되지 않은 플로팅 노드로 만듭니다.
  3. 이 작업에는 입력값대로 위치가 필요하며 이 경우 사용자가 입력한 목적지 도시로 설정될 수 있습니다.
  4. 이 대화에 대한 연결 규칙이 출발지 엔티티로 다시 루프 백해야 합니다. 이렇게 하면 사용자가 원래 대화 흐름에서 그대로 둔 위치에서 다시 시작할 수 있습니다.
  5. 엔티티 그룹 설정 대화 상자에서
    1. 신규 추가 의도
    2. 의도 선택 드롭다운에서 날씨 보고서 선택
    3. 학습은 날씨 보고서 대화의 학습 발화, 패턴 및 규칙으로 입력됩니다. 이 목록에 추가할 수 있지만 이는 일반적인 학습 데이터이며 날씨 보고서가 사용되는 모든 인스턴스에 영향을 줄 수 있습니다.
    4. 전환 흐름노드로 이동으로 설정되어 있고 Weather_Report 노드가 선택되어 있는지 확인합니다.
  6. 봇과 대화를 사용하여 시나리오를 테스트합니다.

상황에 맞는 FAQ

그룹 노드를 사용하여 상황에 맞는 쿼리에 응답할 수도 있습니다. 사용자가 예약을 완료한 후 탑승수속 프로세스에 대해 문의할 수 있습니다. 입력 값 수정, 맥락 이탈(범위 지정, 교육 및 동작 정의)과 동일한 단계를 통해 이러한 작업을 수행할 수 있습니다:

  1. 지금 범위는 예약 확인 후이기 때문에, 노드 예약 후 절차를 그룹화하겠습니다.
    • 그룹을 명명합니다(예: 쿼리 그룹)
    • 설명 을 입력합니다

  2. 쿼리 그룹 설정 대화에서 새 의도 추가
    1. 사용자의 쿼리를 허용하기 위한 의도 생성
      1. 의도 이름 입력(예: 체크인 쿼리)
      2. 설명을 입력합니다.
    2. 학습기계 학습 옵션을 사용하여 이러한 의도를 파악할 수 있는 사용자 발화까지 학습해보도록 하겠습니다.
      1. 발화 추가(예: “공항에서 몇 시에 보고해야 합니까?)
      2. 선택적으로 다른 발화 추가(예: “체크인 시간은 언제입니까?)”
      3. 이 발화의 하위 의도를 학습

       

    3. 메시지 표시를 사용하여 사용자에게 응답(예: “웹 체크인을 선택했으므로 항공편 이륙하기 30분 전에 신고해야 합니다“)
    4. 전환 흐름대화 재개로 설정되어 있는지 확인

     

  3. 봇과 대화옵션을 사용하여 시나리오를 위해 테스트합니다.

Leave a Reply

Your email address will not be published. Required fields are marked *

Fill out this field
Fill out this field
Please enter a valid email address.
You need to agree with the terms to proceed

文脈的に関連するサブインテントを追加することは、会話型ボットを構築する上で重要な要素の1つです。文脈的に関連するインテントは、ダイアログフローの中で異なるパスを利用して、過去に提供されたエンティティ値を修正するなど、さまざまな目的で必要となります。

コンテクスト切り替えの管理方法では、より自然で人間らしいボットとの対話を実現するために、コンテクストデータの割り込み処理と組み合わせて使用する方法を見てきました。
この機能の主な目的は、任意の2つのインテント間の割り込み動作を定義することです。
この機能を使用して、カスタムフルフィルメント動作を持つコンテクストに関連するインテントの動作を定義することは困難です。

コンテクストNLUを簡素化する目的で、グループノードの機能が強化され、インテントのスコープ、トレーニング、フルフィルメントの設定が可能になりました。詳細はこちらをご覧ください

この手引きでは、余談、入力値の修正、文脈に沿ったフォローアップの質問等を含むフライト予約ボットのシナリオを探ります。グループノードを使用して、これらすべてを簡単かつ一か所から実現していきます。

問題点

航空券を予約する過程で、ユーザーが

  1. 目的地や日程を変更する場合、
  2. 予約を確定する前に、フライト予約タスクに含まれていない気象情報を確認したい場合
  3. 予約に関して質問がある場合
  4. タスクをキャンセルする場合

前提条件

この手引きでは、以下のダイアログタスクを使用するフライト詳細ボットを使用します。

  1. フライト予約ダイアログ
    1. 出発地、目的地、日程、オンラインチェックインのオプションの入力をユーザーに促す
    2. 予約確認メッセージを表示する(わかりやすくするため、実際に予約を行うためのサービスコールは追加していません)
    3. ユーザーがさらにサポートを必要としているかどうかを確認する
    4. 会話を終了する

  2. 天気予報ダイアログ
    1. 天気予報を知りたい場所をユーザに尋ねる
    2. 天気予報のメッセージを表示する(わかりやすくするため、実際の天気予報を検索するサービスコールは追加していません)

実装

エンティティの変更

ここでは、ユーザーが目的地や日程を変更する場合を想定します。
以下は、そのための手順です。

ステップ1: サブインテントのスコーピングのため、ノードをグループ化します。

最初のステップは、目的地と日程の変更を引き起こすサブインテントのスコープを定義することです。

  1. ユーザーは、会話中にいつでも目的地や日程を変更できる必要がありますが、実際は予約の前に変更されなければならないため、範囲はエンティティノードになります。
    マウスを使って、グループノードを形成するエンティティを選択します。
  2. グループに名前を付けます。たとえば、旅行の詳細グループとします

ステップ2a: サブインテントを定義し、目的地と日程の変更に対する動作をトレーニングしてプロパティを設定する

次に、サブインテントを定義し、トレーニングを追加し、オプションとして、サブインテントが特定されるべき条件と、その場合のボットの動作を設定する必要があります。

まず、目的地と日程の変更を可能にする場合を考えてみましょう。

  1. エンティティグループウィンドウからインテントの追加ボタンをクリックします
    1. 日程と目的地の変更を許可するインテントを作成します
      • インテントの名前「変更日および変更先」のように入力します
      • 説明を入力します
    2. 「トレーニング」「機械学習」オプションを使用して、このインテントを特定できるようユーザーの発話でトレーニングしてみましょう
      • 別の日付と目的地を試してみましょう」というように、発話を追加します
      • 気が変わったから、もう一度やり直そう」というように、オプションで別の発話を追加します
      • この発話のサブインテントをトレーニングします。

    3. 目的地と日程をリセットする
      • 「フルフィルメント」「コンテクストの変数を設定する」オプションで、以下のキー/値ペアを使用して、目的地の都市と日程をリセットします。

        キー
        context.entities.To null
        context.entities.When null
    4. オプションで、変更について「分かりました、最初からやり直しましょう」というように、メッセージをユーザーに提示します
    5. 「切り替えフロー」「ノードへ移動」オプションを使用して、フローを「Fromエンティティノード」に戻します。
      Fromエンティティの値は変更されていないので、フローは次のエンティティToWhenに移動します。

ステップ2b: NERのトレーニングと一緒に、目的地変更のためのサブインテントの定義、トレーニング、動作プロパティの設定を行います

元のエンティティ値を変更するという上記の使用例の続きとして、ユーザーが自分の発話の中で変更を指定する場合があります。ここでは、ユーザが発話の中で目的地の変更を指示する場合を想定します。

  1. 「インテントの追加」ボタンをクリックすると、新しいサブインテントが追加されます。
    1. 目的地の変更を許可するインテントの作成
      • インテントの名前「目的地を変更する」のように入力します
      • 説明を入力します
    2. 「トレーニング」「機械学習」オプションを使用して、このインテントを特定できるようユーザーの発話でトレーニングしてみましょう
      • 代わりにシカゴへ行きましょう 」という発話を追加します
      • NERアプローチを使用して、発話中のToエンティティに注釈を付けます。
      • この発話のためのサブインテントをトレーニングします。

    3. キャプチャした値に目的地の値を設定します。この値は、コンテクストオブジェクトの identifiedSubIntents 配列として格納されます。なお、特定された最新のサブインテントは、常に配列の0番目のインデックスに格納されます。
      • 「フルフィルメント」「コンテクストの変数を設定する」オプションで、以下のキーと値のペアを使用して宛先の都市を設定します:
        キー
        context.entities.To context.identifiedSubIntents[0].entities.To
    4. 「目的地を{{context.identifiedSubIntents[0].entities.To}}へ変更します」というように、オプションでユーザにメッセージを表示することができます
    5. 「切り替えフロー」「ノードへ移動」オプションを使用して、フローを「Fromエンティティノード」に戻します。

ボットのテスト

  1. 「ボットと話す」オプションを使用して、ボットをテストします。
  2. さまざまな修正シナリオを試して、ボットの反応を見ます

文脈上の脱線

会話は決して直線的に起こるものではありません。ユーザーは会話が脱線しても話を戻すでしょう。
これを実現するために、グループを使った手順を見てみましょう。

飛行機を予約する際、ユーザーは日程を決定する前に目的地の天気を確認したいと思うかもしれません。ボットが日程の入力を待っている間に、「明日のXYZ市の天気はどうですか」と質問するかもしれません。このような場合、ユーザーは日付の再入力を求められる前に、天気情報を表示する必要があります。
上記のエンティティを修正する場合と同様に、手順としては、天気予報ダイアログの範囲を設定し、トレーニングを行い、動作を設定します。

  1. 天気予報に関連するクエリの範囲は、実際の予約の前の時点であるため、「エンティティの修正」の事例で使用したのと同じエンティティグループを使用します。
  2. ダイアログノードを追加して、現在のダイアログから天気予報ダイアログを実行します。
    ヒント: 既存のノードに天気予報ダイアログタスクを追加してから、接続から外し、他のノードに接続されていないフローティングノードにします。
  3. このタスクは位置情報の入力を必要とし、今回の場合は、ユーザーが入力した目的地の都市に設定することができます。
  4. このダイアログの接続ルールは、Fromエンティティにループバックする必要があります。これにより、ユーザーは元の会話の流れの中で中断したところから再開することができます。
  5. エンティティグループの設定ダイアログから
    1. インテントを新規に追加
    2. 「インテントの選択」のドロップダウンから「天気予報」を選択します。
    3. トレーニングは、天気予報ダイアログの発話、パターン、およびルールのトレーニングから入力されます。このリストに追加することもできますが、これは共通のトレーニングデータであり、天気予報が使用されるすべての事例に影響することに注意してください。
    4. 「切り替えフロー」「ノードへ移動」に設定されており、Weather_Reportノードが選択されていることを確認します。
  6. 「ボットと話す」を使用して、シナリオをテストします。

コンテクストに関するよくあるご質問

グループノードは、コンテクストの質問に答えるためにも使用できます。

ユーザーは、予約完了後のチェックインプロセスに関する問い合わせをするかもしれません。
その確認手順は入力値の修正、文脈的な脱線 – スコーピング、トレーニング、動作の定義と同じです。

  1. ここでは予約確定後を対象としているため、予約後の手続きのノードをまとめます
    • グループに名前を付けます。たとえば、問い合わせグループとします
    • 説明を入力します

  2. 問い合わせグループの設定ダイアログから、新しいインテントの追加を選択します
    1. ユーザーからの問い合わせを許可するインテントの作成をクリックします
      1. インテントの名前「チェックインに関する問い合わせ」と入力します
      2. 説明を入力します
    2. 「トレーニング」「機械学習」オプションを使用して、このインテントを特定できるようユーザーの発話でトレーニングしてみましょう
      1. 空港には何時に到着すればいいですか」 という発話を追加します
      2. オプションで、「チェックインの時間は?」という別の発話を追加します
      3. この発話のためのサブインテントをトレーニングします。

    3. 「メッセージの表示」を使って、「オンラインチェックインをご利用になりましたので、出発の30分前までにお越しください」などと、ユーザーに答えます
    4. 「切り替えフロー」「ダイアログを再開」に設定されていることを確認します

  3. 「ボットと話す」オプションを使用して、シナリオをテストします。

Leave a Reply

Your email address will not be published. Required fields are marked *

Fill out this field
Fill out this field
Please enter a valid email address.
You need to agree with the terms to proceed

Adding contextually relevant sub-intents is one of the important elements in building conversational bots. Contextually relevant intents could be required for various purposes like taking a different path in the dialog flow, amending previously provided entity values, etc.

We have seen how to use the contextual data in combination with the interruption handling to achieve a more natural and human-like interaction with the bot in How to Manage Context Switching. This feature primarily aims to let you define the interruption behavior across any two intents. Defining behavior for contextual relevant intents with custom fulfillment behavior can be difficult using this feature.

With the objective of simplifying the contextual NLU, the Group node functionality has been enhanced with intent scoping, training, and fulfillment configuration, refer here for details.

In this How-To, we will explore a scenario in a Flight Booking Bot which includes digressions, amending input values, and contextual follow-ups queries. We will be using the Group Node to achieve all this easily and from a single place.

Problem Statement

During the course of booking a flight ticket:

  1. the user might change their mind regarding the destination, and/or the travel date;
  2. the user might want to check for weather information, that is not part of the book flight task, before confirming the booking;
  3. the user might have a follow-up question regarding their booking;
  4. the user may choose to cancel the task.

Prerequisites

In this how-to, we are using a Flight Details bot with the following dialog tasks

  1. Book Flight dialog which
    1. prompts the user for source, destination, date of travel, and web check-in options;
    2. display a booking confirmation message (for simplicity we have not added the service call to do the actual booking);
    3. check if the user needs any further assistance;
    4. end the conversation.

  2. Weather Report dialog which
    1. prompts the user for the location they want the weather report;
    2. display the weather report message (for simplicity we have not added the service call to do the actual weather lookup);

Implementation

Amend Entities

Let us look at the case where the user might want to change the destination and/or travel date.
Following are the steps to achieve the same:

Step 1: Group the nodes for sub-intent scoping:

The first step would be to define the scope for the sub-intent which would trigger changes to the destination and travel date.

  1. The user should be able to change the destination or the travel date any time during the conversation but before the actual booking, hence the scope would be entity nodes.
    Using the mouse, select the entities forming a Group Node.
  2. Name the Group, say Travel Details Group

Step 2a: Define sub-intents, train and set behavior properties for destination and travel date changes

Next, we need to define the sub-intents, add training, and optionally set the conditions when the sub-intent should be identified, and the bot behavior in such a case.

Let us first consider the case of enabling changes to destination and travel date:

  1. From the Entity Group window, click the Add Intent button
    1. Create Intent for allowing a change in travel date and destination
      • Enter a name for the intent, say Change Date and Destination
      • Enter a description
    2. Using the Machine Learning option under Training, let us train with user utterance that would identify this intent
      • Add an utterance, say “Let’s try a different date and destination
      • Optionally add another utterance, say “I have changed my mind, let’s start over again
      • Train the sub-intent for this utterance

    3. Reset the destination and travel date values:
      • In the Set Context Variables option under Fulfillment reset the destination city and the travel date using the following key-value pairing:
        Key Value
        context.entities.To null
        context.entities.When null
    4. Optionally Present a Message to the user regarding the changes, say “Alright, starting all over again”
    5. Under Transition Flow, take the flow back to the From entity node using the Jump To A Node option. Since the From entity value is not changed, the flow would go to the next entity To and When

Step 2b: Define sub-intents, train and set behavior properties for destination changes along with NER training

Continuing with the above use case of changing original entity values, chances are users would be specifying the changes in their utterance. Consider the case where the user indicates the change in the destination in their utterance.

  1. Click the Add Intent button to add a new sub-intent
    1. Create Intent for allowing a change in destination
      • Enter a name for the intent, say Change Destination
      • Enter a description
    2. Using the Machine Learning option under Training, let us train with user utterance that would identify this intent
      • Add an utterance, say “Instead let’s go to Chicago
      • Using the NER approach, annotate the To entity in the utterance.
      • Train the sub-intent for this utterance

    3. Set the destination values to the captured value. This value is stored as an identifiedSubIntents array in the context object. Note that the latest identified sub-intent is always stored at the 0th index of the array.
      • In the Set Context Variables option under Fulfillment set the destination city using the following key-value pairing:
        Key Value
        context.entities.To context.identifiedSubIntents[0].entities.To
    4. Optionally Present a Message to the user, say “Changing destination to {{context.identifiedSubIntents[0].entities.To}}”
    5. Under Transition Flow, take the flow back to the From entity node using the Jump To A Node option.

Test the bot

  1. Using the Talk to Bot option test the bot
  2. Try the various amend scenarios and see the bot response

Contextual Digression

Conversations never happen in a linear fashion. Users might digress from the main intent and then come back to it.
Let us look at the steps in achieving this using Group.

While booking a flight, users might want to check the weather at the destination city before committing to the date of travel. They might ask “What is the weather like at XYZ city tomorrow” while the bot is waiting on the travel date input. In such a case, the user should be presented with the weather information before being re-prompted for the date.
Same as the above Amend Entity case, the steps would be to set the scope for the Weather Report dialog, train, and set the behavior.

  1. Since the scope for a query related to Weather Report would be anytime before the actual booking, we will go with the same Entity Group used for the Amend Entity use case.
  2. Add a Dialog Task node to run the Weather Report dialog from the current dialog.
    Tip: Add Weather Report Dialog task to an existing node and then remove it from the connection, making it a floating node – not connected to any other node.
  3. This task needs location as input and in our case, it can be set to the destination city entered by the user.
  4. The connection rule for this dialog should loop back to the From entity. This would ensure that the user resumes from where he left in the original conversation flow.
  5. From the Entity Group settings dialog
    1. Add New intent
    2. Select Weather Report from the Choose Intent drop-down
    3. Training is populated from the Weather Report dialog training utterances, patterns, and rules. You can add to this list, but be aware that this would be common training data and would affect all the instances where Weather Report is used.
    4. Ensure that the Transition Flow is set to Jump to a Node and the Weather_Report node is selected
  6. Using Talk to Bot test the scenario

Contextual FAQ

Group nodes can also be used to answer contextual queries.

A user might have a query regarding the check-in process after completing the booking.
Let us see how that can be achieved, the steps are the same as amending input values, contextual digression – scoping, training and behavior definition:

  1. Since the scope now would be after booking confirmation, we will group the nodes post-booking formalities
    • Name the group, say Query Group
    • Enter a Description

  2. From the Query Group settings dialog, Add New intent
    1. Create Intent for allowing a query from user
      1. Enter a name for the intent, say Checkin Query
      2. Enter a description
    2. Using the Machine Learning option under Training, let us train with user utterance that would identify this intent
      1. Add an utterance, say “What time should I report at the airport?
      2. Optionally add another utterance, say “What is the check in time?
      3. Train the sub-intent for this utterance

       

    3. Use the Present a Message entry to answer the user, say “Since you have opted for web-check-in, you need to report 30mins before flight take-off
    4. Ensure that the Transition Flow is set to Resume the Dialog

     

  3. Using Talk to Bot option, test for the scenario.

Leave a Reply

Your email address will not be published. Required fields are marked *

Fill out this field
Fill out this field
Please enter a valid email address.
You need to agree with the terms to proceed