最近のアクセス:
[Validation Procedure] プロパティ

ユーザー入力の検証に使用する Procedure オブジェクトです。

適用範囲

オブジェクト: Conversational Flows Instance

説明

検証プロシージャーは、あらゆる Chatbot の User Input に使用でき、該当するユーザー入力のデータが入力されたときにトリガーされます。
ユーザーの入力を検証して、その入力についてユーザーにフィードバックを返すことができます。
基本的には、検証プロシージャーを実行するたびに、ブール値とテキストメッセージが返されます。
検証プロシージャーのシグネチャは、次の 2 とおりが考えられます(1):
1. parm(in:&UserInput,out:&Error,out:&CustomResponse);
2. parm(in:&UserInput,inout:&Context,out:&Error,out:&CustomResponse);
入力値の説明
  • &UserInput は Chatbot の User Input です (パラメーターのデータタイプはユーザー入力と一致する必要があります)。
  • &Error はブール値です。
  • &CustomResponse は、ユーザーが入力したデータが正しくない場合に表示するメッセージを格納した文字列パラメーターです。
  • &Context は、Chatbot インスタンスのために生成される Context SDT に基づく変数です (Context SDT を手に入れるには、Chatbot を生成する必要があります)。たとえば、インスタンスが「Citizen」の場合、SDT のコンテキストは CitizenChatbot モジュールの下になります。そのコンテキストには、Chatbot のコンテキストすべてが含まれます。
メッセージ (&CustomResponse) は、出力されるブール値 (検証でエラーがあったかどうか) に関わらず、ユーザーに表示されます。
検証プロシージャーは 2 つの目的で使用できます:
1. 検証でエラーがあった場合、ユーザーに警告して、有効な値を入力するためのヒントを提供します。
つまり、入力された値が (モデルにとって) 有効でない場合、ユーザーに再入力を求めます。たとえば、割引を利用可能な国をユーザーに入力させる必要があるものとします。ユーザーが実在する国を入力したとしても、その国は割引の適用対象ではない場合があります。このような場合に、Chatbot を通じてユーザーに情報を再入力するように伝えることができます (その際、割引の対象となる国についてヒントを示すことができます)。
2. 検証の結果エラーがなく、次のユーザー入力に移る際に、プロシージャーのロジックに応じてユーザーへのメッセージを変える (次のユーザー入力を求める) ことができます。たとえば、ユーザーが自動車を購入する場合、関心のある車種を入力したら、検証プロシージャーによって次のユーザー入力のメッセージを変更し、購入可能なモデルの年式をヒントとして示すことができます。
次に会話の流れ (Flow) の例を示します:
ボット: 次のモデルをご購入いただけます: オニキス、カローラ
ユーザー: オニキスが欲しいです。
ボット: かしこまりました。オニキスは 2018 年モデルと 2019 年モデルを用意しております。
別の会話例です:
ボット: 次のモデルをご購入いただけます: オニキス、カローラ
ユーザー: カローラが欲しいです。
ボット: かしこまりました。カローラは 2018、2019、および 2020 年のモデルを用意しております。
このように、次のユーザー入力について [ Ask Messages ] プロパティで設定された内容を、検証プロシージャーが返すメッセージで置き換えます。

ユーザー入力に対してほかの検証 ([ Match With Entity ] プロパティなど) を実行したり、さらにはユーザー入力のデータタイプを常にチェックしたりすることもできます (たとえば、日付が必要なのに、有効な日付形式でないデータをユーザーが入力した場合、AI プロバイダーによってエラーが返されます)。
これらの検証は、次のように検証プロシージャーと組み合わせて実行します:
  • データを要求する
  • AI プロバイダーを通じて、データがエンティティと一致するかどうかを検証する ([ Match With Entity ] プロパティやデータタイプ)
  • 一致しない場合、再入力を要求する (この場合、[ Try Limit ] プロパティを使用して、ユーザーに再試行を求める回数を指定する)
  • データが一致する場合、そのデータをパラメーターに割り当てる
  • 検証プロシージャーを実行する
  • データが有効でない場合 (検証プロシージャーにより &Error = True が返される)、戻って (コンテキストによって暗黙的にパラメーターがクリアされる) ユーザーに再入力を要求する
  • データを再び要求する

一時的な制限事項

[ Try Limit ] プロパティは検証プロシージャーにはまだ適用されていません。失敗した試行回数を自動でカウントするメカニズムがありません。試行の最大回数に使用する内部カウンターは、Context API を通じて実装できます。
(1) パラメーターの名前は任意に指定できますが、データタイプは予期されたものでなければなりません。そうでないと、次のようなエラーが表示されます。
エラー: 予期しないデータタイプです。パラメーターのデータタイプは、ユーザー入力のデータタイプ NUMERIC と同じである必要があります。

公衆衛生や交通情報などに関する苦情を市民サービスに送信できる Citizen Service Chatbot サンプルについて考えます。
このサンプルでは、「StatusClaim」という名前の Flow を使用して、ユーザーが各自の ID と苦情 ID (苦情を行ったときに与えられた番号) を入力できるようにしています。この情報を基に、Chatbot から苦情のステータス (解決待ちまたは解決済み) が返されます。
Flow を次のように定義し、ComplaintId ユーザー入力に対し、 [ Validation Procedure ] プロパティを「ValidateComplaint」(ナレッジベースのプロシージャー) に設定しています。
 
イメージ:42692.png
 
"ValidateComplaint" プロシージャーは次のとおりです。
parm(in:&ComplaintId,out:&Error,out:&ResponseforFailure);
Chatbot.Context.GetUserContextValue(!"CitizenAdv",GetUserId(),!"UserIdentification",&ParameterValue)
for each Complaint
    where ComplaintId = &ComplaintId
    where UserIdentification.Trim().ToLower() = &ParameterValue.Trim().ToLower()
    
    &Error              = FALSE
    exit
when none
    &Error              = TRUE
    &ResponseforFailure = format(!"%1 は有効な苦情 ID ではありません。やり直してください。",&ComplaintId.ToString())
endfor
ここでは、Chatbots Context API を使用して UserIdentification (Chatbot コンテキスト内) を取得し、それをもう 1 つのパラメーターとして使用して苦情 ID が有効かどうか (ユーザーに属するものかどうか) を確認しています。
この例では、別の方法として、コンテキストをパラメーターとして受け取る (&Context は CitizenAdvChatbot.Context SDT に基づく) こともできます。
parm(in:&ComplaintId,inout:&Context,out:&Error,out:&ResponseforFailure);

&UserIdentification = &Context.Context.UserIdentification

for each Complaint
  where ComplaintId = &ComplaintId
  where UserIdentification.Trim().ToLower() = &UserIdentification 

  &Error = FALSE
  exit
when none
  &Error = TRUE
  &ResponseforFailure = format(!"%1 は有効な苦情 ID ではありません。やり直してください。",&ComplaintId.ToString())
endfor


サブページ
Created: 20/01/10 00:33 by Admin Last update: 21/05/20 08:05 by Admin
カテゴリ
Powered by GXwiki 3.0