C keepTurnとtransitionによるナビゲーション
keepTurn
関数とtransition
関数の様々な組合せを使用して、コンポーネントの処理が終了した後の会話の続行方法を定義します。invoke: (conversation, done) ==> {
...
conversation.keepTurn(true);
conversation.transition ("success");
done();
}
ユース・ケース | keepTurnとtransitionに設定される値 |
---|---|
ユーザーの介入を必要としないカスタム・コンポーネントの返信。 |
たとえば、カスタム・コンポーネントはコンテキスト変数を値リストで更新します。この値リストは、ダイアログ・フロー定義で次の状態に対して定義される
System.List コンポーネントによって表示されます。 コンポーネントが次の状態に遷移しない場合は、conversation.variable (“name”, variable) メソッドを使用してランタイム変数を作成することにより、コンポーネントが独自の状態をトラッキングする必要があります。
|
ユーザーが入力やボットの返信などを提供する、シーケンシャルなユーザーの会話。 |
例:
|
次のダイアログ状態にナビゲートすることなく制御をユーザーに返すボット。これにより、コンポーネントでユーザー入力を処理できます。次にいくつかの例を示します:
|
例:
|
カスタム・コンポーネントは、ユーザー入力によって停止できないループに移行します。たとえば、コンポーネントは、ステータスがaccepted として返されるか、コンポーネントがタイムアウトになるまで、オーダーのステータスをリモート・サービスにpingします。5回目のpingの後にaccepted ステータスが返されない場合、コンポーネントは、ダイアログ・フローで定義されているfailedOrder 状態に遷移します。
ボットは、ユーザーをライブ・エージェントに渡します。この場合、ユーザーの入力とレスポンスがエージェントにディスパッチされます。コンポーネントは、ユーザーまたはエージェントがセッションを終了する際に、ダイアログ・フローで定義された次の状態に遷移します。 |
例:
reply では暗黙的にkeepTurn がfalse に設定されるため、keepTurn は常にreply の前ではなく後にコールします。
|