用途:为可路由 sObject 确保 Salesforce 组织中恰好存在一个 ServiceChannel。Salesforce 限制每个 RelatedEntity 只能有一个 ServiceChannel,因此该技能先检测再决定复用或部署,避免盲目部署导致“This Salesforce object is already in use by another Service channel.”错误。每次调用只处理一个 sObject;配置多个 sObject 需分别调用,且应在 service-omni-base-settings-configure 启用 Omni-Channel 之后执行。
主要能力:按 sObject 复用标准渠道或已有自定义渠道,仅在无渠道时部署规范资产。Case 对应 Cases(Cases.serviceChannel-meta.xml);Incident 无标准渠道,首次运行部署 Incidents.serviceChannel-meta.xml;MessagingSession 标准渠道为 sfdc_livemessage,缺失时部署 MessagingSessions.serviceChannel-meta.xml;VoiceCall 标准渠道为 sfdc_phone,缺失时部署 VoiceCalls.serviceChannel-meta.xml。
使用方式:bash scripts/deploy-and-report.sh <org-alias> [Case|Incident|MessagingSession|VoiceCall]。org-alias 必填;sobject_type 可选,默认 Case。脚本依次执行前置检查(通过 EntityDefinition 确认目标 sObject 可查询)、发现(用 Tooling API 查询 RelatedEntity 匹配的 ServiceChannel,标准 Data API 会返回 INVALID_TYPE)、仅在需要时部署(sf project deploy start 规范 XML,Changed 为新建,Unchanged 为复用),最后输出报告。
输出:每次调用返回单个 JSON 对象,含 status(created|reused|blocked)、sobject_type、channel_developer_name、channel_id、channel_origin、target_capacity_model、target_related_entity_type、before_state、deploy_id、manual_actions、blocking_issue。channel_origin 可为 salesforce_standard、canonical_asset、canonical_template 或 custom。
限制:前置条件包括 sf CLI 已认证(My Domain URL)、Service Cloud 许可、sf CLI ≥ 2.139.6、已启用 Omni-Channel 基础设置;Incident 需启用 Incident Management,MessagingSession 需 Enhanced Messaging。规范资产均使用 TAB_BASED,STATUS_BASED 因配套字段模式未公开而不在范围内。每次仅支持一个 sObject,仅支持上述四种类型;始终复用已有渠道,不会将配置错误的渠道重置为规范形态。并发下若部署报“already in use”,技能软失败,重跑会复用该渠道。