最近のアクセス:
Chatbot API を使用して会話のコンテキストを管理する方法

次の API を使って、Chatbot の会話のコンテキストの値を管理できます。特定の会話またはすべてのアクティブな会話のコンテキストの値を取得、追加、更新するための API メソッドがあります。
会話内で保持すべき値が必要になるたびにサービスを呼び出す必要がなくなり、便利です。たとえば、ユーザーアカウントに関するデータ (名前、ID、その他の必要な情報) などは、1 つの会話に固有のものです。また、会話をしている間は、サービスを呼び出したり、ユーザーに入力を求めたりすることなく保持しておく必要があります。
すべての会話で共通の情報もあります。たとえば、人間へのフォールバックについて、コンテキストパラメーターを変更すると、すべての Chatbot の動作に影響する可能性があります。この例では、サポートを提供できる人間の担当者が接続している場合に限り、人間と会話するという選択肢を提示できます。人間と会話することが可能かどうか調べるために、接続している担当者の数を返すサービスを呼び出さなくて済むように、すべての会話のコンテキストに対するグローバルの値を設定できます。それらの担当者のステータスが変化したときに、サービスを呼び出す必要はありません。

ユーザーのコンテキスト管理

Get

特定の会話のコンテキストの値を取得します。
&ParameterValue = Chatbot.Context.GetUserContextValue(&Instance, &UserGuid, &Parameter, &Messages)
入力値の説明:
&Instance
      文字のパラメーターで、Conversational Flows オブジェクト名です。
&UserGuid 
      GUID 変数で、Chatbot のユーザーを示します。Data フォルダ (Chatbot ジェネレーターのリソースの CommonChatbots モジュールの下) にある GetUserId プロシージャーを参照してください。ハードコーディングされたサンプルユーザーを割り当てる例が含まれています。 
&Parameter
      文字の値です。 
&ParameterValue
      文字の値です。
&Messages
      Messages データタイプです。「Chatbot ジェネレーターの一般的なエラーと解決方法」で &Messages パラメーターを取ることができる値についての詳細を参照してください。

Set

特定の会話のコンテキストの値を設定します。
Chatbot.Context.SetUserContextValue(&Instance, &UserGuid, &Parameter, &ParameterValue)
: SetUserContextValue は Conversational オブジェクト内では使用できません。

Clean

特定の会話のコンテキストのコンテンツをすべてクリアします。
Chatbot.Context.CleanUserContext(&Instance, &UserGuid)

例 1
ログイン時にユーザーのプロファイル情報 (名前、住所、電話番号など) を取得できます。また、それらの情報をユーザーのコンテキストに設定できます。
情報は必要に応じて後で取得することもできます。たとえば Conversational オブジェクトで取得します。
例 2
ユーザーのコンテキストのパラメーターを取得することで、あるフローから別のフローへと情報を渡すことができます。たとえば、フローの中でユーザー識別子を要求するユーザー入力があるとします。別のフローの Conversational オブジェクトで、必要に応じてその情報を取得できます。
&ParameterValue = Chatbot.Context.GetUserContextValue(&Instance, &UserGuid, !"UserIdentification",&Messages)

グローバルのコンテキスト管理

Get

すべての会話に対して設定されたコンテキストの値を取得します。
&ParameterValue = Chatbot.Context.GetContextValue(&Instance, &Parameter, &Messages)

Set

すべての会話に対してコンテキストの値を設定します。
Chatbot.Context.SetContextValue(&Instance, &Parameter, &ParameterValue)

Clean

すべての会話のコンテキストのコンテンツをすべてクリアします。
Chatbot.Context.CleanContext(&Instance)

アクティビティまたは旅行用の無料のチケットについて、利用可能な数量をユーザーが尋ねるフローがあるとします。
ユーザーへの応答は、利用可能な数量になります。
イメージ:41368.png
その情報はバックエンドから呼び出される Web サービスを通じて更新されます。次のコードが実行されます:
&Instance = !"Citizen"
Chatbot.Context.SetContextValue(&Instance, !"quota", &value)
フローの Conversational オブジェクトでは、&quota の値が取得され、出力パラメーターとして返されます:
&Instance = !"Citizen"   
&Parameter = !"quota"         
&quota = Chatbot.Context.GetContextValue(&Instance, &Parameter, &Messages)
<Rules>
parm(out:&quota);

実装の詳細

コンテキスト情報は GXChatMessage テーブルに格納されます。このテーブルは、Chatbot ジェネレーターによって (リソースの一部として) 既定で提供されます。ユーザーは CommonChatbots モジュールで 2 つのプロシージャー (GetContext および SetContext) を利用できます。これらのプロシージャーによって、テーブルに格納されたコンテキストを取得/更新できます。これらのプロシージャーは編集可能であるため、データの格納の仕方を変えることができます。
グローバルのコンテキスト情報はキャッシュで処理されます。会話がまだ存在しないユーザーについてのユーザー情報も同様です。たとえば、ユーザーがログインしてユーザーのプロファイルデータを取得した場合、ユーザーがチャットをまだ開始していなくても、その情報をコンテキストに格納できます。 

サブページ
Created: 22/03/14 00:45 by Admin Last update: 24/03/25 23:57 by Admin
カテゴリ
Powered by GXwiki 3.0