1. #### 新增需求 - 集成钉钉 Stream SDK(如 `dingtalk-stream-sdk-go`),创建websocket管理,进行多个机器人实例的接入管理,监听固定 Topic:`/v1.0/card/instances/callback` 接收用户交互回调。 - 业务端 robot_config 进行机器人配置管理,管理机器人的相关配置信息,新增robot_config时,如果reply_type = 2时,就在websocket中新增实例, - 需要 Access Token:建立 Stream 连接鉴权需使用应用凭证(ClientID/Secret)或 Access Token。access token通过获取企业内部应用的accessToken接口获取。 - 调用钉钉创建卡片接口:必须先调用“创建卡片”接口生成卡片实例,获取 `outTrackId` 和 `guid`,流式更新依赖这些标识。 - 业务端创建、更新、删除robot_config的同时,websocket中实例也进行相应的操作 2. **执行流式更新**: - 收到回调后,业务逻辑处理数据,通过outTrackId查询robot_config,并调用ragflow中的ChatCompletionsStream,将返回的流式消息返回给AI流式接口。 - 调用"AI 卡片流式更新”接口,**`/v1.0/card/instances/streamingUpdate`** 传入 `guid`、`outTrackId` 及分段内容 `content`。 - 设置 `isFull=false` 进行增量更新,数据返回完毕后设置 `isFull=true` 结束流。 1. **状态管理**:流式传输结束时,务必将 `isFull` 设为 `true`,否则卡片会一直处于“加载中”状态。若发生异常,需设置失败状态以终止加载。 2. **并发控制**:同一卡片的流式更新请求需按顺序发送,避免乱序导致内容显示错误。 3. **超时处理**:建议在服务端设置合理的超时机制,防止长连接因网络波动断开后未重连。