关于 service-omni-supervisor-surface-deploy
这项 Salesforce skill 为现有 OmniSupervisorConfig 添加受支持的操作和标签页。它面向配置主管界面的管理员,只插入缺失且无需外部引用的类型,并保留现有记录及顺序。
主要功能
- 01添加受支持的主管操作和标签页
- 02自动检测唯一配置
- 03只插入缺失类型
- 04追加记录并保留现有顺序
- 05阻止需要外部引用的不支持类型
适用场景
- 01填充现有主管界面
- 02添加所需操作和标签页且避免重复
- 03写入前预览计划更改
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ forcedotcom/ sf-skills --skill service-omni-supervisor-surface-deploy安装后在 Claude Code 中输入/service-omni-supervisor-surface-deploy确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/api-notes.mdscripts/deploy-and-report.shscripts/tests/_bootstrap.pytest_supervisor_surface_contracts.py详细介绍
service-omni-supervisor-surface-deploy
在现有的 OmniSupervisorConfig 上填充 Omni-Channel Supervisor 界面——即主管看到的操作按钮和标签页。OmniSupervisorConfigAction 和 OmniSupervisorConfigTab 是可创建的子 sObject(包含 OmniSupervisorConfigId、一个 *Type 选项列表和 DisplayOrder),因此只需使用父级配置的 Id,通过普通 Data API 插入来填充界面,而不必重新部署整个 OmniSupervisorConfig 元数据文档。这样,该叶节点便独立于 service-omni-supervisor-config-deploy(它负责元数据文件中的用户/队列配套项),还能以幂等方式运行——只插入缺失的类型。
输入
bash scripts/deploy-and-report.sh <org-alias> [config_developer_name]
org-alias(必填)——必须能通过sf org display --target-org <alias>解析。config_developer_name(可选)——要填充的OmniSupervisorConfig.DeveloperName。如果组织中恰好只有一个配置,则可省略,技能会自行解析。如果有多个配置但未提供名称,技能会阻止操作并列出这些配置。
环境变量覆盖项(均为选项列表值的 CSV;默认值为不依赖引用的标准集合):
SUPERVISOR_ACTIONS——默认值:AllAgents.ChangeQueues,AllAgents.ChangeSkills,AllAgents.ChangeGroups,AllAgents.AssignLearning,QueuesBacklog.ManageQueues。SUPERVISOR_TABS——默认值:Wallboard,Agents,QueuesBacklog,AssignedWork,SkillsBacklog。PLAN_ONLY=1——报告计划执行的内容(现有项与请求项),然后在任何写入发生前停止。
前提条件与安全措施
- 目标组织已通过
sfCLI 验证身份,具有 Service Cloud 许可证,且sfCLI 版本 ≥ 2.139.6。 - 必须存在
OmniSupervisorConfig,由service-omni-supervisor-config-deploy预配。如果不存在(或指定名称的配置不存在),技能会阻止操作,并提供target_skill指引。 - **生产环境防护:**脚本将
safe_to_write计算为以下条件之一成立:IsSandbox、TrialExpirationDate != null或OrganizationType属于 {Developer Edition, Base Edition}。如果条件不成立,脚本会阻止操作且不提供覆盖选项。
运行
bash scripts/deploy-and-report.sh <org-alias> [config_developer_name]
脚本会解析父级配置,读取已有的界面行,仅插入缺失的操作/标签页类型(DisplayOrder 会接续当前最大值),并将 JSON 输出到标准输出。
行为
仅支持不依赖引用的类型。配套行没有引用字段,因此只有自包含类型可通过无头方式插入。技能接受标准集合(references/api-notes.md 中的 SAFE_ACTIONS / SAFE_TABS),并会在开始时阻止任何需要外部引用的类型——*.CustomAction、*.AWSDashboard、FlexipageType、AIAgents、AgentforceSDR——并指引你前往 Setup。请求的类型不在支持范围内时,也会在任何写入发生前阻止操作。
**幂等性。**技能会将请求的类型与配置上已有的行进行比对;已有类型会标记为 reused,不会再次插入;缺失类型则会插入并标记为 created。只要有任何内容被插入,status 就是 created;否则为 reused。在配置不变的情况下重新运行技能不会进行任何写入。
**排序。**新行会追加到末尾:DisplayOrder 从该配套类型当前最大值加一开始,以保留 Setup 中已配置的排序。
输出约定
向标准输出输出一个 JSON 对象。status 的值为 created、reused、blocked,或(当设置 PLAN_ONLY=1 时)action_needed。该对象还包含 config(developer_name、id)、actions 和 tabs(各自包含 requested、created、reused、count)、manual_actions 以及 blocking_issue(除非 status: blocked,否则为 null)。
在组织端抽查:
SELECT OmniSupervisorActionType, DisplayOrder FROM OmniSupervisorConfigAction WHERE OmniSupervisorConfigId = :configId ORDER BY DisplayOrder
SELECT OmniSupervisorTabType, DisplayOrder FROM OmniSupervisorConfigTab WHERE OmniSupervisorConfigId = :configId ORDER BY DisplayOrder
限制
- 仅填充无需引用的标准操作类型和选项卡类型。自定义操作、FlexiPage 选项卡、AWS 仪表板和 AI Agent 界面需要外部引用,且必须在 Setup 中配置。
- 不会创建、重命名或删除父级
OmniSupervisorConfig、其用户/队列配套项,或主管用户/权限集。 - 不会移除界面行——只会添加缺失的行(不会进行破坏性协调)。
参考资料
| 文件 | 阅读时机 |
|---|---|
references/api-notes.md | OmniSupervisorActionType / OmniSupervisorTabType 的完整词汇表、哪些类型无需引用,以及配套行插入语义 |