UI 服务器#

UI 服务器是一个控制器层,位于 Web UI 和 Tokkio App 管线的所有后端逻辑之间。通过这种方法,只要 Web UI 遵守 API 标准和要求,管线逻辑及其组件的未来演变应该只需要极少甚至不需要 Web UI 更改。

总体架构和管线组件都进行了模块化,彼此之间具有高效的连接。关于每个组件与 UI 服务器之间互连的更多细节,以及它们背后的逻辑和要求将在下面进行解释。

微服务和 UI 服务器之间的连接#

REST API 和 gRPC#

  • UI 服务器与 ACE Agent Chat Controller 建立 gRPC 连接,以接收 ASR 转录,并随后将此信息提供给 UI 进行渲染。

  • UI 服务器将调用转发到购物车管理器 API,以根据用户交互检索和操作购物车内容。

  • UI 服务器将调用转发到 Catalog RAG RAG,以处理所有目录相关的查询。

  • UI 服务器跟踪 UI 中当前显示的视图,以便在用户询问屏幕上显示的内容时为后端语言模型提供上下文。

Redis 消息(传入和传出)#

  • 为了检测 FOV 进入/退出,UI 服务器监听 UMIM 发布的 “PresenceUserActionStarted” 和 “PresenceUserActionFinished” Redis 消息。将为发生 FOV 事件的相应流 ID 提供会话 ID。需要此会话 ID 才能对 UI 服务器进行后续 API 调用。

  • UI 服务器监听 VMS 摄像头移除事件,以清除其内部缓存中陈旧或断开连接的流。

  • UI 服务器订阅 SDR 错误报告事件,以监控 POD 故障并通知 UI 向用户渲染错误。

  • UI 服务器提供一个 API 以编程方式触发 FOV 进入/退出,一旦调用 API,UI 服务器将发布 FOV 事件 Redis 消息以模拟 FOV 事件。

  • UI 服务器监听 “AttentionUserActionStarted”、“AttentionUserActionUpdated” 和 “AttentionUserActionFinished” Redis 事件,并将这些事件中的用户注意力状态转发到 UI。

UI 和 UI 服务器 WebSocket 连接和 API 交互#

UI 调用 Ingress REST API 以获取会话令牌。在给定时间只允许设置数量的会话,会话管理由 Ingress 管理。Ingress 在验证会话令牌后,将所有从 UI 到 UI 服务器的 API 调用转发到 UI 服务器。UI 服务器提供的任何 REST API 都将以这种方式调用,以确保单点入口。

Tokkio UI 还将通过 Ingress 启动与 UI 服务器的 WebSocket 连接,以建立一个通道,用于将事件传达给 Tokkio UI。UI 提供其用于连接 VST 的相同流 ID,并发出 WebSocket 连接请求,Ingress 在验证会话令牌后,将来自 UI 的 WebSocket 连接请求转发到 UI 服务器。

当从 UMIM 的 Redis 消息中检测到 FOV 进入事件时,UI 服务器将收到此消息提供的会话 ID。然后,UI 服务器将通过 WebSocket 消息发送会话 ID 以及操作,以指示 UI 显示主视图并开始会话。

类似地,当从 UMIM 的 Redis 消息中检测到 FOV 退出事件时,UI 服务器将发送相应的 WebSocket 消息,以指示 UI 相应地更新渲染以结束会话。

所有 ASR 和 TTS 转录都通过 WebSocket 消息传输到 UI 进行渲染。语音控制的 UI 渲染也通过 WebSocket 进行通信。

有一个 API 可用,允许用户使用 API 调用中提供的 JSON 有效负载,使用预定义的自定义组件渲染自定义视图。

UI 服务器源代码#

Tokkio UI 服务器源代码可以从 NGC 下载。它也包括 UI 的源代码。

$ ngc registry resource download-version "nvidia/ace/tokkio_ui_server_source:5.0.1"

UI 服务器 API#

Tokkio UI 服务器 REST API 总共有五个部分

  • 购物车(购物车管理器 MS 代理)

  • 菜单(目录 RAG MS 代理)

  • 视图(语音和 UI 交互,自定义视图)

  • 健康(健康检查)

  • 管理(FOV 进入/退出)

请注意,从 UI 到购物车管理器和目录 RAG 微服务的所有 API 通信都由 UI 服务器微服务控制,并且需要 UI 服务器进行预处理和后处理才能在 UI 中正常运行。UI 永远不会直接与目录 RAG 或购物车管理器微服务通信。

有关 API 的完整列表,请参阅 API 文档

错误报告#

当后端出现问题时,SDR 代理通过 Web UI 向用户提供通知。当检测到问题(例如 POD 崩溃)时,会生成描述错误的 Redis 消息,该消息被 UI 服务器拾取,然后 UI 服务器构建消息并将其传达给 UI 进行渲染,以便向用户提供关于可以从客户端采取的可能操作的建议。

下面演示了 UI 页面上显示的错误消息通知示例

UI Error Reporting Message