service-digital-engagement-deployment-configure

Configures Embedded Messaging Deployments for Messaging for In-App and Web (MIAW). Use when the user needs to create a new embedded messaging deployment from scratch using Connect API with defaults, or update an existing deployment's settings using Metadata API. Produces Connect API request payloads

By forcedotcom · 2,340 installs

npx skills add forcedotcom/sf-skills --skill service-digital-engagement-deployment-configure

Source repository · Upstream listing

Configuring Embedded Messaging Deployment Configures EmbeddedServiceConfig metadata for Salesforce Messaging for In App and Web (MIAW). Supports two distinct workflows: creating new deployments via Connect API and updating existing deployments via Metadata API. Scope In scope : Creating new Embedded Service Deployments (API, Mobile, Web types) via Connect API; updating existing deployments with forms, branding, channel settings, and features via Metadata API; generating EmbeddedServiceConfig XML for updates Out of scope : Creating the messaging channel itself (use service digital engagement channel configure ), generating the website code snippet (offered only as a next step, see references/code snippet.md ), creating Experience Sites (Connect API prerequisite for Web type) Entry points and transport Delegated ( context.calledFrom == "service onboarding" ): use the approved values , ask nothing, and return failed naming any missing required key. Standalone (no context ): run Clarifying Questions. Transport A (primary): headless 360 MCP dispatch / dispatch readonly on /services/data/vXX.0/headless/metadata . Transport B : the sf commands below, only where a probe shows Transport A unavailable. Exception: Web create always uses the sf CLI (step 17a). Details: references/onboarding contract.md (§1 entry points, §2 transport, §3 pre scan, §5 result). Clarifying Questions Before generating, ask the user if not already clear (standalone only): Create or update? Are you creating a new deployment or updating an existing one? Deployment type? API (headless), Mobile (native apps), or Web (browser widget)? Channel name? What is the channelPlatformKey of the messaging channel to associate? For create : What should the deployment be named? For update : What features to configure? (pre chat forms, business hours, T&C, UI toggles) For pre chat (if requested): the questions in references/prechat forms.md §Inputs to Gather For update (Web) : What is the Experience Site name? Branding overrides needed? Required Inputs Gather or infer before proceeding: Operation : create or update Deployment type : API , Mobile , or Web Deployment name : Used as masterLabel . Derive the API name ( fullName / DeveloperName , Connect name ) from it: replace each run of characters other than letters and digits with , then trim leading/trailing ( Acme Support Chat → Acme Support Chat ). The result must match ^[a zA Z][a zA Z0 9 ] $ . Use the API name for every lookup and write Channel name : The channelPlatformKey of the associated messaging channel For update operations additionally: Site name (Web only): The Experience Site name (format ESW <name <timestamp ) Branding name (optional): Reference to existing BrandingSet Pre chat form fields (optional): see references/prechat forms.md §Inputs to Gather Business hours (optional): Name of existing BusinessHours record Defaults unless specified: isEnabled : true deploymentFeature : EmbeddedMessaging Workflow All steps are sequential. Do not skip or reorder. Branch based on the operation type. Phase 1 — Gather Context 1. Verify org API version — run scripts/check api version.sh 67.0 <org alias and report any errors it returns. If the script fails, generate a sfdx project.json in the metadata output folder with "sourceApiVersion": "67.0" . 2. Determine operation — standalone: ask whether the user wants to create a new deployment or update an existing one. Delegated: taken from values.operation , then confirmed by the pre scan (step 4a). 3. Collect inputs — standalone: per Clarifying Questions. Delegated: from values ( deploymentName , deploymentType , channelName required). 3a. Probe transport — read only GET of EmbeddedServiceConfig (contract §2). 4. Read deployment settings reference — load references/deployment settings.md to understand all available configuration options. 4a. Pre scan — look up the deployment by its derived API name (contract §3): none → create (Phase 2A); matches → no write, already configured , skip to Phase 3; differs → update (Phase 2B), announce each change (standalone: ask first); linked to a different channel → standalone: ask before repointing, delegated: failed . Standalone, deployment exists: offer exactly three choices — no change / override / add to existing. Phase 2A — Create New Deployment Use this path when the operation is create . 5. Determine API method by type — API/Mobile: Metadata API deploy. Web: Connect API (creates the Experience Site). All types need the channel to exist. 6. For API/Mobile types — read the template assets/esd api mobile template.xml and generate the EmbeddedServiceConfig XML with: deploymentType set to API or Mobile deploymentFeature set to EmbeddedMessaging All defaults applied 7. For Web type — inform the user that Web deployments require Connect API for initial creation because of a circular dependency between Network and CustomSite. Read references/connect api creation.md for the Connect API payload and instructions. 8. Generate output — produce the .EmbeddedServiceConfig meta.xml file (for API/Mobile) or Connect API instructions (for Web). 9. Present output and next steps — as in step 17. Phase 2B — Update Existing Deployment (Metadata API) Use this path when the operation is update . 10. Retrieve the existing deployment — take the current EmbeddedServiceConfig from the org before making changes. Transport A: the xmlRep from the step 3a/4a GET . Transport B: Use it as the starting structure — the update is always a full document (see Rules). If retrieval is not possible, load assets/esd web update template.xml as a fallback reference. 11. Apply messaging channel settings — in <embeddedServiceMessagingChannel set messagingChannel (the channel's channelPlatformKey ) and the UI toggles ( shouldShow , shouldStartNewLineOnEnter , invitation flags). Include every boolean, even when false ; full list in references/deployment settings.md . Leave each shouldShow / shouldStartNewLineOnEnter at its retrieved value (default false if nothing was retrieved); set one to true only when the user explicitly asks for that feature — never infer it from an example. 12. Apply pre chat forms — pre chat is OFF by default: omit <embeddedServiceForms unless the user asks to collect data before the conversation. If they do, read references/prechat forms.md first and follow it (field attributes, hidden fields, ChoiceList, displayNameFormat , deactivate vs. remove). Before generating , run the checks in its §Validating and Remediating Prerequisites against the retrieved channel. Channel fixes go through service digital engagement channel configure ; never hand edit the channel here. Delta to graft onto a base deployment: examples/esd web prechat fields.xml . 13. Apply branding customization (Web only) — a BrandingSet is automatically created with defaults when the deployment is created via Connect API. If the user wants to override specific branding properties (colors, fonts, dimensions), read references/branding and tooling.md for the Tooling API steps to update individual properties. 14. Apply invitation (Web only) — set isInvitationEnabled to true , add <embdMsgChannelInvitationConditions (fields and operators in references/deployment settings.md ), and keep formula (e.g. 1 AND 2 ) in sync with the condition sequence numbers whenever conditions change. 15. Apply additional settings : isTermsAndConditionsEnabled / isTermsAndConditionsRequired — T&C in pre chat site — Web: the retrieved value, unchanged (see Rules); omit for API/Mobile 16. Generate the file — produce the .EmbeddedServiceConfig meta.xml file at the path the user specifies, or default to EmbeddedServiceConfig/ in the project's metadata source path. 17. Present output and next steps — show the generated file and summarize what was configured. Recommend as next steps: Publish (Web) — only after the user approves, per step 17c Generate code snippet for integration — see references/code snippet.md Phase 2C — Apply to the org Runs for both Phase 2A and 2B, except when the pre scan returned already configured . Standalone: confirm before writing. Delegated: the plan approval is the confirmation; still announce each write. 17a. Write the deployment — Web create: Connect API (see references/connect api creation.md ) via sf api request rest — always, not dispatch (MCP dispatch fails with INTERNAL ERROR during site creation). API/Mobile create: Transport A POST EmbeddedServiceConfig (body carries type , fullName , xmlRep ); Transport B sf project deploy start . Update: Transport A PUT of the full document; Transport B sf project deploy start . Check results[].success , not just HTTP status. On failure stop and report the step — no silent retry. 17b. Re read and diff — GET the component again and confirm every intended field landed and no inline block ( embeddedServiceMessagingChannel , forms) was dropped. 17c. Publish (Web only) — never automatic. Publishing makes the changes live to customers; the deploy only saves a draft. After 17b, stop: summarize what changed, give the plain Setup link <instanceUrl /lightning/setup/EmbeddedServiceDeployments/<EmbeddedServiceConfigId /view so the user can review the draft, and ask whether to publish now. Publish only on an explicit yes in that turn (a "publish" in the original request does not count). Then dispatch POST on the fully qualified publish path; if it returns a path/route error, or on Transport B, run the sf publish command from references/connect api creation.md . Delegated: do not publish; return published: false . Note: a Web create via Connect API publishes by itself ( isPublishSuccess: true ); say so in the plan before creating. Phase 3 — Validate 18. Verify against checklist — confirm all items in the Verification Checklist below pass. 19. Report — delegated: return the contract §5 result. Standalone: the same outcome in plain language. Rules / Constraints Constraint Rationale deploymentType must be API , Mobile , or Web Platform rejects other values Web updates must include site , set to the retrieved value unchanged Site ( ESW <name <timestamp ) is auto generated at creation; the platform rejects a missing or changed value embeddedServiceMessagingChannelName must reference an existing channel Deployment fails if channel doesn't exist File extension is .EmbeddedServiceConfig meta.xml Metadata API uses this specific extension Do not hardcode file paths — respect sfdx project.json package directories Customer orgs customize source paths Do not embed deploy/push commands inside generated files or artifacts Artifacts stay portable; in session writes happen in Phase 2C through the chosen transport Update with the full retrieved document, never a minimal PUT Omitted inline blocks can be silently cleared by the update Gotchas Issue Resolution Branding overrides not applied Use Tooling API to update individual BrandingSet properties after the deployment is created Pre chat form, field, ChoiceList, or displayNameFormat issues See the Gotchas table in references/prechat forms.md Changes not appearing in widget The deploy is a draft until published (step 17c) sf api request rest fails ("No 'mode' found", "Nonexistent flag: url") See references/connect api creation.md §Publishing After Updates Deploy fails with "required field missing" or "upsert failed null" All attributes are mandatory: boolean fields in embeddedServiceMe