ユーザー体験を向上させるため、場合によっては、いつもとは違ったやり方でバーチャルアシスタントのフローを制御したいこともあります。
以下のようなシナリオを考えてみましょう。

  1. NLPエンジンは、ユーザーの発話に基づいてインテントを特定したのかもしれません。しかし、バックエンドシステムやSDKが設置されているWebページなどの外部情報から得られた追加情報に基づいて、別のタスクが適している場合もあります。
  2. たとえば、フライト予約のバーチャルアシスタントでは、ウェルカムメッセージの一部として、現在進行中のお得な取引情報をユーザーに提供します。ユーザーの選択に基づいて、ユーザーに提示された取引情報から出発地、目的地、旅行などの旅行詳細情報を事前に入力することで、「フライトの予約」タスクをプログラムで呼び出すことができます。

Kore.aiは、nlMetaデータを利用してプログラム的に仮想アシスタントに情報を渡す方法を提供しています。これは、BotKit SDK、Widget SDK、およびWeb SDKで使用され、必要に応じて、エンティティ値および他のタスク設定とともにトリガーされるインテントなどの情報を渡すことができます。

nlMeta

nlMeta は、ボットに情報を渡すために使用できるオブジェクトです。ボットは、他の情報を解読しようとする前に、この情報を使用してそこに指定されたインテントを実行します。

サンプル

以下は、 nlMeta オブジェクトにどのように入力する必要があるかに関するサンプルです。

      'nlMeta': {
            'intent': '<intent_name>',  
            'childBotName': '<child_bot_name>',
            'isRefresh': <true/false>, 
            'entities': {      
			'<entity1_value>': value1,
                        '<entity2_value>': value2,
			},
      	    'interruptionOptions': {
               'hr': {
                 'h': 1;
                 'r': 1;
                 'nn': true
                }
              }
      }

パラメータ

このオブジェクトで使用できるパラメータは以下のとおりです。

パラメータ 説明
nlMeta ボット用の自然言語情報のためのオブジェクト
インテント ボットがトリガーする必要のあるサードパーティによって特定されたインテント
childBotName(ユニバーサルボットの場合) ユニバーサルボットの場合にのみ使用され、トリガーする子ボットのインテントを特定します。これは、子ボットからのウィジェットをユニバーサルボットパネルで使用する際にも必要です。
エンティティ トリガーとなるインテントが必要とするエンティティとバリューのペアを持つオブジェクト
isRefresh
  • 現在のタスクを終了し、次のタスクの実行を開始する場合は、trueに設定します。
  • 設定されていない場合、またはfalseに設定されている場合、着信したタスクは一時停止と再開の設定に従って実行されます。
interruptionOptions

ボットがこのnlMeta情報を受け取ったときに何らかのタスクが進行中の場合、中断の動作を示すために、値は以下が可能:

  • discardAll – 現在のタスクと前のタスクがあれば、それらを破棄します。
  • hr – 一時停止と再開のオプションについて
    h

    一時停止オプションについては、以下のようなオプションがあります。

    • 1 – 「現在のタスクを保持し、新しいタスクが完了したら元に戻す」
    • 2 – 「現在のタスクを破棄し、新しいタスクに切り替える」
    • 3 – 「ユーザーに何も通知せず新しいタスクに切り替え、現在のタスクを破棄する」
    • 4 – 「現在のタスクを継続し、新しいタスクをフォローアップタスクリストに追加する」
    • 5 – 「エンドユーザーが動作を選択できるようにする」
    r

    再開オプションについては、以下のようなオプションがあります。

    • 1 – 「保留中のタスクを再開する前に、ユーザーに確認を取る」
    • 2 – 「保留中のタスクが再開されたことをメッセージでユーザーに通知する」
    • 3 – 「ユーザーに特定のメッセージを出さずに保留タスクを再開する」
    nn

    neverNotify – ユーザーへの通知

    • True – タスクが単一の応答で終了した場合、ユーザーに特定のメッセージを表示せずに、常に保留タスクを再開します。
    • False – ユーザーに知らせます

リクエストされたタスクが見つからなかった場合、ボットは「会話をリクエストされたダイアログタスクは利用できません」という標準的な応答を返します。

使用状況

前述の通り、BotKit SDKおよびWeb/ウィジェットSDKを介して、nlMetaを入力し、バーチャルアシスタントに送信することができます。実現方法を以下の図に示します。

  • BotKit SDKmetaInfoオブジェクトの一部として。
    data.metaInfo = {
          'nlMeta': {
                'intent': 'Authenticate User', 
                'isRefresh': true, 
        	     'entities': {
    		"Name": "John"
    		},
     	    'interruptionOptions': 'discardAll'
          }
    }
  • Web SDK – nlMeta情報は、sendMessage関数を使用してパラメータとして送信することができます。この関数は chatWindow.jsファイルの中にあります。nlMetaデータが以下のように消費される必要がある場合、条件を追加します。
    if(_this.text() == “Existing”){
    me.sendMessage(_this, attachmentinfo, {'nlMeta': {
                'intent': 'Authenticate User'}}); 
    }
        	else{
    		me.sendMessage(_this, attachmentinfo);
    		}

    上記の例では、テキストフィールドに「既存」という値が含まれている場合、認証ユーザーインテントがトリガーされます。

  • Widget SDK – nlMeta 情報は、ボタン、メニュー、リストなどのさまざまなテンプレートのペイロードの一環として送信することができます。詳細はこちらをご覧ください

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. NLP 엔진은 사용자의 발화에 따라 의도를 식별했을 수 있습니다. 그러나 백엔드 시스템 또는 SDK가 호스팅 되는 웹 페이지에서 수집된 추가 정보 또는 기타 외부 정보에 따른 다른 작업이 더 적합할 수 있습니다.
  2. 환영 메시지의 일부로 진행 중인 최상의 거래를 사용하여 사용자를 맞이하는 항공편 예약 가상 비서를 생각해 봅시다. 사용자 선택에 따라 사용자에게 표시된 거래 정보에서 출발 도시, 도착 도시, 여행 등과 같은 여행 세부 정보를 미리 입력하여 '항공편 예약' 작업을 프로그래밍 방식으로 호출할 수 있습니다.

Kore.ai는 nlMeta 데이터를 사용하여 프로그래밍 방식으로 가상 비서에게 정보를 전달하는 방법을 제공합니다. 이 정보는 BotKit SDK, Widget SDK 및 Web SDK에서 엔티티 값 및 기타 작업 설정과 함께 트리거할 의도 같은 정보를 전달하는 데 필요한 대로 사용할 수 있습니다.

nlMeta

nlMeta는 봇에 정보를 전달하는 데 사용할 수 있는 객체입니다. 봇은 이 정보를 사용하여 다른 정보를 디코딩하기 전에 지정된 의도를 실행합니다.

샘플

다음은 필요한 nlMeta 객체를 입력하는 방법의 샘플입니다:

'nlMeta': { 'intent': '<intent_name>', 'childBotName': '<child_bot_name>', 'isRefresh': <true/false>, 'entities': { '<entity1_value>': value1, '<entity2_value>': value2, }, 'interruptionOptions': { 'hr': { 'h': 1; 'r': 1; 'nn': true } } }

매개 변수

다음은 이 객체에서 사용할 수 있는 매개 변수입니다:

매개 변수 설명
nlMeta 봇에 대한 자연어 정보를 위한 객체
intent 봇에 의해 트리거 되어야 하는 제삼자를 통해 식별된 의도
childBotName(범용 봇인 경우) 범용 봇이 트리거하려는 자식 봇 의도를 식별하는 경우에만 사용됩니다. 이는 범용 봇 패널에서 자식 봇의 위젯을 사용하려는 때에도 필요합니다.
entities 트리거할 의도에 따라 필요한 대로 엔티티-값 쌍이 있는 객체
isRefresh
  • 현재 작업을 종료하고 수신 작업 실행을 시작하려면 true로 설정
  • 이 옵션을 설정하지 않았거나 false로 설정하면 보류 및 재시작 설정에 따라 수신 작업이 실행됨
interruptionOptions 봇이 nlMeta 정보를 수신할 때 작업이 진행 중이라면 중단 동작을 나타냅니다. 값은 다음과 같을 수 있습니다:

  • discardAll – 현재 및 이전 작업이 있는 경우 삭제
  • hr – 보류 및 재시작 옵션용
    h 보류 옵션의 경우 다음과 같은 옵션이 있습니다:

    • 1 – "현재 작업을 보류하고 새 작업이 완료되면 다시 시작"
    • 2- "현재 작업을 취소하고 새 작업으로 전환"
    • 3- "사용자에게 알리지 않고 새 작업으로 전환하고 현재 작업 삭제"
    • 4- "현재 작업을 계속하고 후속 작업 목록에 새 작업 추가"
    • 5- "최종 사용자가 동작을 선택하도록 허용"
    r 재개 옵션의 경우 다음과 같은 옵션이 있습니다:

    • 1 – "보류 중인 작업을 재개하기 전에 사용자와 확인"
    • 2- "보류 중인 작업이 재개되고 있다는 메시지를 사용자에게 알림"
    • 3- "사용자에게 특정 메시지를 표시하지 않고 보류 작업 다시 시작"
    nn neverNotify – 사용자에게 알림

    • True – 작업이 단일 응답으로 끝나면 사용자에게 보낼 특정 메시지 없이 보류 중인 작업을 항상 다시 시작
    • False – 사용자에게 알림

요청한 작업을 찾을 수 없다면 봇은 "대화에 필요한 대화 작업을 사용할 수 없음"이라는 표준 응답으로 응답합니다.

사용법

언급한 대로 nlMeta를 입력하고 BotKit SDK 및 웹/위젯 SDK를 통해 가상 비서로 전송할 수 있습니다. 다음은 이러한 작업이 달성되는 방법을 보여 줍니다:

  • BotKit SDKmetaInfo 객체의 일부:
    data.metaInfo = { 'nlMeta': { 'intent': 'Authenticate User', 'isRefresh': true, 'entities': { "Name": "John" }, 'interruptionOptions': 'discardAll' } }
  • Web SDKsendMessage 함수를 사용하여 nlMeta 정보를 매개 변수로 보낼 수 있습니다. 이 함수는 chatWindow.js 파일에서 찾을 수 있습니다. 다음과 같이 nlMeta 데이터를 사용해야 할 때 조건을 추가합니다:
    if(_this.text() == “Existing”){ me.sendMessage(_this, attachmentinfo, {'nlMeta': { 'intent': 'Authenticate User'}}); } else{ me.sendMessage(_this, attachmentinfo); }

    위의 예에서 텍스트 필드에 "Existing" 값이 포함되어 있으면 사용자 인증 의도가 트리거 됩니다.

  • Widget SDK – nlMeta 정보는 버튼, 메뉴, 목록 등과 같은 다양한 템플릿에 대한 페이로드의 부분으로서 전송될 수 있으며 자세한 내용은 여기를 참조하세요.

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

At times one wants to control the flow of the virtual assistant by taking an alternate path to improve the user’s experience.

Consider the following scenarios:

  1. The NLP engine might have identified an intent based on the user utterance. But a  different task might be more suitable based on additional information gathered from the backend systems or from the webpage where the SDK is hosted or any other external information.
  2. Consider a flight booking virtual assistant that greets the user with the best ongoing deals as part of the Welcome message. Based on the user selection, the ‘book flight’ task can be programmatically invoked by prepopulating the travel details like source city, destination city, travel, etc. from the deal information presented to the user.

Kore.ai provides a way to pass information to the virtual assistant programmatically using nlMeta data. This can be used in the BotKit SDK, Widget SDK, and web SDK to pass information like intent to be triggered along with the entity values, and other task settings as per your need.

nlMeta

nlMeta is an object which can be used to pass information to the bot. The bot would use this information to execute the intent specified therein before attempting at decoding any other information.

Sample

The following is a sample of how the nlMeta object needs to be populated:

      'nlMeta': {
            'intent': '<intent_name>',  
            'childBotName': '<child_bot_name>',
            'isRefresh': <true/false>, 
            'entities': {      
			'<entity1_value>': value1,
                        '<entity2_value>': value2,
			},
      	    'interruptionOptions': {
               'hr': {
                 'h': 1;
                 'r': 1;
                 'nn': true
                }
              }
      }

Parameters

The following are the parameters that can be used in this object:

Parameters Description
nlMeta An object for natural language information for the bot
intent Intent identified via 3rd party which needs to be triggered by the bot
childBotName
(in case of Universal Bots)
Only used in case of a universal bot to identify the child bot intent to trigger. This is also needed when trying to use a widget from the child bot in the universal bot’s panel.
entities Object with entity-value pairs as needed by the intent to be triggered
isRefresh
  • Set to true to end the current task and start executing incoming task
  • If not set or if set to false the incoming task would be executed as per hold and resume settings
interruptionOptions To indicate the interruption behavior, in case any task is in progress when the bot receives this nlMeta information. Values can be:

  • discardAll – to discard current and previous tasks, if any
  • hr – for hold and resume options
    h for hold option, following are the options:

    • 1 – “Hold the current task and resume back once the new task is completed”
    • 2- “Discard the current task and switch to new”
    • 3- “Switch to new task without any notification to user and discard current task”
    • 4- “Continue the current task and add new task to the follow-up task list”
    • 5- “Allow the end user to select the behavior”
    r for resume option, following are the options:

    • 1 – “Get confirmation with the user before resuming an on-hold task”
    • 2- “Notify the user with a message that the on hold task is being resumed”
    • 3- “Resume the on hold task without any specific message to the user”
    nn neverNotify – notification to the user

    • True – Always resume the on hold task without any specific message to the user if the task ended in a single response
    • False – inform the user

In case, the requested task is not found the bot would respond with a standard response “Dialog task required for conversation not available”.

Usage

As mentioned, nlMeta can be populated and sent to the virtual assistant via BotKit SDK, and web/widget SDK. The following illustrates how it can be accomplished:

  • BotKit SDK – as part of metaInfo object:
    data.metaInfo = {
          'nlMeta': {
                'intent': 'Authenticate User', 
                'isRefresh': true, 
        	     'entities': {
    		"Name": "John"
    		},
     	    'interruptionOptions': 'discardAll'
          }
    }
  • Web SDK – the nlMeta information can be sent as a parameter using the sendMessage function. You can find this function in the chatWindow.js file. Add a condition when the nlMeta data needs to consumed as follows:
    if(_this.text() == “Existing”){
    me.sendMessage(_this, attachmentinfo, {'nlMeta': {
                'intent': 'Authenticate User'}}); 
    }
        	else{
    		me.sendMessage(_this, attachmentinfo);
    		}

    In the above example, the Authenticate User intent would be triggered if the text field contains the value “Existing”.

  • Widget SDK – the nlMeta information can be sent as part of the payload for various templates like button, menu, list, etc., see here for details

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