私に提案され、現在実験中の別のアプローチは、マスタールーティングワークスペースと、場合によっては複数のアプリケーションワークスペースを持つことです。最初のインスタンスでは、ユーザーの入力は、ルーティング先のアプリケーション ワークスペースを決定する高レベルのインテントを持つマスターに送信されます。アプリケーション ワークスペースには、より詳細に分割するインテントがあります。
微妙な点は、その後のすべての入力を、選択したアプリ ワークスペースとマスター ルーターの両方に並行して送信することです。前述のシーケンシャル アプローチに対するこの潜在的な利点は、マスター ワークスペースが、トピックから外れたり、信頼度が低いために引き渡されるのではなく、制御に取り組むことができることです。これは、オフトピックを一元化できるようにするだけでなく、マスターで初期ルーティングと同じインテントを使用して、他のワークスペースへの動的ルーティングを取得できることを意味します。
オーケストレーション レイヤーにセッションをこのようなコンテキストの配列として管理させることでこれを行いました
{
currentWs: xxxx,
contexts: {
ws_idn: {}, // basically an array of conversation contexts,
.... // keyed on workspace_id's
}
}
入力は、マスター ワークスペースと、マスターによって現在としてマークされているワークスペースに (そのワークスペースに関連するコンテキスト オブジェクトと共に) 送信されます。コンテキストを失うことなく、複数のチャットボット アプリケーション間をシームレスに切り替えることができます。