@salesforce/afv-skills 1.66.0 → 1.67.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -4
- package/skills/agentforce-offline-experimentation-run/SKILL.md +13 -28
- package/skills/commerce-react-storefront-create/SKILL.md +350 -0
- package/skills/consumer-goods-promotion-bo-api-deploy/SKILL.md +2 -2
- package/skills/consumer-goods-promotion-bo-api-deploy/references/generate-and-wire.md +28 -16
- package/skills/consumer-goods-promotion-bo-api-deploy/references/smoke-and-verify.md +18 -1
- package/skills/education-cloud-domain-configure/SKILL.md +21 -23
- package/skills/education-cloud-domain-configure/references/dependent-features.md +9 -0
- package/skills/education-cloud-domain-configure/references/domain-features.md +15 -0
- package/skills/education-cloud-domain-configure/references/gotchas-extended.md +8 -0
- package/skills/education-cloud-domain-configure/references/setup-widgets.md +123 -0
- package/skills/experience-search-coordinate/SKILL.md +2 -2
- package/skills/experience-search-coordinate/references/media-route.md +30 -4
- package/skills/experience-ui-bundle-features-generate/SKILL.md +1 -1
- package/skills/experience-ui-bundle-mfa-configure/SKILL.md +1 -1
- package/skills/platform-metadata-deploy/README.md +1 -1
- package/skills/platform-metadata-deploy/SKILL.md +114 -15
- package/skills/platform-metadata-deploy/references/agent-deployment-guide.md +3 -4
- package/skills/platform-metadata-deploy/references/orchestration.md +2 -3
- package/skills/platform-value-set-generate/SKILL.md +19 -19
- package/skills/platform-widget-generate/SKILL.md +25 -51
- package/skills/platform-widget-generate/examples/formulas.json +19 -2
- package/skills/platform-widget-generate/examples/localized-labels.json +57 -0
- package/skills/platform-widget-generate/references/widget-actions.md +29 -0
- package/skills/platform-widget-generate/references/widget-bundle-validation.md +1 -0
- package/skills/platform-widget-generate/references/widget-formulas.md +24 -7
- package/skills/platform-widget-generate/references/widget-gotchas.md +10 -0
- package/skills/platform-widget-generate/references/widget-labels.md +78 -0
- package/skills/platform-widget-generate/references/widget-styling.md +12 -0
- package/skills/sales-call-scoring-configure/SKILL.md +17 -10
- package/skills/sales-call-scoring-configure/scripts/enable-call-scoring.sh +55 -33
- package/skills/service-digital-engagement-channel-configure/SKILL.md +4 -2
- package/skills/service-digital-engagement-channel-configure/references/channel_settings.md +13 -2
- package/skills/service-digital-engagement-deployment-configure/SKILL.md +37 -100
- package/skills/service-digital-engagement-deployment-configure/assets/esd_web_update_template.xml +83 -8
- package/skills/service-digital-engagement-deployment-configure/examples/esd_web_prechat_fields.xml +74 -0
- package/skills/service-digital-engagement-deployment-configure/references/connect_api_creation.md +13 -3
- package/skills/service-digital-engagement-deployment-configure/references/deployment_settings.md +13 -78
- package/skills/service-digital-engagement-deployment-configure/references/onboarding_contract.md +5 -6
- package/skills/service-digital-engagement-deployment-configure/references/prechat_forms.md +245 -0
- package/skills/service-itsm-agentic-setup-incident-management/SKILL.md +164 -120
- package/skills/service-itsm-agentic-setup-incident-management/examples/output-templates.md +61 -37
- package/skills/service-itsm-agentic-setup-incident-management/references/audit-tracking.md +42 -0
- package/skills/service-itsm-agentic-setup-incident-management/references/broadcast-communications.md +23 -0
- package/skills/service-itsm-agentic-setup-incident-management/references/email-to-incident.md +23 -0
- package/skills/service-itsm-agentic-setup-incident-management/references/incident-dashboards.md +25 -0
- package/skills/service-itsm-agentic-setup-incident-management/references/incident-persona-psg.md +30 -146
- package/skills/service-itsm-agentic-setup-incident-management/references/incident-preferences.md +32 -136
- package/skills/service-itsm-agentic-setup-incident-management/references/major-incident-management.md +32 -155
- package/skills/service-itsm-agentic-setup-incident-management/references/manage-incidents-with-ai.md +45 -0
- package/skills/service-itsm-agentic-setup-incident-management/references/priority-matrix.md +32 -0
- package/skills/service-itsm-agentic-setup-incident-management/references/service-mgmt-privilege.md +30 -140
- package/skills/service-itsm-agentic-setup-incident-management/references/sla-milestones.md +110 -0
|
@@ -27,20 +27,12 @@ Configures `EmbeddedServiceConfig` metadata for Salesforce Messaging for In-App
|
|
|
27
27
|
|
|
28
28
|
---
|
|
29
29
|
|
|
30
|
-
## Entry points
|
|
30
|
+
## Entry points and transport
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
- **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.
|
|
33
|
+
- **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).
|
|
33
34
|
|
|
34
|
-
|
|
35
|
-
- **Standalone** — no `context`. Run Clarifying Questions as written.
|
|
36
|
-
|
|
37
|
-
Both paths run the same pre-scan, write and validate steps. Full contract (payload, wording rules, result shape, registration entry): `references/onboarding_contract.md`.
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
## Transport
|
|
42
|
-
|
|
43
|
-
Org reads and writes go through the **headless-360 MCP `dispatch` / `dispatch_readonly`** tools on `/services/data/vXX.0/headless/metadata` (**Transport A, primary**). Use the **`sf` CLI** (**Transport B**) only for a type/verb that a read-only probe shows is not onboarded, or when the MCP is unavailable. Probe each type separately — never infer onboarding from a different type. Details, the GET → modify → full-document PUT rule, and the credential trap are in `references/onboarding_contract.md` §2. The `sf` commands in the steps below are the Transport B form. Exception: Web create always uses the `sf` CLI (step 17a).
|
|
35
|
+
Details: `references/onboarding_contract.md` (§1 entry points, §2 transport, §3 pre-scan, §5 result).
|
|
44
36
|
|
|
45
37
|
---
|
|
46
38
|
|
|
@@ -53,6 +45,7 @@ Before generating, ask the user if not already clear (standalone only):
|
|
|
53
45
|
- **Channel name?** What is the `channelPlatformKey` of the messaging channel to associate?
|
|
54
46
|
- For **create**: What should the deployment be named?
|
|
55
47
|
- For **update**: What features to configure? (pre-chat forms, business hours, T&C, UI toggles)
|
|
48
|
+
- For **pre-chat** (if requested): the questions in `references/prechat_forms.md` §Inputs to Gather
|
|
56
49
|
- For **update (Web)**: What is the Experience Site name? Branding overrides needed?
|
|
57
50
|
|
|
58
51
|
---
|
|
@@ -69,7 +62,7 @@ Gather or infer before proceeding:
|
|
|
69
62
|
For **update** operations additionally:
|
|
70
63
|
- **Site name** (Web only): The Experience Site name (format `ESW_<name>_<timestamp>`)
|
|
71
64
|
- **Branding name** (optional): Reference to existing `BrandingSet`
|
|
72
|
-
- **Pre-chat form fields** (optional):
|
|
65
|
+
- **Pre-chat form fields** (optional): see `references/prechat_forms.md` §Inputs to Gather
|
|
73
66
|
- **Business hours** (optional): Name of existing `BusinessHours` record
|
|
74
67
|
|
|
75
68
|
Defaults unless specified:
|
|
@@ -88,31 +81,19 @@ All steps are sequential. Do not skip or reorder. Branch based on the operation
|
|
|
88
81
|
|
|
89
82
|
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).
|
|
90
83
|
|
|
91
|
-
3. **Collect inputs** — standalone:
|
|
84
|
+
3. **Collect inputs** — standalone: per Clarifying Questions. Delegated: from `values` (`deploymentName`, `deploymentType`, `channelName` required).
|
|
92
85
|
|
|
93
|
-
3a. **Probe transport** — read-only `GET` of `EmbeddedServiceConfig`
|
|
86
|
+
3a. **Probe transport** — read-only `GET` of `EmbeddedServiceConfig` (contract §2).
|
|
94
87
|
|
|
95
88
|
4. **Read deployment settings reference** — load `references/deployment_settings.md` to understand all available configuration options.
|
|
96
89
|
|
|
97
|
-
4a. **Pre-scan** —
|
|
98
|
-
- none → operation is `create` (Phase 2A)
|
|
99
|
-
- exists and every targeted field already matches → **make no write**; return `already-configured` (delegated) or say so plainly (standalone). Skip to Phase 3
|
|
100
|
-
- exists with differences → operation is `update` (Phase 2B); announce each change, then write (standalone: ask for a yes first)
|
|
101
|
-
- exists but linked to a different channel → standalone: ask before repointing; delegated: return `failed`
|
|
102
|
-
|
|
103
|
-
Standalone with an existing deployment: offer no change / override / add to existing.
|
|
90
|
+
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.
|
|
104
91
|
|
|
105
92
|
### Phase 2A — Create New Deployment
|
|
106
93
|
|
|
107
94
|
Use this path when the operation is `create`.
|
|
108
95
|
|
|
109
|
-
5. **Determine API method by type
|
|
110
|
-
|
|
111
|
-
| Deployment Type | Creation Method | Prerequisites |
|
|
112
|
-
|----------------|-----------------|---------------|
|
|
113
|
-
| API | Metadata API deploy | Channel must exist |
|
|
114
|
-
| Mobile | Metadata API deploy | Channel must exist |
|
|
115
|
-
| Web | Connect API | Channel must exist + Experience Site required |
|
|
96
|
+
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.
|
|
116
97
|
|
|
117
98
|
6. **For API/Mobile types** — read the template `assets/esd_api_mobile_template.xml` and generate the `EmbeddedServiceConfig` XML with:
|
|
118
99
|
- `deploymentType` set to `API` or `Mobile`
|
|
@@ -123,16 +104,7 @@ Use this path when the operation is `create`.
|
|
|
123
104
|
|
|
124
105
|
8. **Generate output** — produce the `.EmbeddedServiceConfig-meta.xml` file (for API/Mobile) or Connect API instructions (for Web).
|
|
125
106
|
|
|
126
|
-
9. **Present output and next steps** —
|
|
127
|
-
- **Publish** the deployment via Connect API to make it live:
|
|
128
|
-
```bash
|
|
129
|
-
sf api request rest "/services/data/v67.0/connect/embeddedservice/embeddedserviceconfig/publish/<EMBEDDED_SERVICE_CONFIG_ID>" -X POST -b '{}' -o <org-alias>
|
|
130
|
-
```
|
|
131
|
-
To obtain the `EMBEDDED_SERVICE_CONFIG_ID`:
|
|
132
|
-
```bash
|
|
133
|
-
sf data query --use-tooling-api --query "SELECT Id FROM EmbeddedServiceConfig WHERE DeveloperName = '<DEPLOYMENT_NAME>'" --target-org <org-alias>
|
|
134
|
-
```
|
|
135
|
-
- **Generate code snippet** for integration — see `references/code_snippet.md`
|
|
107
|
+
9. **Present output and next steps** — as in step 17.
|
|
136
108
|
|
|
137
109
|
### Phase 2B — Update Existing Deployment (Metadata API)
|
|
138
110
|
|
|
@@ -142,43 +114,26 @@ Use this path when the operation is `update`.
|
|
|
142
114
|
```bash
|
|
143
115
|
sf project retrieve start --metadata EmbeddedServiceConfig:<DEPLOYMENT_NAME> --target-org <org-alias>
|
|
144
116
|
```
|
|
145
|
-
Use it as the starting structure — the update is always a **full document
|
|
117
|
+
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.
|
|
146
118
|
|
|
147
|
-
11. **Apply messaging channel settings** —
|
|
148
|
-
- `messagingChannel` — the channel's `channelPlatformKey`
|
|
149
|
-
- `shouldShowAgentforceTagline` — Agentforce branding
|
|
150
|
-
- `shouldShowDeliveryReceipts` — delivery receipts
|
|
151
|
-
- `shouldShowEmojiSelection` — emoji picker
|
|
152
|
-
- `shouldShowReadReceipts` — read receipts
|
|
153
|
-
- `shouldShowTypingIndicators` — typing indicators
|
|
154
|
-
- `shouldStartNewLineOnEnter` — Enter key behavior
|
|
155
|
-
- `isChatInvitationCustomizable` / `isInvitationEnabled` — chat invitation settings
|
|
119
|
+
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.
|
|
156
120
|
|
|
157
|
-
12. **Apply pre-chat forms** —
|
|
121
|
+
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).
|
|
122
|
+
- **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.
|
|
123
|
+
- Delta to graft onto a base deployment: `examples/esd_web_prechat_fields.xml`.
|
|
158
124
|
|
|
159
125
|
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.
|
|
160
126
|
|
|
161
|
-
14. **Apply invitation** (Web only) —
|
|
162
|
-
- Set `isInvitationEnabled` to `true` in `<embeddedServiceMessagingChannel>`
|
|
163
|
-
- Generate repeatable `<embdMsgChannelInvitationConditions>` elements with `sequence`, `conditionType`, `operand`, `value`, and optionally `customVariableName`
|
|
164
|
-
- Update the `formula` field in `<embeddedServiceMessagingChannel>` to reference the condition sequences (e.g., `1 AND 2`, `1 OR 2`). The formula must be updated whenever conditions are added or removed to stay in sync with the `sequence` numbers
|
|
165
|
-
- See `references/deployment_settings.md` for available condition types and operators
|
|
127
|
+
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.
|
|
166
128
|
|
|
167
129
|
15. **Apply additional settings**:
|
|
168
130
|
- `isTermsAndConditionsEnabled` / `isTermsAndConditionsRequired` — T&C in pre-chat
|
|
169
|
-
-
|
|
131
|
+
- `site` — Web: the retrieved value, unchanged (see Rules); omit for API/Mobile
|
|
170
132
|
|
|
171
133
|
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.
|
|
172
134
|
|
|
173
135
|
17. **Present output and next steps** — show the generated file and summarize what was configured. Recommend as next steps:
|
|
174
|
-
- **Publish**
|
|
175
|
-
```bash
|
|
176
|
-
sf api request rest "/services/data/v67.0/connect/embeddedservice/embeddedserviceconfig/publish/<EMBEDDED_SERVICE_CONFIG_ID>" -X POST -b '{}' -o <org-alias>
|
|
177
|
-
```
|
|
178
|
-
To obtain the `EMBEDDED_SERVICE_CONFIG_ID`:
|
|
179
|
-
```bash
|
|
180
|
-
sf data query --use-tooling-api --query "SELECT Id FROM EmbeddedServiceConfig WHERE DeveloperName = '<DEPLOYMENT_NAME>'" --target-org <org-alias>
|
|
181
|
-
```
|
|
136
|
+
- **Publish** (Web) — only after the user approves, per step 17c
|
|
182
137
|
- **Generate code snippet** for integration — see `references/code_snippet.md`
|
|
183
138
|
|
|
184
139
|
### Phase 2C — Apply to the org
|
|
@@ -193,13 +148,13 @@ Runs for both Phase 2A and 2B, except when the pre-scan returned `already-config
|
|
|
193
148
|
|
|
194
149
|
17b. **Re-read and diff** — `GET` the component again and confirm every intended field landed and no inline block (`embeddedServiceMessagingChannel`, forms) was dropped.
|
|
195
150
|
|
|
196
|
-
17c. **Publish (Web only, only
|
|
151
|
+
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.
|
|
197
152
|
|
|
198
153
|
### Phase 3 — Validate
|
|
199
154
|
|
|
200
155
|
18. **Verify against checklist** — confirm all items in the Verification Checklist below pass.
|
|
201
156
|
|
|
202
|
-
19. **Report** — delegated: return
|
|
157
|
+
19. **Report** — delegated: return the contract §5 result. Standalone: the same outcome in plain language.
|
|
203
158
|
|
|
204
159
|
---
|
|
205
160
|
|
|
@@ -207,20 +162,13 @@ Runs for both Phase 2A and 2B, except when the pre-scan returned `already-config
|
|
|
207
162
|
|
|
208
163
|
| Constraint | Rationale |
|
|
209
164
|
|-----------|-----------|
|
|
210
|
-
| Always retrieve existing deployment before updating | Ensures current settings are preserved and only intended changes are applied |
|
|
211
165
|
| `deploymentType` must be `API`, `Mobile`, or `Web` | Platform rejects other values |
|
|
212
|
-
|
|
|
213
|
-
| Web deployments cannot be created via Metadata API | Circular dependency between Network and CustomSite — use Connect API |
|
|
166
|
+
| 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 |
|
|
214
167
|
| `embeddedServiceMessagingChannelName` must reference an existing channel | Deployment fails if channel doesn't exist |
|
|
215
|
-
| `site` field required for Web type updates | Web widget must be associated with an Experience Site |
|
|
216
|
-
| BrandingSet is auto-created with defaults by Connect API | To override branding properties, use Tooling API — see `references/branding_and_tooling.md` |
|
|
217
|
-
| Pre-chat form fields must reference valid channel custom parameters | ChoiceList fields need the parameter deployed on the channel first |
|
|
218
168
|
| File extension is `.EmbeddedServiceConfig-meta.xml` | Metadata API uses this specific extension |
|
|
219
169
|
| Do not hardcode file paths — respect `sfdx-project.json` package directories | Customer orgs customize source paths |
|
|
220
170
|
| 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 |
|
|
221
171
|
| Update with the full retrieved document, never a minimal PUT | Omitted inline blocks can be silently cleared by the update |
|
|
222
|
-
| Pre-scan before every write; no write when the org already matches | Makes re-runs idempotent and keeps "already configured" honest |
|
|
223
|
-
| Publish step (Connect API) required after Web ESD updates | Changes are not live until published |
|
|
224
172
|
|
|
225
173
|
---
|
|
226
174
|
|
|
@@ -228,19 +176,11 @@ Runs for both Phase 2A and 2B, except when the pre-scan returned `already-config
|
|
|
228
176
|
|
|
229
177
|
| Issue | Resolution |
|
|
230
178
|
|-------|------------|
|
|
231
|
-
| Web ESD creation fails via Metadata API | Web type requires Connect API for initial creation; use Metadata API only for updates |
|
|
232
|
-
| Site name not found | Site must exist before Web ESD update; format is `ESW_<name>_<timestamp>` |
|
|
233
179
|
| Branding overrides not applied | Use Tooling API to update individual BrandingSet properties after the deployment is created |
|
|
234
|
-
| Pre-chat
|
|
235
|
-
| Changes not appearing in widget |
|
|
236
|
-
| `sf api request rest`
|
|
237
|
-
|
|
|
238
|
-
| Web create via MCP `dispatch` returns `INTERNAL_ERROR` | Platform limitation of the MCP route during site creation — use `sf api request rest` for Web create. API/Mobile create and publish work via `dispatch` |
|
|
239
|
-
| `embeddedServiceFlowConfig.enabled` error | Set to `false` unless you specifically need embedded flows (not routing flows) |
|
|
240
|
-
| reCAPTCHA configuration rejected | reCAPTCHA is `@HideInWsdl` — must use Tooling API |
|
|
241
|
-
| Business hours not taking effect | Only updating existing business hours works; creation is managed separately |
|
|
242
|
-
| Deploy fails with "required field missing" or "upsert failed null" | All attributes are mandatory: boolean fields in `embeddedServiceMessagingChannel` (include all even with default `false`), and all form field attributes (`formField`, `formFieldType`, `isHidden`, `isRequired`, `displayOrder`, `messagingChannelParameterType`) |
|
|
243
|
-
| Standard pre-chat field not found | Use `_` prefix for standard fields in `formField`: `_FirstName`, `_LastName`, `_Email`, `_Subject` |
|
|
180
|
+
| Pre-chat form, field, ChoiceList, or `displayNameFormat` issues | See the Gotchas table in `references/prechat_forms.md` |
|
|
181
|
+
| Changes not appearing in widget | The deploy is a draft until published (step 17c) |
|
|
182
|
+
| `sf api request rest` fails ("No 'mode' found", "Nonexistent flag: --url") | See `references/connect_api_creation.md` §Publishing After Updates |
|
|
183
|
+
| Deploy fails with "required field missing" or "upsert failed null" | All attributes are mandatory: boolean fields in `embeddedServiceMessagingChannel` (include all even with default `false`), and all pre-chat form field attributes |
|
|
244
184
|
|
|
245
185
|
---
|
|
246
186
|
|
|
@@ -256,7 +196,7 @@ Runs for both Phase 2A and 2B, except when the pre-scan returned `already-config
|
|
|
256
196
|
### Web Type Checks
|
|
257
197
|
- [ ] Is `site` populated with the Experience Site name?
|
|
258
198
|
- [ ] If branding is configured, does `embeddedServiceBrandingName` reference an existing BrandingSet?
|
|
259
|
-
- [ ]
|
|
199
|
+
- [ ] Pre-chat (if configured): does every item in the `references/prechat_forms.md` Verification Checklist pass?
|
|
260
200
|
- [ ] If `isInvitationEnabled` is `true`, is `formula` populated and consistent with all `sequence` numbers in `<embdMsgChannelInvitationConditions>`?
|
|
261
201
|
|
|
262
202
|
### API/Mobile Type Checks
|
|
@@ -264,17 +204,15 @@ Runs for both Phase 2A and 2B, except when the pre-scan returned `already-config
|
|
|
264
204
|
- [ ] Is `deploymentType` correctly set to `API` or `Mobile`?
|
|
265
205
|
|
|
266
206
|
### Post-Deploy Checks
|
|
267
|
-
- [ ] Is user reminded to
|
|
268
|
-
- [ ] Is user reminded to activate components (Tooling API) if messaging components were deployed?
|
|
207
|
+
- [ ] Web: did you stop before publishing, give the review link, and publish only after the user's explicit yes? Is the user reminded to activate any deployed messaging components (Tooling API)?
|
|
269
208
|
|
|
270
209
|
---
|
|
271
210
|
|
|
272
211
|
## Output Expectations
|
|
273
212
|
|
|
274
213
|
Deliverables:
|
|
275
|
-
- **
|
|
276
|
-
- **
|
|
277
|
-
- **For update**: `<source-path>/EmbeddedServiceConfig/<DeploymentName>.EmbeddedServiceConfig-meta.xml`
|
|
214
|
+
- **API/Mobile create, and any update**: `<source-path>/EmbeddedServiceConfig/<DeploymentName>.EmbeddedServiceConfig-meta.xml`
|
|
215
|
+
- **Web create**: Connect API payload and instructions (no XML file)
|
|
278
216
|
|
|
279
217
|
File structure follows the templates in `assets/`.
|
|
280
218
|
|
|
@@ -285,6 +223,7 @@ File structure follows the templates in `assets/`.
|
|
|
285
223
|
| Need | Delegate to |
|
|
286
224
|
|------|-------------|
|
|
287
225
|
| Creating the messaging channel | `service-digital-engagement-channel-configure` skill |
|
|
226
|
+
| Channel custom parameters, flow-variable mappings, or Queue → Omni-Flow routing | `service-digital-engagement-channel-configure` skill (pass the retrieved channel; see step 12) |
|
|
288
227
|
| Creating Omni-Channel routing flows | `automation-flow-generate` skill |
|
|
289
228
|
| Creating permission sets for agents | `platform-permission-set-generate` skill |
|
|
290
229
|
|
|
@@ -294,14 +233,12 @@ File structure follows the templates in `assets/`.
|
|
|
294
233
|
|
|
295
234
|
| File | When to read |
|
|
296
235
|
|------|-------------|
|
|
297
|
-
| `references/onboarding_contract.md` |
|
|
298
|
-
| `assets/esd_api_mobile_template.xml` | Before generating API
|
|
299
|
-
| `
|
|
300
|
-
| `references/
|
|
301
|
-
| `references/connect_api_creation.md` | When creating Web type deployments (Connect API required) |
|
|
236
|
+
| `references/onboarding_contract.md` | Pre-scan (§3, both modes); delegated mode (`context.calledFrom == "service-onboarding"`), org writes (transport), module registration |
|
|
237
|
+
| `assets/esd_api_mobile_template.xml`, `assets/esd_web_update_template.xml` | Before generating API/Mobile deployments and Web updates, respectively |
|
|
238
|
+
| `references/deployment_settings.md` | When configuring deployment options beyond defaults; less common gotchas (embedded flow, reCAPTCHA, business hours) |
|
|
239
|
+
| `references/prechat_forms.md` | Whenever pre-chat is requested — inputs, field rules, ChoiceList, `displayNameFormat`, deactivate vs. remove, pre-chat gotchas and checklist |
|
|
240
|
+
| `references/connect_api_creation.md` | When creating Web type deployments (Connect API required); publish command and ID query |
|
|
302
241
|
| `references/branding_and_tooling.md` | When user asks about branding configuration |
|
|
303
242
|
| `references/code_snippet.md` | When user wants the JavaScript embed code snippet for their website |
|
|
304
243
|
| `scripts/check-api-version.sh` | Phase 1 — verify org API version meets the passed minimum (67.0) |
|
|
305
|
-
| `examples/esd_api.xml` | To verify output
|
|
306
|
-
| `examples/esd_mobile.xml` | To verify output for Mobile type deployment |
|
|
307
|
-
| `examples/esd_web_full.xml` | To verify output for fully configured Web deployment |
|
|
244
|
+
| `examples/esd_api.xml`, `esd_mobile.xml`, `esd_web_full.xml`, `esd_web_prechat_fields.xml` | To verify output per type; the pre-chat file is a forms delta to graft onto `esd_web_full.xml` |
|
package/skills/service-digital-engagement-deployment-configure/assets/esd_web_update_template.xml
CHANGED
|
@@ -3,25 +3,98 @@
|
|
|
3
3
|
<areGuestUsersAllowed>false</areGuestUsersAllowed>
|
|
4
4
|
|
|
5
5
|
<!-- Branding (optional — reference an existing BrandingSet) -->
|
|
6
|
-
<!--
|
|
6
|
+
<!-- To set branding, add a branding element whose value is {BRANDING_SET_NAME} -->
|
|
7
7
|
|
|
8
8
|
<deploymentFeature>EmbeddedMessaging</deploymentFeature>
|
|
9
9
|
<deploymentType>{Web|API|Mobile}</deploymentType>
|
|
10
10
|
|
|
11
|
+
<!-- Pre-Chat Form (OPTIONAL) -->
|
|
12
|
+
<!-- Pre-chat is OFF by default. DELETE this entire block if the deployment
|
|
13
|
+
collects no pre-chat data (that is the correct default).
|
|
14
|
+
Each formField must resolve to a standard parameter (_-prefixed) OR an
|
|
15
|
+
existing customParameter on the channel below. ChoiceList fields also need
|
|
16
|
+
a choiceList record that ALREADY EXISTS in the org (created in Setup —
|
|
17
|
+
it is not a deployable artifact). -->
|
|
18
|
+
<embeddedServiceForms>
|
|
19
|
+
<displayContext>Conversation</displayContext>
|
|
20
|
+
|
|
21
|
+
<!-- 1. Standard field -->
|
|
22
|
+
<embeddedServiceFormFields>
|
|
23
|
+
<displayOrder>0</displayOrder>
|
|
24
|
+
<formField>_FirstName</formField>
|
|
25
|
+
<formFieldType>Text</formFieldType>
|
|
26
|
+
<isHidden>false</isHidden>
|
|
27
|
+
<isRequired>true</isRequired>
|
|
28
|
+
<messagingChannelParameterType>Standard</messagingChannelParameterType>
|
|
29
|
+
</embeddedServiceFormFields>
|
|
30
|
+
|
|
31
|
+
<!-- 2. Visible custom text field (formField = an existing channel customParameter name) -->
|
|
32
|
+
<embeddedServiceFormFields>
|
|
33
|
+
<displayOrder>1</displayOrder>
|
|
34
|
+
<formField>{CUSTOM_PARAM_NAME}</formField>
|
|
35
|
+
<formFieldType>Text</formFieldType>
|
|
36
|
+
<isHidden>false</isHidden>
|
|
37
|
+
<isRequired>false</isRequired>
|
|
38
|
+
<messagingChannelParameterType>Custom</messagingChannelParameterType>
|
|
39
|
+
</embeddedServiceFormFields>
|
|
40
|
+
|
|
41
|
+
<!-- 3. Checkbox custom field -->
|
|
42
|
+
<embeddedServiceFormFields>
|
|
43
|
+
<displayOrder>2</displayOrder>
|
|
44
|
+
<formField>{CHECKBOX_PARAM_NAME}</formField>
|
|
45
|
+
<formFieldType>Checkbox</formFieldType>
|
|
46
|
+
<isHidden>false</isHidden>
|
|
47
|
+
<isRequired>false</isRequired>
|
|
48
|
+
<messagingChannelParameterType>Custom</messagingChannelParameterType>
|
|
49
|
+
</embeddedServiceFormFields>
|
|
50
|
+
|
|
51
|
+
<!-- 4. ChoiceList (dropdown) field — choiceList DeveloperName must already exist in the org -->
|
|
52
|
+
<embeddedServiceFormFields>
|
|
53
|
+
<choiceList>{CHOICELIST_DEVELOPER_NAME}</choiceList>
|
|
54
|
+
<displayOrder>3</displayOrder>
|
|
55
|
+
<formField>{CHOICELIST_PARAM_NAME}</formField>
|
|
56
|
+
<formFieldType>ChoiceList</formFieldType>
|
|
57
|
+
<isHidden>false</isHidden>
|
|
58
|
+
<isRequired>true</isRequired>
|
|
59
|
+
<messagingChannelParameterType>Custom</messagingChannelParameterType>
|
|
60
|
+
</embeddedServiceFormFields>
|
|
61
|
+
|
|
62
|
+
<!-- 5. Hidden / pre-populated field — displayOrder=-1, value captured but never shown -->
|
|
63
|
+
<embeddedServiceFormFields>
|
|
64
|
+
<displayOrder>-1</displayOrder>
|
|
65
|
+
<formField>{HIDDEN_PARAM_NAME}</formField>
|
|
66
|
+
<formFieldType>Text</formFieldType>
|
|
67
|
+
<isHidden>true</isHidden>
|
|
68
|
+
<isRequired>false</isRequired>
|
|
69
|
+
<messagingChannelParameterType>Custom</messagingChannelParameterType>
|
|
70
|
+
</embeddedServiceFormFields>
|
|
71
|
+
|
|
72
|
+
<isActive>true</isActive>
|
|
73
|
+
</embeddedServiceForms>
|
|
74
|
+
|
|
11
75
|
<!-- Messaging Channel Configuration -->
|
|
12
76
|
<embeddedServiceMessagingChannel>
|
|
77
|
+
<!-- Display name shown when pre-chat is enabled (OPTIONAL — delete this line if unused).
|
|
78
|
+
EXACTLY 3 brace tokens; leave unused slots EMPTY, e.g. {_firstName}{_lastName}{}.
|
|
79
|
+
Each non-empty token = a pre-chat field's externalParameterName (Channel Variable Name),
|
|
80
|
+
NOT the formField value. Standard: _firstName / _lastName / _email / _subject
|
|
81
|
+
(lowercase-first — the _FirstName formField spelling is REJECTED).
|
|
82
|
+
Custom: the channel param's externalParameterName (usually its name, e.g. CompanyName). -->
|
|
83
|
+
<displayNameFormat>{DISPLAY_NAME_FORMAT}</displayNameFormat>
|
|
13
84
|
<isChatInvitationCustomizable>{true|false}</isChatInvitationCustomizable>
|
|
14
85
|
<isEnabled>true</isEnabled>
|
|
15
86
|
<isInvitationEnabled>{true|false}</isInvitationEnabled>
|
|
16
87
|
<isSendInvtAllowedAfterAccept>{true|false}</isSendInvtAllowedAfterAccept>
|
|
17
88
|
<isSendInvtAllowedAfterReject>{true|false}</isSendInvtAllowedAfterReject>
|
|
18
89
|
<messagingChannel>{CHANNEL_PLATFORM_KEY}</messagingChannel>
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
<
|
|
22
|
-
<
|
|
23
|
-
<
|
|
24
|
-
<
|
|
90
|
+
<!-- shouldShow* / shouldStartNewLineOnEnter below: keep the retrieved value on update; with nothing retrieved, leave at the default false.
|
|
91
|
+
Set true only if the user explicitly asks for that feature. -->
|
|
92
|
+
<shouldShowAgentforceTagline>false</shouldShowAgentforceTagline>
|
|
93
|
+
<shouldShowDeliveryReceipts>false</shouldShowDeliveryReceipts>
|
|
94
|
+
<shouldShowEmojiSelection>false</shouldShowEmojiSelection>
|
|
95
|
+
<shouldShowReadReceipts>false</shouldShowReadReceipts>
|
|
96
|
+
<shouldShowTypingIndicators>false</shouldShowTypingIndicators>
|
|
97
|
+
<shouldStartNewLineOnEnter>false</shouldStartNewLineOnEnter>
|
|
25
98
|
</embeddedServiceMessagingChannel>
|
|
26
99
|
|
|
27
100
|
<isEnabled>true</isEnabled>
|
|
@@ -29,5 +102,7 @@
|
|
|
29
102
|
<isTermsAndConditionsRequired>{true|false}</isTermsAndConditionsRequired>
|
|
30
103
|
<masterLabel>{DEPLOYMENT_NAME}</masterLabel>
|
|
31
104
|
<shouldHideAuthDialog>false</shouldHideAuthDialog>
|
|
32
|
-
<!--
|
|
105
|
+
<!-- Web only: copy the site value UNCHANGED from the retrieved config (required for Web, can never be
|
|
106
|
+
changed). Omit this element entirely for Mobile/API deployments. -->
|
|
107
|
+
<site>{EXISTING_SITE_NAME}</site>
|
|
33
108
|
</EmbeddedServiceConfig>
|
package/skills/service-digital-engagement-deployment-configure/examples/esd_web_prechat_fields.xml
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Pre-chat forms delta. This is NOT a standalone deployable file; graft it onto a base
|
|
3
|
+
Web deployment (see esd_web_full.xml for everything else: branding, site, etc.). Two pieces:
|
|
4
|
+
1. embeddedServiceForms goes directly under EmbeddedServiceConfig.
|
|
5
|
+
2. displayNameFormat goes INSIDE the existing embeddedServiceMessagingChannel (not
|
|
6
|
+
directly under EmbeddedServiceConfig). Merge it into that element if the base file
|
|
7
|
+
already has one; do not add a second embeddedServiceMessagingChannel.
|
|
8
|
+
-->
|
|
9
|
+
<embeddedServiceForms>
|
|
10
|
+
<displayContext>Conversation</displayContext>
|
|
11
|
+
<embeddedServiceFormFields>
|
|
12
|
+
<displayOrder>0</displayOrder>
|
|
13
|
+
<formField>_FirstName</formField>
|
|
14
|
+
<formFieldType>Text</formFieldType>
|
|
15
|
+
<isHidden>false</isHidden>
|
|
16
|
+
<isRequired>true</isRequired>
|
|
17
|
+
<messagingChannelParameterType>Standard</messagingChannelParameterType>
|
|
18
|
+
</embeddedServiceFormFields>
|
|
19
|
+
<embeddedServiceFormFields>
|
|
20
|
+
<displayOrder>1</displayOrder>
|
|
21
|
+
<formField>_LastName</formField>
|
|
22
|
+
<formFieldType>Text</formFieldType>
|
|
23
|
+
<isHidden>false</isHidden>
|
|
24
|
+
<isRequired>true</isRequired>
|
|
25
|
+
<messagingChannelParameterType>Standard</messagingChannelParameterType>
|
|
26
|
+
</embeddedServiceFormFields>
|
|
27
|
+
<embeddedServiceFormFields>
|
|
28
|
+
<displayOrder>2</displayOrder>
|
|
29
|
+
<formField>_Email</formField>
|
|
30
|
+
<formFieldType>Email</formFieldType>
|
|
31
|
+
<isHidden>false</isHidden>
|
|
32
|
+
<isRequired>true</isRequired>
|
|
33
|
+
<messagingChannelParameterType>Standard</messagingChannelParameterType>
|
|
34
|
+
</embeddedServiceFormFields>
|
|
35
|
+
<embeddedServiceFormFields>
|
|
36
|
+
<displayOrder>3</displayOrder>
|
|
37
|
+
<formField>CompanyName</formField>
|
|
38
|
+
<formFieldType>Text</formFieldType>
|
|
39
|
+
<isHidden>false</isHidden>
|
|
40
|
+
<isRequired>false</isRequired>
|
|
41
|
+
<messagingChannelParameterType>Custom</messagingChannelParameterType>
|
|
42
|
+
</embeddedServiceFormFields>
|
|
43
|
+
<embeddedServiceFormFields>
|
|
44
|
+
<displayOrder>4</displayOrder>
|
|
45
|
+
<formField>NewsletterOptIn</formField>
|
|
46
|
+
<formFieldType>Checkbox</formFieldType>
|
|
47
|
+
<isHidden>false</isHidden>
|
|
48
|
+
<isRequired>false</isRequired>
|
|
49
|
+
<messagingChannelParameterType>Custom</messagingChannelParameterType>
|
|
50
|
+
</embeddedServiceFormFields>
|
|
51
|
+
<embeddedServiceFormFields>
|
|
52
|
+
<choiceList>Customer_Inquiry_Type</choiceList>
|
|
53
|
+
<displayOrder>5</displayOrder>
|
|
54
|
+
<formField>InquiryType</formField>
|
|
55
|
+
<formFieldType>ChoiceList</formFieldType>
|
|
56
|
+
<isHidden>false</isHidden>
|
|
57
|
+
<isRequired>true</isRequired>
|
|
58
|
+
<messagingChannelParameterType>Custom</messagingChannelParameterType>
|
|
59
|
+
</embeddedServiceFormFields>
|
|
60
|
+
<embeddedServiceFormFields>
|
|
61
|
+
<displayOrder>-1</displayOrder>
|
|
62
|
+
<formField>utm_campaign</formField>
|
|
63
|
+
<formFieldType>Text</formFieldType>
|
|
64
|
+
<isHidden>true</isHidden>
|
|
65
|
+
<isRequired>false</isRequired>
|
|
66
|
+
<messagingChannelParameterType>Custom</messagingChannelParameterType>
|
|
67
|
+
</embeddedServiceFormFields>
|
|
68
|
+
<isActive>true</isActive>
|
|
69
|
+
</embeddedServiceForms>
|
|
70
|
+
<!-- displayNameFormat tokens use each field's externalParameterName (e.g. _firstName),
|
|
71
|
+
NOT the formField spelling above (e.g. _FirstName). -->
|
|
72
|
+
<embeddedServiceMessagingChannel>
|
|
73
|
+
<displayNameFormat>{_firstName}{_lastName}{}</displayNameFormat>
|
|
74
|
+
</embeddedServiceMessagingChannel>
|
package/skills/service-digital-engagement-deployment-configure/references/connect_api_creation.md
CHANGED
|
@@ -119,13 +119,13 @@ Save the `embeddedServiceDeploymentId` — it identifies the deployment for subs
|
|
|
119
119
|
After creating the Web ESD via Connect API:
|
|
120
120
|
|
|
121
121
|
1. **Update via Metadata API** — deploy `EmbeddedServiceConfig` XML with full configuration (forms, branding, channel settings, T&C)
|
|
122
|
-
2. **Publish** —
|
|
122
|
+
2. **Publish** — see below
|
|
123
123
|
|
|
124
124
|
---
|
|
125
125
|
|
|
126
126
|
## Publishing After Updates
|
|
127
127
|
|
|
128
|
-
|
|
128
|
+
Updates to a Web ESD (branding, forms, labels, settings) stay in draft until published. Publish only after the user approves (SKILL.md step 17c):
|
|
129
129
|
|
|
130
130
|
```text
|
|
131
131
|
POST /services/data/vXX.0/connect/embeddedservice/embeddedserviceconfig/publish/<EMBEDDED_SERVICE_CONFIG_ID>
|
|
@@ -140,7 +140,17 @@ sf api request rest \
|
|
|
140
140
|
```
|
|
141
141
|
|
|
142
142
|
The `--body '{}'` is required: a POST with no body (or `--body ""`) fails in the CLI with
|
|
143
|
-
"No 'mode' found in 'body' entry" before any request is sent.
|
|
143
|
+
"No 'mode' found in 'body' entry" before any request is sent. The URL is a positional
|
|
144
|
+
argument, not a flag (`--url` fails with "Nonexistent flag"), and must be fully qualified
|
|
145
|
+
(`/services/data/vXX.0/connect/...`).
|
|
146
|
+
|
|
147
|
+
To obtain the `EMBEDDED_SERVICE_CONFIG_ID` (a Tooling API object, so `--use-tooling-api` is required):
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
sf data query --use-tooling-api \
|
|
151
|
+
--query "SELECT Id FROM EmbeddedServiceConfig WHERE DeveloperName = '<DEPLOYMENT_NAME>'" \
|
|
152
|
+
--target-org <org-alias>
|
|
153
|
+
```
|
|
144
154
|
|
|
145
155
|
---
|
|
146
156
|
|
package/skills/service-digital-engagement-deployment-configure/references/deployment_settings.md
CHANGED
|
@@ -40,7 +40,7 @@ Links the deployment to a messaging channel and configures widget behavior. All
|
|
|
40
40
|
|-------|------|---------|-------------|
|
|
41
41
|
| `messagingChannel` | String | — | **Required.** Channel `channelPlatformKey` |
|
|
42
42
|
| `businessHours` | String | — | BusinessHours `businessHoursName` |
|
|
43
|
-
| `displayNameFormat` | String | — | Display name
|
|
43
|
+
| `displayNameFormat` | String | — | Display name shown when pre-chat is enabled. **Exactly 3 brace tokens** (empty for unused, e.g. `{_firstName}{_lastName}{}`); each token = a pre-chat field's `externalParameterName`, **not** its `formField`. See `references/prechat_forms.md` → displayNameFormat Rules |
|
|
44
44
|
| `formula` | String | — | Condition logic expression referencing `sequence` numbers from `<embdMsgChannelInvitationConditions>` (e.g., `1 AND 2`, `1 OR 2 OR 3`). Required when `isInvitationEnabled` is `true`. Must be updated whenever conditions are added or removed |
|
|
45
45
|
| `isChatInvitationCustomizable` | Boolean | `false` | **Required.** Allow customizing chat invitation. Can only be `true` for Web deployments; must be `false` for API/Mobile |
|
|
46
46
|
| `isEnabled` | Boolean | `true` | **Required.** Whether messaging is enabled on this deployment |
|
|
@@ -56,84 +56,9 @@ Links the deployment to a messaging channel and configures widget behavior. All
|
|
|
56
56
|
|
|
57
57
|
---
|
|
58
58
|
|
|
59
|
-
## Pre-Chat Forms (`<embeddedServiceForms>`)
|
|
59
|
+
## Pre-Chat Forms (`<embeddedServiceForms>`) and `displayNameFormat`
|
|
60
60
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
### Form Structure
|
|
64
|
-
|
|
65
|
-
| Field | Type | Required | Description |
|
|
66
|
-
|-------|------|----------|-------------|
|
|
67
|
-
| `displayContext` | Enum | Yes | `Conversation` or `Session` |
|
|
68
|
-
| `isActive` | Boolean | Yes | Whether the form is active |
|
|
69
|
-
| `embeddedServiceFormFields` | Repeatable | Yes | Individual form fields (see below) |
|
|
70
|
-
|
|
71
|
-
### Form Field Structure (`<embeddedServiceFormFields>`)
|
|
72
|
-
|
|
73
|
-
| Field | Type | Required | Description |
|
|
74
|
-
|-------|------|----------|-------------|
|
|
75
|
-
| `displayOrder` | Integer | Yes | 0-based display position |
|
|
76
|
-
| `formField` | String | Yes | Parameter name — use `_` prefix for standard fields (e.g., `_FirstName`), exact `name` for custom fields |
|
|
77
|
-
| `formFieldType` | Enum | Yes | `Text`, `Email`, `Phone`, `Number` |
|
|
78
|
-
| `isHidden` | Boolean | Yes | Whether field is hidden from user (still collected) |
|
|
79
|
-
| `isRequired` | Boolean | Yes | Whether field must be filled |
|
|
80
|
-
| `messagingChannelParameterType` | Enum | Yes | `Standard` or `Custom` |
|
|
81
|
-
|
|
82
|
-
### Example
|
|
83
|
-
|
|
84
|
-
```xml
|
|
85
|
-
<embeddedServiceForms>
|
|
86
|
-
<displayContext>Conversation</displayContext>
|
|
87
|
-
<embeddedServiceFormFields>
|
|
88
|
-
<displayOrder>0</displayOrder>
|
|
89
|
-
<formField>_FirstName</formField>
|
|
90
|
-
<formFieldType>Text</formFieldType>
|
|
91
|
-
<isHidden>false</isHidden>
|
|
92
|
-
<isRequired>true</isRequired>
|
|
93
|
-
<messagingChannelParameterType>Standard</messagingChannelParameterType>
|
|
94
|
-
</embeddedServiceFormFields>
|
|
95
|
-
<embeddedServiceFormFields>
|
|
96
|
-
<displayOrder>1</displayOrder>
|
|
97
|
-
<formField>_Email</formField>
|
|
98
|
-
<formFieldType>Email</formFieldType>
|
|
99
|
-
<isHidden>false</isHidden>
|
|
100
|
-
<isRequired>true</isRequired>
|
|
101
|
-
<messagingChannelParameterType>Standard</messagingChannelParameterType>
|
|
102
|
-
</embeddedServiceFormFields>
|
|
103
|
-
<embeddedServiceFormFields>
|
|
104
|
-
<displayOrder>2</displayOrder>
|
|
105
|
-
<formField>CompanyName</formField>
|
|
106
|
-
<formFieldType>Text</formFieldType>
|
|
107
|
-
<isHidden>false</isHidden>
|
|
108
|
-
<isRequired>false</isRequired>
|
|
109
|
-
<messagingChannelParameterType>Custom</messagingChannelParameterType>
|
|
110
|
-
</embeddedServiceFormFields>
|
|
111
|
-
<isActive>true</isActive>
|
|
112
|
-
</embeddedServiceForms>
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### Standard Pre-Chat Fields
|
|
116
|
-
|
|
117
|
-
Standard fields use a `_` prefix in the `formField` value:
|
|
118
|
-
|
|
119
|
-
| `formField` Value | Maps to `parameterType` | Typical Usage |
|
|
120
|
-
|-------------------|------------------------|---------------|
|
|
121
|
-
| `_FirstName` | `FirstName` | User identification |
|
|
122
|
-
| `_LastName` | `LastName` | User identification |
|
|
123
|
-
| `_Email` | `Email` | Follow-up and case creation |
|
|
124
|
-
| `_Subject` | `Subject` | Routing context |
|
|
125
|
-
|
|
126
|
-
### Custom Pre-Chat Fields
|
|
127
|
-
|
|
128
|
-
Custom fields use the exact `name` value from the channel's `customParameters` (no prefix). Custom fields must first be configured as `customParameters` on the messaging channel (via `service-digital-engagement-channel-configure`) before they can be referenced in the ESD form.
|
|
129
|
-
|
|
130
|
-
### ChoiceList (Dropdown) Fields
|
|
131
|
-
|
|
132
|
-
ChoiceList fields require a two-step deployment:
|
|
133
|
-
1. Create the `ChoiceList` metadata record
|
|
134
|
-
2. Assign it to the form field in the ESD
|
|
135
|
-
|
|
136
|
-
The ChoiceList field must reference a custom parameter `name` on the messaging channel.
|
|
61
|
+
Pre-chat is OFF by default. Form and field structure, hidden fields, the channel coupling and Omni-Flow routing prerequisites, ChoiceList (dropdown) fields, deactivating vs. removing fields, `displayNameFormat` rules, and pre-chat gotchas are all in `references/prechat_forms.md`.
|
|
137
62
|
|
|
138
63
|
---
|
|
139
64
|
|
|
@@ -191,3 +116,13 @@ Available since API v58.0. Repeatable. Configures conditions under which the mes
|
|
|
191
116
|
| Create BrandingSet | No (auto-created by Connect API) | No | Yes |
|
|
192
117
|
| Update BrandingSet properties | No | Yes | No |
|
|
193
118
|
| Publish ESD | No | No | Yes |
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Less Common Gotchas
|
|
123
|
+
|
|
124
|
+
| Issue | Resolution |
|
|
125
|
+
|-------|------------|
|
|
126
|
+
| `embeddedServiceFlowConfig.enabled` error | Set to `false` unless you specifically need embedded flows (not routing flows) |
|
|
127
|
+
| reCAPTCHA configuration rejected | reCAPTCHA is `@HideInWsdl` — must use Tooling API |
|
|
128
|
+
| Business hours not taking effect | Only updating existing business hours works; creation is managed separately |
|