mcpField
S
service-omni-work-skill-routing-configure

service-omni-work-skill-routing-configure

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

关于 service-omni-work-skill-routing-configure

用于配置 Salesforce Omni WorkSkillRouting 规则的技能,面向按工作记录字段将工作路由到具备所需技能的 Agent。它会合并现有映射并通过 Metadata API 部署,避免无法读取现有元数据时静默覆盖规则。

主要功能

  1. 01按记录字段值映射所需 Skill
  2. 02保留并合并现有规则属性
  3. 03支持幂等重跑与单项映射更新
  4. 04通过 Metadata API 部署规则
  5. 05检查 Skill 前置条件和安全写入限制

适用场景

  1. 01按 Case 来源将工作分配给相应技能
  2. 02为 MessagingSession 等实体配置技能映射
  3. 03向已有路由规则追加字段映射
  4. 04处理组织不支持 WorkSkillRouting 的情况

安装

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

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

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

包含的文件

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

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

详细介绍

service-omni-work-skill-routing-configure

编写一条 Omni WorkSkillRouting 规则,根据工作记录中的字段值将工作路由给 Agent,而不只是依据 Agent 恰好具备的技能。service-omni-skills-based-routing-configure 会使 Agent 可参与路由(Skill + ServiceResource + ServiceResourceSkill),而此技能则根据工作项的某个字段决定需要哪项技能——例如,“当 Case.Origin = Phone 时,需要 Voice 技能”。该规则是一个通过 Metadata API 部署的 WorkSkillRouting 记录(包含一个头部和一个 workSkillRoutingAttributes 映射)。它会在引用的 Skill 已存在后运行,并属于由 service-omni-channel-setup-coordinate 协调的同一条路由配置流程。

输入

bash scripts/configure-and-report.sh <org-alias> <related_entity> <field> <skill> <value> [rule_master_label]
  • org-alias(必填)。
  • related_entity(必填)。规则适用的 sObject(例如 Case、MessagingSession、LiveChatTranscript、Lead、VoiceCall)。
  • field(必填)。属性评估的字段(例如 Case.Origin 或 Origin)。部署前会为未限定的标准字段加上相关实体前缀,因此 Origin 会变成 Case.Origin,以免被误认为自定义字段元数据名称。
  • skill(必填)。字段匹配时所需的 Omni Skill DeveloperName(例如 Voice)。
  • value(必填)。映射到该技能的字段值(例如 Phone)。仅支持纯文本值;不支持 XML 保留字符。
  • rule_master_label(可选)。规则的 MasterLabel;默认为 <related_entity> Skill Routing。

环境变量覆盖项:RULE_DEVELOPER_NAME(规则的 fullName,默认为相关实体名称——每个实体一条规则)、IS_ACTIVE(默认为 true)、SKILL_LEVEL(0–10)、SKILL_PRIORITY(0–10,额外技能的移除顺序)、IS_ADDITIONAL_SKILL(true/false)。

前置条件与安全

  • 目标组织已通过 sf CLI 进行身份验证,并具有 Service Cloud 许可证;sf CLI ≥ 2.139.6。
  • 已启用 Omni-Channel 基本设置,并开启基于技能的路由(service-omni-base-settings-configure)。
  • 引用的 Skill 已存在(service-omni-skills-based-routing-configure)。
  • 适用三重 safe_to_write 生产环境防护。

运行

  1. safe_to_write — 查询 Organization;拒绝向真实生产组织写入。
  2. Skill 前置条件 — 按 DeveloperName 查询 Skill;若不存在,则阻止操作并指向 service-omni-skills-based-routing-configure。
  3. 合并 — 通过 Tooling API 读取现有的 WorkSkillRouting.Metadata,保留无关属性,并仅替换或追加所请求的 (field, value) 映射。若无法确定读取结果,则阻止写入;WSR_REPLACE=1 是明确允许破坏性替换的例外开关。
  4. 部署 — 按 XSD/字母顺序生成合并后的 WorkSkillRouting 记录,并通过 Metadata API 部署(异步部署并轮询,直到进入终态)。
  5. 分类 — 读取 files[].state(Created / Changed / Unchanged),并报告为 created / updated / reused。

行为

幂等且安全合并。 WorkSkillRouting 对每个相关实体只允许一条规则,因此规则的 fullName 默认为实体名称。重复运行相同映射时会报告 reused;新增映射会合并到现有属性列表中;更改相同的字段/值映射时,只会更新对应条目。如果无法读取现有元数据,此技能绝不会悄悄替换现有规则。

优雅降级。 并非每个组织都会配置 WorkSkillRouting(部分试用版/CDO 不支持)。如果部署失败并返回 INVALID_TYPE / "not available" / "WorkSkillRouting" 形式的错误,则会报告为 blocked,并清楚说明限制,同时指向基本设置——此技能会提示该限制,而不会直接崩溃。

输出约定

单个 JSON 对象:status ∈ created | updated | reused | blocked(计划模式下另含 action_needed),rule({developer_name, master_label, related_entity, is_active, state}),attribute({field, skill, value, skill_level, skill_priority, is_additional_skill}),merge({merged_from_existing, attribute_count, preserved_count}),deploy_id,manual_actions,blocking_issue。

限制

  • 每次调用只映射一个字段→技能,每个相关实体只对应一条规则。在同一条规则上安全地累积多个调用的属性。
  • 不会创建 Skill、ServiceResources、Agent 用户、队列或状态配置。
  • 字段/值的正确性由平台在部署时验证;无效字段或值会导致部署失败,状态显示为 blocked。

参考资料

文件何时阅读
references/api-notes.md了解 WorkSkillRouting 元数据结构、XSD 元素顺序、每个实体仅允许一条规则的限制、属性字段及优雅降级触发条件
scripts/tests/test_work_skill_routing_contracts.py验证更改时阅读——在此技能目录中运行 python3 scripts/tests/test_work_skill_routing_contracts.py

评论

支持 Markdown