mcpField
S
service-omni-skills-based-routing-configure

service-omni-skills-based-routing-configure

github.com/forcedotcom其他1.1k89 次安装1 天前更新
代码仓库

关于 service-omni-skills-based-routing-configure

此 Salesforce skill 为指定的活跃 Agent 用户配置 Omni-Channel 技能,按需创建技能及缺少的绑定。它使用 SkillUser 模型,重复运行时会复用现有配置,不删除既有分配。

主要功能

  1. 01创建或复用 Omni 技能
  2. 02将技能绑定到活跃 Agent
  3. 03先检测再写入,支持幂等运行
  4. 04按 Agent 报告部分失败

适用场景

  1. 01让指定 Agent 参与基于技能的路由
  2. 02为更多 Agent 添加技能而不重复绑定

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/forcedotcom/sf-skills --skill service-omni-skills-based-routing-configure

安装后在 Claude Code 中输入/service-omni-skills-based-routing-configure确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
api-notes.md
scripts/
configure-and-report.sh
scripts/tests/
_bootstrap.py
test_sbr_contracts.py

详细介绍

service-omni-skills-based-routing-configure

让 Agent 可通过 Omni **基于技能的路由(SBR)**进行路由。可路由的 Agent 需要 Skill,以及用于将该技能分配给 Agent 所属用户的关联对象 SkillUser。SkillUser 是经典 Omni-Channel 模型,由“设置 > 技能 > 分配用户”写入,并在工作项需要技能时进行评估。此技能会为一组活跃 Agent 用户确保存在一个技能及对应分配,且操作具有幂等性。

ServiceResource 和 ServiceResourceSkill 是 Field Service 的技能模型。在纯 Service Cloud 组织中,无法写入或查询 ServiceResource.IsActive,因此新建的资源会保持非活跃状态,关联记录也会被拒绝。因此,此技能采用受支持且适用于相应许可证的 SkillUser 路径。

输入

bash scripts/configure-and-report.sh <org-alias> <skill_developer_name> [agent_members_csv] [skill_master_label]
  • org-alias(必需)。
  • skill_developer_name(必需)。要确保存在并进行绑定的 Omni Skill DeveloperName(例如 Omni_Demo_Voice)。
  • agent_members_csv(可选)。要设为可通过技能路由的 Agent 列表,以逗号分隔;每个值可以是 Username(…@…)或 15/18 位 User Id(005…)。也可以通过 AGENT_MEMBERS_CSV 提供。省略时,技能会阻止执行(不会猜测要为哪些 Agent 分配技能)。
  • skill_master_label(可选)。仅在必须创建技能时使用的 MasterLabel;默认采用 DeveloperName 的标题式大小写形式。

前提条件与安全性

  • 目标组织已通过 sf CLI 验证身份,具有 Service Cloud 许可证,且 sf CLI ≥ 2.139.6。
  • 已启用 Omni-Channel 基本设置,并开启基于技能的路由(service-omni-base-settings-configure)。
  • 指定的 Agent 已存在且处于活跃状态(service-omni-agent-users-create)。
  • 适用三重 safe_to_write 生产环境保护机制。

运行

configure-and-report.sh 分两个幂等阶段执行,每个阶段都会先检测再写入:

  1. Skill — 按 DeveloperName 查询 Skill。若已存在,则复用;若不存在,则通过 Metadata API 部署 Skill 组件,并重新查询其 Id。
  2. SkillUser — 查询该 Skill 与已解析用户对应的现有 SkillUser 记录,然后仅通过 REST DML 创建缺失的(SkillId、UserId)绑定。并发情况下出现的 DUPLICATE_VALUE 会通过复用已有记录来协调处理。

行为

幂等且非破坏性。 复用现有技能和绑定;技能不会删除或重新分配任何非其创建的内容,因此重复运行会收敛,不会产生重复记录。仅解析活跃用户——非活跃用户无法接收路由的工作,因此会报告此情况,而不会静默地为其分配技能。

部分安全性。 如果部分绑定成功、部分失败,状态将为 partial,并在 blocking_issue 中列出各 Agent 的错误;成功的绑定会保留(每个关联记录都是一次独立写入)。

输出约定

单个 JSON 对象:status ∈ configured | reused | partial | blocked,skill({developer_name, id, state})、agents({username, user_id, skill_binding_id, skill_binding_state} 数组)、created_counts、reused_counts、manual_actions、blocking_issue。

  • reused — 技能和所有绑定均已存在。
  • configured — 至少创建了一个组件,且现在所有请求的绑定均已存在。
  • partial / blocked — 请参阅 blocking_issue;若原因是缺少前提条件,manual_actions 会列出所需的技能。

限制

  • 每次调用处理一个技能;Agent 集合需要的每个技能都要单独运行。
  • 不会编写 WorkSkillRouting 规则或基于字段的技能条件——这需要使用另一个技能。
  • 不会创建 Agent 用户、队列或状态配置。
  • SkillUser.SkillLevel 保持平台默认值;如需设置明确的熟练度,必须自行派生并修改 DML 主体。

参考资料

文件阅读时机
references/api-notes.md了解 Skill 元数据与 Skill sObject 的区别、SkillUser Agent 绑定模型及 SBR 基本设置前提条件
scripts/tests/test_sbr_contracts.py验证更改时——在此技能目录中运行 python3 scripts/tests/test_sbr_contracts.py

评论

支持 Markdown