5.6 KiB
机器人能力
机器人是应用的能力扩展之一;建号/配置在此,接到本地 agent 调试用
dws dev connect(见 connect.md)。
为开放平台企业内部应用创建和配置机器人。参数用对应命令的 --help 查询。分两类场景:
- 新建智能体机器人:异步创建一个新的 Agent 应用 + 承载机器人(
submit/result),当前不绑定已有开放平台应用。 - 现有应用配置机器人:在已存在的应用上配置/启用/停用机器人(
get/config(upsert) /enable/disable),用--unified-app-id定位。
corpId/userId由系统上下文自动注入,CLI 不传。所有写操作先--dry-run,确认后再--yes。
一、新建智能体机器人(异步建号)
submit 提交任务拿 taskId,result --task-id <taskId> 轮询。submit 返回 taskId/status/expiresInSeconds/intervalSeconds/retryCount/bindsUnifiedApp,提交成功通常是 WAITING,且 bindsUnifiedApp=false 表示异步建号任务不挂到现有应用。失败重试:把上次 taskId 通过 --task-id 传回 submit,避免重复创建。result 返回 SUCCESS 或 APPROVAL_REQUIRED 时可能带 agentId/robotCode/clientId/clientSecret;凭证可用于本地建联,但线上搜索、加群、路由消息必须等版本发布到 RELEASE。
异步任务状态:
| status | 含义 | 下一步 |
|---|---|---|
WAITING |
创建中 | 按 intervalSeconds 轮询 robot result |
SUCCESS |
创建完成 | 保存 robotCode/clientId/clientSecret,凭据按敏感处理;若结果含明确 unifiedAppId 才继续版本发布,否则要求用户提供 |
APPROVAL_REQUIRED |
已建号但线上使用需审核 | 不要重复建号;若结果含明确 unifiedAppId 才提交版本发布审核,否则要求用户提供 |
FAIL |
创建失败 | 读 errorCode/errorMsg/failReason;可带原 taskId 重新 submit |
EXPIRED |
taskId 不存在或过期 |
重新 submit |
robot result 的 JSON 会额外补 lifecycle 与 nextSteps,用于把链路闭环到版本发布:
- 顶层
completionState=BLOCKED_BY_VERSION_PUBLISH、mustContinue=true、terminal=false是硬门禁;看到它就继续执行 blockingnextSteps,不能把后续dev connect当完成。 - 顶层
completionState=BLOCKED_BY_MISSING_UNIFIED_APP_ID、actionRequired=provide_unified_app_id时,说明缺少可安全写版本的应用主键;必须要求用户提供明确的unifiedAppId,不能用clientId/appKey自动反查后继续写版本。 - 后续顺序是
create_version→check_approval→publish_version→wait_release。所有写操作仍先--dry-run,确认后再--yes。 check-approval若返回approvalMode=SELECT_APPROVER,展示候选审批人的name/userId/mainAdmin,等待用户选择后再把该userId传给publish --approver-user-id;不要默认取第一个。connect_local的命令只用<clientSecret-from-result>占位,不能把真实clientSecret写进回答或脚本;它是optional=true/scope=local_debug_only,不能抵消版本发布审核。lifecycle.overallComplete=false或版本未进入RELEASE/AUDIT/UNDER_REVIEW时,不要总结“全部完成”“机器人已创建并成功连接”“可以在钉钉中 @机器人使用”。只能说“本地建联成功,线上发布/审批未完成”或继续执行阻塞步骤。
完成态门禁规则的完整说明见 devapp.md「核心规则」。
二、现有应用的机器人配置
robot get 返回机器人基础信息、回调、模式、状态、技能列表;应用尚未配置机器人时返回空态 robotStatus=UNCONFIGURED,不是业务错误。
状态判断:
robotStatus=UNCONFIGURED:应用未配置机器人,走robot config。robotStatus=OFFLINE:配置存在但停用/下线,可走robot enable。robotStatus=ONLINE:配置已启用;robotCode可用于加群、机器人身份发消息或后续建联。mode是字符串枚举:HTTPS/STREAM/AISKILL。robot get正常返回是平铺字段(configured/mode/robotStatus/robotCode/name/brief/desc),没有success字段;拿到这组字段就是配置已落库,不是异步等待态。- ONLINE 只代表能力已开启。要让机器人自动处理消息,还需配
--outgoing-url/--event-callback-url,或用dev connect接本地 Agent(见 connect.md)。
config 是 upsert:建或改都用它,不存在则建、存在则改,至少给一个配置字段。国际化字段(--i18n-name 等)传 JSON,如 '{"en_US":"Bot"}'。enable 是纯启用:只开启能力,不带配置字段(只传 --unified-app-id)。config/enable/disable 成功统一返回 success/operation/unifiedAppId/robotCode/robotStatus/configured;回读 robot get 看到 robotStatus=ONLINE 就别再误判"待生效"。
错误处理
| 情况 | 处理 |
|---|---|
robotStatus=UNCONFIGURED |
应用未配置机器人,先用 robot config 创建 |
| 应用名重复 | app-name 企业内需唯一,换名 |
ServiceResult.success=false |
透传 errorCode/errorMsg |
创建任务 EXPIRED |
任务过期,重新 submit(可带原 taskId) |
把机器人接到本地 agent 调试/值守见 connect.md。
发现命令
调用任何方法前先查清楚再敲:
# 浏览命令组下的子命令与 flag
dws dev app robot --help
# 查某方法的必填参数、类型、默认值
dws dev <command-path> --help
按 --help 输出构造 flag;不要凭旧 schema 名称猜参数。