Oracle Cloud Infrastructureドキュメント

C keepTurnとtransitionによるナビゲーション

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

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

  • keepTurntrue: conversation.keepTurn(true)に設定します。

  • supportedActions文字列を使用するか(conversation.transition("success"))、または引数を指定しない(conversation.transition())で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つの結果のみ対応可能で、問合せが複数のヒットを返す場合、コンポーネントは結果をフィルタリングするためにユーザーにさらに入力を求めることができます。この場合、カスタム・コンポーネントはユーザー入力の処理を継続し、検索エンジンが単一のヒットを返すまで対話を保持します。バックエンド・システムが満たされると、コンポーネントはconversation.transition()をコールし、ダイアログ・フロー定義に定義されている次の状態に遷移します。

  • 質問リスト。カスタム・コンポーネントによってすべての質問が処理され、それぞれの回答が処理された場合にのみ次の状態に遷移します。

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

  • keepTurnfalseに設定します。

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

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

ボットは、ユーザーをライブ・エージェントに渡します。この場合、ユーザーの入力とレスポンスがエージェントにディスパッチされます。コンポーネントは、ユーザーまたはエージェントがセッションを終了する際に、ダイアログ・フローで定義された次の状態に遷移します。

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

  • keepTurntrue: conversation.keepTurn(true)に設定します。

例:
conversation.reply("text");
conversation.keepTurn(true);
done();
replyでは暗黙的にkeepTurnfalseに設定されるため、keepTurnは常にreplyの前ではなく後にコールします。