Question
v4.66でアップデート
説明
Question Nodeは、ユーザーに特定の情報を尋ねる質問をするために使用されます。
質問がなされ、ユーザーが回答すると、そのタイプに従って回答が検証されます。パスすると、回答は有効で保存され、トークは続行されます。
アタッチFlow
ユーザー入力が受信されると、その入力はNLUによってスコアリングされます。アタッチFlowにIntentがあり、そのIntentが現在のFlowのIntentよりもスコアが高い場合、アタッチFlowが実行されます。これは、 Question Nodeの検証が完了する前に実行されます。詳細は、[Attached Flow(アタッチFlow)]を参ご覧ください。
Cognigy/TransformersReference to Cognigy repository on GitHub
Question タイプ
Question Nodeには、トークを続ける前に使用される検証を決定するタイプの選択があります。
タイプ | 質問に答えるために予想されるユーザーの入力 | 例 |
Text | テキスト入力 | |
Yes / No | 肯定的または否定的な応答 | |
Intent | ユーザーの応答から識別される学習済みIntentの1つ。 | |
Slot | ユーザーの応答から検出されるシステムSlotまたはLexicon Slot。Slotは名前によって定義されます。 | |
Date | 日付(システム定義) | |
Number | 数字(システム定義) | |
Temperature | 温度(システム定義) | |
Age | 年齢(システム定義) | |
Duration | 期間(システム定義) | |
メールアドレス(システム定義) | ||
Money | 金額(システム定義) | |
URL | インターネット上のリソースへの参照/アドレス(例:http://example.com) | |
Percentage | パーセンテージ(システム定義) | |
Regex | ユーザーの応答で検出される正規表現で定義されたカスタムデータ形式 | |
Data | データ(input.data)入力 | |
xApp | xApp入力 | |
Custom | 入力 | |
Pattern: License Plate (DE) | ドイツの自動車登録プレートのパターン。このナンバープレートは、車両に表示される固有の英数字の識別タグである。アルファベット、数字、時には特殊文字、例えばö 、ä 、ü などで表記されます。ナンバープレートは車両を識別・登録する手段として機能し、車両の所有者、登録内容、法的要件の遵守などの重要な情報を提供します。 | M-345 , x1Y2Z3 , D 12345C |
Pattern: IBAN | 国際銀行口座番号(IBAN)のパターン | DE12345678901234567890 |
Pattern: Bank Identifier Code (BIC) | 銀行識別コード(BIC)のパターン | DEUTDEFF500 |
Pattern: Social Security Number (US) | 米国の社会保障番号のパターン | 123-45-6789 |
Pattern: IP Address (IPv4) | IPv4アドレスのパターン | 192.168.1.1 |
Pattern: Phone Number | 電話番号のパターン | +49 0000000000 , 49 0000000000 , +490000000000 , (555) 000-000 |
Pattern: Credit Card | 銀行カードのパターン | 4111111111111110 |
正規表現
正規表現が /
で始まり /g
で終わることをご確認ください。
例 :/^1d{7}$/g
システム定義スロットに対応するデータ形式
Cognigy NLUがシステムスロットマッピングでサポートするすべてのデータ形式は、[Slot Mapping]ページに一覧表示されています。
チャネルと出力タイプ
Question Nodeの出力タイプはSay Nodeと同じ機能を持ちます。
DateのQuestions
QuestionタイプでDateが選択された場合、チャネルが許可していれば、Question Nodeは自動的にDatepickerをレンダリングします。詳細は[Datepicker]をご参照ください。
リプロンプトオプション
リプロンプトメッセージは、期待された入力タイプがなかったり、検証でtrueが返されなかったりするなど、質問に正しく答えられなかった場合に自動的にトリガーされます。
再プロンプトメソッド
以下のリプロンプトメソッドのうち1つを選択することができます:
- Simple Text(シンプルテキスト)
- Channel Message(チャネルメッセージ)
- LLM Prompt(LLM プロンプト)
- Execute Flow and return(Flowを実行して戻る)
Simple Text(シンプルテキスト)
シンプルなテキストメッセージをユーザーに出力します。
パラメータ | タイプ | 説明 |
Reprompt Message | CognigyScript | 入力された答えが無効な場合に出力するメッセージ。例:Not sure I understood this correctly |
Channel Message(チャネルメッセージ)
包括的なチャンネル固有のメッセージをユーザーに出力します。このメッセージには、画像やオーディオなどのリッチメディアが含まれます。Webchat, Voice Gateway, WhatsAppなど、チャネルごとに異なるメッセージを定義できます。
パラメータ | タイプ | 説明 |
Reprompt Message | チャネル | repromtメッセージを設定したいチャネル。複数のチャネルを選択できます。 |
Output Type | 選択 | 選択したチャネルで配信されるコンテンツの形式。選択したチャネルに応じて、そのチャネルに適した出力タイプのリストが表示されます。すべてのチャネルでTextタイプがサポートされていますが、他のタイプのサポートは異なる場合があります。 |
LLM Prompt(LLM プロンプト)
LLMプロンプトを実行し、結果をテキストメッセージの形式でユーザーに出力します。このNodeを使用する前に、LLM設定でモデルを設定してください。
パラメータ | タイプ | 説明 |
Large Language Model | 選択 | repromtメッセージを設定したいチャネル。複数のチャネルを選択できます。 |
LLM Instructions | CognigyScript | 出力を生成するために言語モデルに与えられる、プロンプトやシステムメッセージなどの入力やコマンド。 |
Transcript Turns | スライダー | 選択したチャネルで配信されるコンテンツの形式。選択したチャネルに応じて、そのチャネルに適した出力タイプのリストが表示されます。すべてのチャネルでTextタイプがサポートされていますが、他のタイプのサポートは異なる場合があります。 |
Execute Flow and return(Flowを実行して戻る)
特定のFlowを実行し、その後質問に戻ります。
パラメータ | タイプ | 説明 |
Select Flow | 選択 | リプロンプトメッセージとして実行されるFlow。 |
Select Node | 選択 | Flowをリプロンプトメッセージとして実行するNode。 |
Parse Intents | トグル | この設定は、実行FlowでシステムがIntentを個別に解析するかどうかを決定します。デフォルトでは、この設定は有効です。 |
Parse Slots | トグル | この設定は、実行FlowでシステムがSlotを個別に解析するかどうかを決定します。デフォルトでは、この設定は有効です。 |
Absorb Context | トグル | この設定は、実行Flowのコンテキストを現在のコンテキストに吸収するかどうかを決定します。デフォルトでは、この設定は無効です。 |
質問を繰り返す
ユーザーが無効な回答をした場合、質問を繰り返します。デフォルトでは、この設定は有効です。
リプロンプト条件
オプションで、リプロンプトメッセージを表示するかどうかを決定する CognigyScript 条件を追加できます。
Intentでスキップ
入力にIntentが見つかった場合、リプロンプトをスキップします。
結果の保存
質問結果は常にinput.result
に保存されます。
[Store Result in Context(結果をコンテキストに保存)]が有効な場合、質問結果がContextオブジェクトにも保存されます。
[Store Result to Contact Profilet(結果をコンタクトプロファイルに保存)]が有効な場合、質問結果はProfileオブジェクトにも保存されます。
エスカレーション – Intents
指定されたIntentが見つかった場合、 Question Nodeからトークを中断できるようにします。
アクション | 説明 |
Output Message | メッセージを出力する(Say Nodeに相当) |
Skip Question | 質問をスキップし、特定の値をinput.result オブジェクトに入力します。 |
Go To Node | 特定のFlow Nodeに移動し、そこから継続します(Go To Nodeに相当) |
Execute Flow and Return | 特定のFlow Nodeに移動し、その後質問に戻る(Execute Flow Nodeに相当) |
Handover to Human Agent | トークはエージェントに引き継がれ、エージェントは質問ステップを終えてトークを返す手助けをしてくれます。 |
[Valid Intents(有効なインテント)]フィールドにインテント名を入力し、キーボードのENTERを押して、[escalate on intent(インテントでエスカレーション)] 機能をトリガーできるIntentを追加します。専用のIntentスコアしきい値スライダーを好みの設定に調整し、リストされたIntentの1つがそのスコアに達した場合にのみエスカレーションが発生するようにします。
誤答でのエスカレーション
多くの誤答があった場合、 Question Nodeからトークを中断できるようにします。
アクション | 説明 |
Output Message | メッセージを出力する(Say Nodeに相当) |
Skip Question | 質問をスキップし、特定の値をinput.result オブジェクトに入力します。 |
Go To Node | 特定のFlow Nodeに移動し、そこから継続します(Go To Nodeに相当) |
Execute Flow and Return | 特定のFlow Nodeに移動し、その後質問に戻る(Execute Flow Nodeに相当) |
Handover to Human Agent | トークはエージェントに引き継がれ、エージェントは質問ステップを終えてトークを返す手助けをしてくれます。 |
エスカレーションが起こっているときに、リプロンプトを防ぐことができます。
[only escalate once(一度だけエスカレーションする)]オプションは、エスカレーションがしきい値に対して一度だけ起こるか、しきい値から始まるすべての入力に対して起こるかを決定します。
ヒューマンエージェントへのハンドオーバー
リリースv4.4.0では、[Handover to Human Agent(ヒューマンエージェントへのハンドオーバー)]オプションが追加されました。Nodeエディタを開くと、このオプションがIntentsとWrong_Answersのエスカレーションアクションとして表示されます。 このエスカレーションがヒットすると、トークはエージェントに引き継がれ、エージェントは質問ステップを終え返す手助けをしてくれます。
再確認の設定
続行する前に回答を再確認できるようにします。これは音声ボットを使用し、ボットが理解したことを再確認するときに特に有用です(例えば、Numberの質問で、ユーザーが「私の番号は355999568です」と言った場合)。再確認の質問に対する回答は、Yes/No形式の回答でなければならず、Yes/No Questionと同じルールに従います。
再確認の質問は特定のトークンANSWER
を含むことができます。ANSWERは入力された答えの省略形(例えば、Moneyの質問では 「3 EUR」)に置き換えられます。省略形の答えはinput.activeQuestion.tentativeShortFormAnswe
rから取り出されます;
再確認の質問には、特定のリプロンプトを設定することができます。これは質問に対する答えがYes/Noスタイルでない場合に、質問の前に出力されます。
応用編
Question Nodeには2つの詳細設定があります。
Store detailed Results(詳細結果を保存する)
この設定を有効にすると、入力のresultプロパティの下に、より詳細なJSONオブジェクトが保存されます。これは、より詳細な情報が必要な場合に便利です。
入力に答えがある場合はスキップする
この設定を有効にすると、入力テキストにすでに答えが入力されている場合、質問はスキップされます。
追加検証
CognigyScriptの条件で、回答が有効とみなされるにはtrue
を返す必要があります。例えば、cognigy.comのメールアドレスのみが検証を通過することを保証することができるinput.slot.EMAIL[0].endsWith("cognigy.com")
という Email Questionの追加検証があります。
結果の場所
回答の場所は、デフォルトでは質問のタイプによって決定されます (たとえば、Email Questionsの場合はinput.slots.EMAIL[0])
。これはこの設定を使用して上書きすることができます (例えば、input.slots.EMAIL
は見つかったすべてのメールスロットを保存します)。結果の場所が値を返さない場合 (=falsy(偽))、答えは無効とみなされます。
Forget Question Threshold(質問を忘れるしきい値)
この設定は、最初に質問が行われた後、ユーザーがNodeから「away(離席中)」でいられる時間を決定します。デフォルト設定の1
では、次のユーザー入力で質問に答えなければなりません。ユーザー入力が後の段階で質問に戻ってきた場合、質問が初めてヒットされたものとして扱われ、質問が行われます。
Question Nodes と Intent Execution
Question Nodes(デフォルト)は、有効な回答が得られるまで何度もトリガーされます。これを避けるには、Optional Questionを選択するか、Intent Executionの設定を変更してください。
スロットフィラー
質問はスロットフィラーと組み合わせて、いわゆる「ミッシングパターン」を作成することができます。このメカニズムでは、すべての質問に答え終わるまで、非常に自然な方法で足りない情報をユーザーに尋ね続けます。
入力の質問情報
Optional Questionが “active”、つまり回答待ちの状態になると、入力オブジェクトにOptional Questionに関する情報が追加されます。
"activeQuestion": {
"nodeId": "18b158bf-71a3-4d4f-a31f-812b1810f8af",
"type": "yesNo",
"lastExecutedAt": 2,
"forgetQuestionThreshold": 1,
"repromptCount": 1,
"escalationCount": 0
}
この情報は、エスカレーション時に特定のアクションをトリガーしたり、エスカレーション後に Question Nodeに戻ったりするために使用することができます。
AI活用出力
AIを活用したボットの出力言い換えを利用するには、[Generative AI(生成AI)]の記事をご覧ください。
回答の事前処理
Text Cleanerクラスのさまざまな関数を使用して、質問に対する回答が評価される前に事前処理を行うことができます。これは、たとえば、Text
タイプの質問を使用して名前を尋ねるときや、Slot
の質問を使用して部品番号を尋ねるときに役立ちます。
Text Cleaner関数に加えて、ユーザーはクリーニングプロセス後にNLUを再実行するオプションもあります。この方法によって、Slotの再検出や、残っているSlotを適切に埋めるなどの処理が可能になります。