最近のアクセス:
メニューから Chatbot にメッセージを送信する方法

ここでは、任意のユーザーイベント (メニューアイテムなど) から Chatbot にメッセージを送信する方法について説明します。
いくつかの選択肢を含む Web パネルまたは SD パネルをユーザーに表示し、そこでいずれかの項目が選択されると Chatbot に通知が届き、ユーザーからの質問に応じて Chatbot が回答できるようにすることが目的です。

たとえば、ユーザーと Chatbot があいさつをするときについて考えてみます。ユーザーからあいさつがあったときの Chatbot の最初のアクションは、サポートメニューをユーザーに表示することです。次の図を参照してください:
イメージ:40913.png
ユーザーがメニューからアクションを選択すると、Chatbot がユーザーの意図を繰り返すため、処理する意図の内容が "Make an inquiry" であることが明確になります。
NLP プロバイダーでメッセージが処理された後、Chatbot はユーザーに回答します。

実装方法

会話の Flow の定義

この例では、"Greetings" の Flow は次のようになります:
イメージ:40914.png
Flow に設定された [ Conversational Object ] は "Greetings" で、ここでは Web Panel オブジェクトであることに注目してください (SD Panel オブジェクトにすることもできます)。
ユーザーが選択した項目に応じて、次のいずれかの Flow 表示がトリガーされます:
  • Make a Claim Flow
  • Get Information Flow
  • Set a date and time Flow
そのため、Conversational Flows オブジェクトは次の図のようになります:
イメージ:40916.png
これらの Flow のいずれかをトリガーするには、有効なメッセージを NLP プロバイダーに送信して意図が正しく認識されるようにする必要があります。
意図をトリガーするために使用するメッセージを知るには、各 Flow の [ Trigger Messages ] プロパティを確認してください。
"Greetings" Web パネルフォームは次のようになります:
イメージ:40915.png

Flow の UI オブジェクトの定義

Conversational Object パネル ("Greetings" Web パネル) のコードは次のとおりです:
Event Start
    GreetingsProcedure(&greeting)
    GreetingLbl.Caption = format(!"%1 I'm here to assist you.This is what I can help you with.Let's start!",&greeting)
Endevent

Event 'Get Information' // [ Make an inquiry ]  ボタンのクリック時イベント
    GlobalEvents.BotEvent(!"Make an inquiry")
Endevent

Event 'Schedule an activity' // [ Set a date and time ]  ボタンのクリック時イベント
    GlobalEvents.BotEvent(!"Set a date and time")
Endevent

Event 'Do a claim' // [ Do a claim ]  ボタンのクリック時イベント
    GlobalEvents.BotEvent(!"Do a claim")
Endevent
最初に Start イベントで、1 日の時間帯に応じたあいさつメッセージを取得するプロシージャーを呼び出します。
次に、各ボタンに関連付けられたイベントによって、新しいメッセージがあることが Chatbot に通知されます。Flow をトリガーするために使用するメッセージは、前に説明したとおり、その Flow にとって有効なトリガーメッセージである必要があります。
イベントが実行されると Chatbot サービスがトリガーされ、ユーザーが Chatbot のメッセージボックスにメッセージを指定してクエリを入力した場合と同じように、ユーザーに応答が送信されます。
これが、グローバルイベント機能を使用する理由です。

動作の仕組み

GlobalEvents.BotEvent イベントは、生成された PanelChatWeb オブジェクトと PanelChatSD オブジェクトで定義されています。例に示すとおり、これらのオブジェクトを使用すると、対応する GlobalEvents.BotEvent がトリガーされてメッセージを受信し、受信したメッセージは NLP プロバイダーに送信されます。
Event GlobalEvents.BotEvent(&Send)
    Do 'SendMessage'
Endevent

Sub 'SendMessage' //メッセージの送信
    &WebClient = &WebNotification.ClientId
    &NotificationInfo = new()
    &PreviousContext = GetChatMeta(&UserId, &Instance)    
    NewMessage(&UserId, ChatbotMessageTypes.User, &Send, "", &PreviousContext, "", &WebClient, &Instance)
    GridSent.Refresh()    
    CommonChatbots.SendMessage.Submit("", &Instance, ChatbotPlatform.Web, &Send, "", &PreviousContext, &WebClient)
    Do 'NotifyOtherClients'
    &Send.SetEmpty()
endsub

CommonChatbots.SendMessage プロシージャーは、SendMessage メソッドを呼び出します。
注: これらのイベントは、生成された PanelChatWeb オブジェクトと PanelChatSD オブジェクトで既に定義されているため、プログラムする必要はありません。

サンプルのダウンロード

GeneXus を利用して Chatbot をビルドする方法」で完全な例を参照してください。ソリューションは、例の CitizenSDAdv インスタンスと CitizenAdv インスタンスにあります。




サブページ
Created: 20/01/09 21:38 by Admin Last update: 22/03/14 00:45 by Admin
カテゴリ
Powered by GXwiki 3.0