用途:为已配置的 Omni 代理用户分配一个或多个权限集。默认目标为 Omni_Agent,该权限集授予 OmniChannel 组件、在线状态访问和演示队列可见性;没有分配记录,代理无法打开组件或接收路由工作。
主要能力:基于 SOQL 检测已有分配,只创建缺失的 (用户 × 权限集) 组合;支持多个权限集(逗号分隔),每个用户获得每个列出的权限集(笛卡尔积)。默认 Omni_Agent 缺失时,运行模式会先部署内置元数据再分配;--plan 模式只读报告,不部署。
使用方式:bash scripts/verify-and-assign.sh <org-alias> [count=3] [permission-set-names-csv=Omni_Agent]。org-alias 必填;count 默认 3,范围 1..10,须与代理用户数一致;权限集名默认 Omni_Agent。脚本依次计算 safe_to_write、解析代理用户、解析权限集、查询已有分配、逐个 POST 缺失项、再查询确认并输出报告。
前置条件:目标组织已通过 sf CLI 认证,具备 Service Cloud 许可,sf CLI ≥ 2.139.6;代理用户已存在;执行用户拥有 PermissionsAssignPermissionSets(系统管理员默认具备,仅 ModifyAllData 不够);至少存在一个 Omni 在线状态,建议先运行 service-omni-presence-status-deploy。生产组织写入会被 safe_to_write 守卫阻止且无覆盖。
输出:单个 JSON 对象,status 为 assigned、reused、partial 或 blocked,含 permission_sets、org_suffix、requested_count、expected_assignment_count、前后快照、assigned_count、reused_count、manual_actions 和 blocking_issue。
限制:仅分配单个 PermissionSet,不支持 PermissionSetGroup;自愈仅覆盖内置 Omni_Agent;只创建不删除;用户由代理命名模式推导,不接受显式用户 ID 列表。