Oracle Cloud Infrastructureドキュメント

C keepTurnとtransistionでのナビゲーション

keepTurntransitionの様々な機能の組合せを使用して、コンポーネントの処理が終了した後の会話の続行方法を定義します。
invoke: (conversation, done) ==> {
   ...
   conversation.keepTurn(true);
   conversation.transition ("success"); 
   done();
    }
ユース・ケース keepTurnおよびtransitionに設定される値

ユーザー対話を必要としないカスタム・コンポーネントの返信。

  • keepTurntrueに設定: conversation.keepTurn(true)

  • supportedActions文字列(conversation.transition("success")を含むtransitionを設定するか、引数を指定しない(conversation.transition())で設定します。

たとえば、カスタム・コンポーネントでは、コンテキスト変数を値のリストで更新します。このコンテキスト変数は、ダイアログ・フロー定義で次の状態に対して定義されるSystem.Listコンポーネントによって表示されます。
invoke: (conversation, done) => {
    const listVariableName = conversation.properties().variableName;
  ...
 
  //
write list of options to a context variable 
   conversation.variable(listVariableName, list);

   //navigate to next state. No user interaction.
   conversation.keepTurn(true);
   conversation.transition();
   done();
 }
コンポーネントが次の状態に遷移しない場合は、conversation.variable (“name”, variable)メソッドを使用してランタイム変数を作成し、コンポーネントが独自の状態を追跡する必要があります。
ユーザーが入力やボットの返信などを提供する、シーケンシャルなユーザーの会話。
  • keepTurnfalseに設定します。

  • supportActions文字列を使用してtransitionを設定

例えば:
conversation.keepTurn(false);
conversation.transition("success");
ボットは、次のダイアログ状態にナビゲートすることなく制御をユーザーに戻します。 これにより、コンポーネントでユーザー入力を処理できます。 次に、いくつかの例を示します:
  • コンポーネントは、ユーザー入力をバックエンド検索エンジンの問合せに渡します。 チャットボットが1つの結果のみ対応可能で、問合せが複数のヒットを返す場合、コンポーネントはユーザーにさらに入力を求めて結果をフィルタリングできます。 この場合、カスタム・コンポーネントはユーザー入力を処理し続けます。これは、検索エンジンが1ヒットを戻すまで対話を保持します。 バックエンド・システムが満たされると、コンポーネントはダイアログ・フロー定義に定義されているとおり、conversation.transition()を呼び出して次の状態に移動します。

  • 質問リスト。カスタム・コンポーネントでは、すべての質問が処理され、それぞれに回答すると、次の状態への遷移のみが処理されます。

  • transitionはコールしないでください。

  • keepTurnfalseに設定します。

例えば:
conversation.reply("text");
conversation.keepTurn(false);
done();

カスタム・コンポーネントは、ユーザーの入力によって停止できないループに入っています。 たとえば、コンポーネントは、ステータスがacceptedとして返されるまで、またはコンポーネントがタイムアウトになるまで、オーダーのステータスについてリモート・サービスにpingを実行します。 acceptedのステータスが5番目のpingの後に返されない場合、コンポーネントはfailedOrder状態に遷移し、これはダイアログ・フローで定義されます。
  • transitionはコールしないでください。

  • keepTurntrueに設定: conversation.keepTurn(true)

例えば:
conversation.reply("text");
conversation.keepTurn(true);
done();
replyでは、keepTurnfalseに暗黙的に設定されるため、常にreplyの後でkeepTurnをコールしてから、その前にはコールしないでください。