关于 service-omni-presence-user-config-deploy
此 Salesforce skill 将 Omni-Channel 状态配置及其拒绝原因作为单个 Metadata API 包部署,并分配给指定 Agent。它适用于需要一致设置拒绝与会后工作字段的渠道配置流程。
主要功能
- 01原子部署配置与拒绝原因
- 02符合验证规则的整条记录配置
- 03按用户名或用户 ID 分配
- 04报告幂等部署状态
- 05生产环境写入保护
适用场景
- 01设置 Agent 的拒绝与会后工作行为
- 02在渠道配置时分配状态配置
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ forcedotcom/ sf-skills --skill service-omni-presence-user-config-deploy安装后在 Claude Code 中输入/service-omni-presence-user-config-deploy确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/api-notes.mdscripts/deploy-and-report.shscripts/tests/_bootstrap.pytest_presence_user_config_contracts.py详细介绍
service-omni-presence-user-config-deploy
在一个原子化的 Metadata API 包中部署 Omni PresenceUserConfig(即决定如何向 Agent 提供工作的“presence configuration”),以及它引用的 PresenceDeclineReason。Decline、auto-accept、decline-reason 和 ACW 字段带有跨字段验证器——启用 Decline 时必须关闭 Auto-Accept,启用 Decline Reason 时必须开启 Decline,且 ACW 计时器必须与其最长时间配对——因此只能通过一次完整记录写入正确设置,不能逐个字段设置。此技能会编码出一致的记录,并将其分配给指定的 Agent。它在 service-omni-agent-users-create / service-omni-presence-status-deploy 之后运行,并由 service-omni-channel-setup-coordinate 作为代表体验步骤调用。
输入
bash scripts/deploy-and-report.sh <org-alias> [config_developer_name] [agent_usernames_csv]
org-alias(必填)。config_developer_name(可选,默认值为Omni_Demo_Presence_Config)。agent_usernames_csv(可选)。以逗号分隔的 Username(…@…)和/或 15/18 字符 User Id(005…),用于分配;Id 会解析为 username(metadata 按 username 分配)。也可通过AGENT_USERNAMES_CSV设置。留空 → 部署配置,但不分配用户。
环境变量覆盖项:DECLINE_REASON_LABEL(默认值为 Training)、DECLINE_REASON_DEVELOPER_NAME(默认值根据标签生成)、CAPACITY(默认值为 5,范围为 1–100)、ACW_SECONDS(默认值为 60,范围为 10–3600)、PRESENCE_STATUS_ON_DECLINE(可选的 ServicePresenceStatus DeveloperName)。
前提条件和安全性
- 目标 org 已通过
sfCLI 验证身份,具有 Service Cloud 许可证,且sfCLI 版本 ≥ 2.139.6。 - 已启用 Omni-Channel 基础设置(
service-omni-base-settings-configure)。 - 任何
PRESENCE_STATUS_ON_DECLINE都必须已存在(service-omni-presence-status-deploy)。 - 适用三方
safe_to_write生产环境防护机制。
运行
deploy-and-report.sh 会将两个组件写入临时 DX 项目,并通过一次调用进行部署:
PresenceDeclineReason:<reason>— 拒绝原因(仅标签)。PresenceUserConfig:<config>— 容量 + 标签、enableAutoAccept=false、enableDecline=true、enableDeclineReason=true、declineReasons=<reason>、hasAfterConvoWorkTimer=true、afterConvoWorkMaxTime=<ACW_SECONDS>、可选的presenceStatusOnDecline,以及为已解析 Agent 设置的assignments/users。
各元素严格按 XSD 顺序输出。幂等性由每个组件的 Metadata API files[].state 提供(Unchanged→复用、Changed→更新、Created→创建);部署以 --async 运行,并轮询至终止状态。
行为
完整记录 + 一致性。 始终以符合验证规则的组合输出记录,因此重新部署会干净地无操作,而不是产生可能触发跨字段规则的字段差异。
非破坏性。 只写入指定的配置和拒绝原因;不会触及 org 中的其他 presence 配置和拒绝原因。会为已解析的 Agent 声明分配关系;此技能不会移除其未添加的用户(重新部署时会声明此配置的完整分配集合)。
输出约定
单个 JSON 对象:status ∈ created | updated | reused | blocked、config({developer_name, label, capacity, acw_seconds, state})、decline_reason({developer_name, label, state})、assigned_usernames、deploy_id、manual_actions、blocking_issue。
限制
- 每次调用只能处理一个 presence configuration。
- 编码的是 steel thread 中的 decline+ACW 代表配置文件;其他字段组合需要分叉 XML 模板。
- 不会在
ServiceChannel上设置渠道级 After-Conversation-Work 计时器(这是另一项配置),也不会部署ServicePresenceStatus,或通过权限集授予状态访问权限。
参考资料
| 文件 | 阅读时机 |
|---|---|
references/api-notes.md | PresenceUserConfig 跨字段验证器、XSD 元素顺序、拒绝原因打包,以及 ACW 字段配对 |
scripts/tests/_bootstrap.py | 契约测试套件加载的测试引导程序,用于定位技能根目录并运行其 shell 入口点 |
scripts/tests/test_presence_user_config_contracts.py | 更改部署脚本后运行,以验证防护、整条记录、成员关系和输出契约 |