diff --git a/components/fieldgroups/experience-event/experienceevent-interaction-dynamic-chat.example.1.json b/components/fieldgroups/experience-event/experienceevent-interaction-dynamic-chat.example.1.json new file mode 100644 index 000000000..a8c013fa8 --- /dev/null +++ b/components/fieldgroups/experience-event/experienceevent-interaction-dynamic-chat.example.1.json @@ -0,0 +1,180 @@ +{ + "xdm:interaction": { + "xdm:channelType": "dynamic_chat", + "xdm:conversationId": "transcript-abc-123", + "xdm:crossChannelCorrelationId": "550e8400-e29b-41d4-a716-446655440000", + "xdm:authorRole": "person", + "xdm:participants": [ + { + "xdm:identityMap": { + "Email": [ + { + "xdm:id": "jane.doe@example.com", + "xdm:primary": true, + "xdm:authenticatedState": "authenticated" + } + ], + "MKTO": [ + { + "xdm:id": "lead-789", + "xdm:primary": false, + "xdm:authenticatedState": "authenticated" + } + ] + }, + "xdm:role": "person", + "xdm:isAuthor": true + }, + { + "xdm:identityMap": { + "system_agent_id": [ + { + "xdm:id": "instance-xyz-456", + "xdm:primary": false, + "xdm:authenticatedState": "ambiguous" + } + ] + }, + "xdm:role": "bot", + "xdm:isAuthor": false + }, + { + "xdm:identityMap": { + "system_agent_id": [ + { + "xdm:id": "org-001@AdobeOrg", + "xdm:primary": false, + "xdm:authenticatedState": "ambiguous" + } + ] + }, + "xdm:role": "system", + "xdm:isAuthor": false + }, + { + "xdm:identityMap": { + "brand_agent_id": [ + { + "xdm:id": "profile-john-smith-001", + "xdm:primary": false, + "xdm:authenticatedState": "authenticated" + } + ] + }, + "xdm:role": "agent", + "xdm:isAuthor": false + } + ], + "xdm:content": [ + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"message\",\"timestamp\":\"2026-02-17T10:00:00\",\"sender\":\"bot\",\"payload\":{\"text\":\"Hi! Welcome to our site. How can I help you today?\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"question\",\"timestamp\":\"2026-02-17T10:00:05\",\"sender\":\"bot\",\"payload\":{\"text\":\"What product are you interested in?\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"question_answer\",\"timestamp\":\"2026-02-17T10:00:15\",\"sender\":\"visitor\",\"payload\":{\"text\":\"Marketo Engage\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"info\",\"timestamp\":\"2026-02-17T10:00:20\",\"sender\":\"bot\",\"payload\":{\"text\":\"Great! Can I get your email address?\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"info_answer\",\"timestamp\":\"2026-02-17T10:00:30\",\"sender\":\"visitor\",\"payload\":{\"inputVal\":\"jane.doe@example.com\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"document\",\"timestamp\":\"2026-02-17T10:00:35\",\"sender\":\"bot\",\"payload\":{\"text\":\"Here's our product brochure:\",\"documentUrl\":\"https://cdn.example.com/docs/brochure.pdf\",\"documentClient\":{\"clientId\":\"client-abc-123\"}}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"milestone\",\"timestamp\":\"2026-02-17T10:01:00\",\"sender\":\"system\",\"payload\":{\"milestoneName\":\"Engaged\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"action\",\"timestamp\":\"2026-02-17T10:01:05\",\"sender\":\"system\",\"payload\":{\"actionType\":\"mapAttribute\",\"text\":\"Mapped lead attributes\",\"attributes\":[{\"key\":\"email\",\"name\":\"Email Address\",\"value\":\"jane.doe@example.com\",\"dataType\":\"string\"},{\"key\":\"product_interest\",\"name\":\"Product Interest\",\"value\":\"Marketo Engage\",\"dataType\":\"string\"}]}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"calendar_get\",\"timestamp\":\"2026-02-17T10:01:10\",\"sender\":\"bot\"}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"calendar_info\",\"timestamp\":\"2026-02-17T10:01:15\",\"sender\":\"bot\",\"payload\":{\"isSuccess\":true,\"response\":{\"profile\":{\"name\":\"John Smith\",\"avatar\":\"https://cdn.example.com/avatars/john.jpg\"}}}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"meeting_email_request\",\"timestamp\":\"2026-02-17T10:01:20\",\"sender\":\"bot\",\"payload\":{\"restrictedEmailDomains\":[\"gmail.com\",\"yahoo.com\"]}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"meeting_email\",\"timestamp\":\"2026-02-17T10:01:30\",\"sender\":\"visitor\",\"payload\":{\"type\":\"email\",\"inputVal\":\"jane.doe@acme.com\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"meeting_email_response\",\"timestamp\":\"2026-02-17T10:01:35\",\"sender\":\"system\",\"payload\":{\"type\":\"email\",\"inputVal\":\"jane.doe@acme.com\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"meeting_booking_request\",\"timestamp\":\"2026-02-17T10:02:00\",\"sender\":\"visitor\",\"payload\":{\"profileId\":\"profile-john-smith-001\",\"date\":\"2026-02-20\",\"time\":\"14:00\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"meeting_booking_response\",\"timestamp\":\"2026-02-17T10:02:05\",\"sender\":\"system\",\"payload\":{\"isSuccess\":true,\"response\":{\"attributes\":[{\"key\":\"meetingDate\",\"name\":\"Meeting Date\",\"value\":\"2026-02-20\",\"dataType\":\"date\"},{\"key\":\"meetingTime\",\"name\":\"Meeting Time\",\"value\":\"14:00\",\"dataType\":\"time\"}]}}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"live_chat\",\"timestamp\":\"2026-02-17T10:03:00\",\"sender\":\"system\",\"payload\":{\"status\":\"connected\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"live_chat_message\",\"timestamp\":\"2026-02-17T10:03:10\",\"sender\":\"agent\",\"payload\":{\"type\":\"text\",\"content\":\"Hi Jane, I'm John. Let me help you with Marketo.\",\"agentFirstName\":\"John\",\"agentAvatarUrl\":\"https://cdn.example.com/avatars/john.jpg\",\"date\":\"2026-02-17\",\"time\":\"10:03\",\"timezone\":\"America/Los_Angeles\",\"isSuccess\":true}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"assisted_response_prompt\",\"timestamp\":\"2026-02-17T10:04:00\",\"sender\":\"bot\",\"payload\":{\"text\":\"I can answer questions about our products using AI. What would you like to know?\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"assisted_response_question\",\"timestamp\":\"2026-02-17T10:04:10\",\"sender\":\"visitor\",\"payload\":{\"inputVal\":\"What is the pricing for Marketo Engage?\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"assisted_response_answer\",\"timestamp\":\"2026-02-17T10:04:15\",\"sender\":\"bot\",\"payload\":{\"text\":\"Marketo Engage pricing depends on your database size and selected modules. I'd recommend speaking with a sales rep for a custom quote.\",\"nudgeQuestion\":{\"text\":\"Would you like to know more about:\",\"choices\":[{\"id\":\"choice-1\",\"text\":\"Feature comparison\"},{\"id\":\"choice-2\",\"text\":\"Implementation timeline\"}]}}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"assisted_response_nudge_choice\",\"timestamp\":\"2026-02-17T10:04:25\",\"sender\":\"visitor\",\"payload\":{\"id\":\"choice-1\",\"text\":\"Feature comparison\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"assisted_response_feedback\",\"timestamp\":\"2026-02-17T10:04:30\",\"sender\":\"visitor\",\"payload\":{\"helpful\":true}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"assisted_response_affirmations_list\",\"timestamp\":\"2026-02-17T10:04:35\",\"sender\":\"bot\",\"payload\":{\"suggestedQuestions\":[{\"id\":\"sq-1\",\"text\":\"Tell me about integrations\"},{\"id\":\"sq-2\",\"text\":\"What support plans are available?\"}]}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"assisted_response_affirmation_choice\",\"timestamp\":\"2026-02-17T10:04:40\",\"sender\":\"visitor\",\"payload\":{\"questionId\":\"sq-1\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"assisted_response_end\",\"timestamp\":\"2026-02-17T10:05:00\",\"sender\":\"bot\",\"payload\":{\"text\":\"Thanks for chatting! Let me connect you with a specialist.\"}}" + } + ], + "xdm:sourceMessageId": "transcript-abc-123" + }, + "xdm:dynamicChatInteraction": { + "xdm:imsOrgId": "org-001@AdobeOrg", + "xdm:instanceId": "instance-xyz-456", + "xdm:playbookId": "playbook-101", + "xdm:pageUrl": "https://example.com/landing-page", + "xdm:dialogueName": "Product Demo Dialogue", + "xdm:leadTimeZone": "America/Los_Angeles" + } +} diff --git a/components/fieldgroups/experience-event/experienceevent-interaction-dynamic-chat.example.full-experienceevent.json b/components/fieldgroups/experience-event/experienceevent-interaction-dynamic-chat.example.full-experienceevent.json new file mode 100644 index 000000000..811045f7c --- /dev/null +++ b/components/fieldgroups/experience-event/experienceevent-interaction-dynamic-chat.example.full-experienceevent.json @@ -0,0 +1,225 @@ +{ + "@id": "https://ns.adobe.com/experience/events/dc-transcript-transcript-abc-123", + "xdm:timestamp": "2026-02-17T18:05:00Z", + "xdm:eventType": "conversation.transcript", + "xdm:producedBy": "system", + "xdm:identityMap": { + "Email": [ + { + "xdm:id": "jane.doe@example.com", + "xdm:primary": true, + "xdm:authenticatedState": "authenticated" + } + ], + "MKTO": [ + { + "xdm:id": "lead-789", + "xdm:primary": false, + "xdm:authenticatedState": "authenticated" + } + ] + }, + "xdm:implementationDetails": { + "xdm:name": "https://ns.adobe.com/experience/connectors/dynamic-chat", + "xdm:version": "1.0.0" + }, + "xdm:environment": { + "xdm:type": "browser", + "xdm:browserDetails": { + "xdm:name": "Chrome", + "xdm:version": "131.0", + "xdm:acceptLanguage": "en-US", + "xdm:javaScriptEnabled": true + } + }, + "xdm:placeContext": { + "xdm:localTime": "2026-02-17T10:05:00-08:00" + }, + "xdm:web": { + "xdm:webPageDetails": { + "xdm:server": "example.com", + "xdm:name": "Landing - Dynamic Chat widget", + "xdm:URL": "https://example.com/landing-page", + "xdm:errorPage": false, + "xdm:homePage": false + } + }, + "xdm:interaction": { + "xdm:channelType": "dynamic_chat", + "xdm:conversationId": "transcript-abc-123", + "xdm:crossChannelCorrelationId": "550e8400-e29b-41d4-a716-446655440000", + "xdm:authorRole": "person", + "xdm:participants": [ + { + "xdm:identityMap": { + "Email": [ + { + "xdm:id": "jane.doe@example.com", + "xdm:primary": true, + "xdm:authenticatedState": "authenticated" + } + ], + "MKTO": [ + { + "xdm:id": "lead-789", + "xdm:primary": false, + "xdm:authenticatedState": "authenticated" + } + ] + }, + "xdm:role": "person", + "xdm:isAuthor": true + }, + { + "xdm:identityMap": { + "system_agent_id": [ + { + "xdm:id": "instance-xyz-456", + "xdm:primary": false, + "xdm:authenticatedState": "ambiguous" + } + ] + }, + "xdm:role": "bot", + "xdm:isAuthor": false + }, + { + "xdm:identityMap": { + "system_agent_id": [ + { + "xdm:id": "org-001@AdobeOrg", + "xdm:primary": false, + "xdm:authenticatedState": "ambiguous" + } + ] + }, + "xdm:role": "system", + "xdm:isAuthor": false + }, + { + "xdm:identityMap": { + "brand_agent_id": [ + { + "xdm:id": "profile-john-smith-001", + "xdm:primary": false, + "xdm:authenticatedState": "authenticated" + } + ] + }, + "xdm:role": "agent", + "xdm:isAuthor": false + } + ], + "xdm:content": [ + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"message\",\"timestamp\":\"2026-02-17T10:00:00\",\"sender\":\"bot\",\"payload\":{\"text\":\"Hi! Welcome to our site. How can I help you today?\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"question\",\"timestamp\":\"2026-02-17T10:00:05\",\"sender\":\"bot\",\"payload\":{\"text\":\"What product are you interested in?\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"question_answer\",\"timestamp\":\"2026-02-17T10:00:15\",\"sender\":\"visitor\",\"payload\":{\"text\":\"Marketo Engage\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"info\",\"timestamp\":\"2026-02-17T10:00:20\",\"sender\":\"bot\",\"payload\":{\"text\":\"Great! Can I get your email address?\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"info_answer\",\"timestamp\":\"2026-02-17T10:00:30\",\"sender\":\"visitor\",\"payload\":{\"inputVal\":\"jane.doe@example.com\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"document\",\"timestamp\":\"2026-02-17T10:00:35\",\"sender\":\"bot\",\"payload\":{\"text\":\"Here's our product brochure:\",\"documentUrl\":\"https://cdn.example.com/docs/brochure.pdf\",\"documentClient\":{\"clientId\":\"client-abc-123\"}}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"milestone\",\"timestamp\":\"2026-02-17T10:01:00\",\"sender\":\"system\",\"payload\":{\"milestoneName\":\"Engaged\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"action\",\"timestamp\":\"2026-02-17T10:01:05\",\"sender\":\"system\",\"payload\":{\"actionType\":\"mapAttribute\",\"text\":\"Mapped lead attributes\",\"attributes\":[{\"key\":\"email\",\"name\":\"Email Address\",\"value\":\"jane.doe@example.com\",\"dataType\":\"string\"},{\"key\":\"product_interest\",\"name\":\"Product Interest\",\"value\":\"Marketo Engage\",\"dataType\":\"string\"}]}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"calendar_get\",\"timestamp\":\"2026-02-17T10:01:10\",\"sender\":\"bot\"}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"calendar_info\",\"timestamp\":\"2026-02-17T10:01:15\",\"sender\":\"bot\",\"payload\":{\"isSuccess\":true,\"response\":{\"profile\":{\"name\":\"John Smith\",\"avatar\":\"https://cdn.example.com/avatars/john.jpg\"}}}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"meeting_email_request\",\"timestamp\":\"2026-02-17T10:01:20\",\"sender\":\"bot\",\"payload\":{\"restrictedEmailDomains\":[\"gmail.com\",\"yahoo.com\"]}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"meeting_email\",\"timestamp\":\"2026-02-17T10:01:30\",\"sender\":\"visitor\",\"payload\":{\"type\":\"email\",\"inputVal\":\"jane.doe@acme.com\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"meeting_email_response\",\"timestamp\":\"2026-02-17T10:01:35\",\"sender\":\"system\",\"payload\":{\"type\":\"email\",\"inputVal\":\"jane.doe@acme.com\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"meeting_booking_request\",\"timestamp\":\"2026-02-17T10:02:00\",\"sender\":\"visitor\",\"payload\":{\"profileId\":\"profile-john-smith-001\",\"date\":\"2026-02-20\",\"time\":\"14:00\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"meeting_booking_response\",\"timestamp\":\"2026-02-17T10:02:05\",\"sender\":\"system\",\"payload\":{\"isSuccess\":true,\"response\":{\"attributes\":[{\"key\":\"meetingDate\",\"name\":\"Meeting Date\",\"value\":\"2026-02-20\",\"dataType\":\"date\"},{\"key\":\"meetingTime\",\"name\":\"Meeting Time\",\"value\":\"14:00\",\"dataType\":\"time\"}]}}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"live_chat\",\"timestamp\":\"2026-02-17T10:03:00\",\"sender\":\"system\",\"payload\":{\"status\":\"connected\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"live_chat_message\",\"timestamp\":\"2026-02-17T10:03:10\",\"sender\":\"agent\",\"payload\":{\"type\":\"text\",\"content\":\"Hi Jane, I'm John. Let me help you with Marketo.\",\"agentFirstName\":\"John\",\"agentAvatarUrl\":\"https://cdn.example.com/avatars/john.jpg\",\"date\":\"2026-02-17\",\"time\":\"10:03\",\"timezone\":\"America/Los_Angeles\",\"isSuccess\":true}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"assisted_response_prompt\",\"timestamp\":\"2026-02-17T10:04:00\",\"sender\":\"bot\",\"payload\":{\"text\":\"I can answer questions about our products using AI. What would you like to know?\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"assisted_response_question\",\"timestamp\":\"2026-02-17T10:04:10\",\"sender\":\"visitor\",\"payload\":{\"inputVal\":\"What is the pricing for Marketo Engage?\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"assisted_response_answer\",\"timestamp\":\"2026-02-17T10:04:15\",\"sender\":\"bot\",\"payload\":{\"text\":\"Marketo Engage pricing depends on your database size and selected modules. I'd recommend speaking with a sales rep for a custom quote.\",\"nudgeQuestion\":{\"text\":\"Would you like to know more about:\",\"choices\":[{\"id\":\"choice-1\",\"text\":\"Feature comparison\"},{\"id\":\"choice-2\",\"text\":\"Implementation timeline\"}]}}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"assisted_response_nudge_choice\",\"timestamp\":\"2026-02-17T10:04:25\",\"sender\":\"visitor\",\"payload\":{\"id\":\"choice-1\",\"text\":\"Feature comparison\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"assisted_response_feedback\",\"timestamp\":\"2026-02-17T10:04:30\",\"sender\":\"visitor\",\"payload\":{\"helpful\":true}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"assisted_response_affirmations_list\",\"timestamp\":\"2026-02-17T10:04:35\",\"sender\":\"bot\",\"payload\":{\"suggestedQuestions\":[{\"id\":\"sq-1\",\"text\":\"Tell me about integrations\"},{\"id\":\"sq-2\",\"text\":\"What support plans are available?\"}]}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"assisted_response_affirmation_choice\",\"timestamp\":\"2026-02-17T10:04:40\",\"sender\":\"visitor\",\"payload\":{\"questionId\":\"sq-1\"}}" + }, + { + "xdm:contentType": "text", + "xdm:value": "{\"type\":\"assisted_response_end\",\"timestamp\":\"2026-02-17T10:05:00\",\"sender\":\"bot\",\"payload\":{\"text\":\"Thanks for chatting! Let me connect you with a specialist.\"}}" + } + ], + "xdm:sourceMessageId": "transcript-abc-123" + }, + "xdm:dynamicChatInteraction": { + "xdm:imsOrgId": "org-001@AdobeOrg", + "xdm:instanceId": "instance-xyz-456", + "xdm:playbookId": "playbook-101", + "xdm:pageUrl": "https://example.com/landing-page", + "xdm:dialogueName": "Product Demo Dialogue", + "xdm:leadTimeZone": "America/Los_Angeles" + } +} diff --git a/components/fieldgroups/experience-event/experienceevent-interaction-dynamic-chat.schema.json b/components/fieldgroups/experience-event/experienceevent-interaction-dynamic-chat.schema.json new file mode 100644 index 000000000..c514df9da --- /dev/null +++ b/components/fieldgroups/experience-event/experienceevent-interaction-dynamic-chat.schema.json @@ -0,0 +1,72 @@ +{ + "meta:license": [ + "Copyright 2017 Adobe Systems Incorporated. All rights reserved.", + "This work is licensed under a Creative Commons Attribution 4.0 International (CC BY 4.0) license", + "you may not use this file except in compliance with the License. You may obtain a copy", + "of the License at https://creativecommons.org/licenses/by/4.0/" + ], + "$id": "https://ns.adobe.com/xdm/context/experienceevent-interaction-dynamic-chat", + "$schema": "http://json-schema.org/draft-06/schema#", + "title": "Adobe Dynamic Chat Interaction Details", + "type": "object", + "meta:extensible": true, + "meta:abstract": true, + "meta:tags": { + "industry": ["all"] + }, + "meta:intendedToExtend": ["https://ns.adobe.com/xdm/context/experienceevent"], + "description": "Adobe Dynamic Chat (DC) transcript fields present on the raw transcript payload only (no fields invented beyond the connector sample). Apply alongside the base Interaction field group. Transcript-level keys id, leadId, leadEmail, and messages[] map to the base field group (conversationId, sourceMessageId, ExperienceEvent identityMap, interaction.content[]); this mixin carries the remaining top-level scalar attributes from the sample. Media and URLs embedded inside messages[] may be surfaced later via xdm:interaction.asset[] through post-ingestion ETL if the connector does not populate assets. For a full ExperienceEvent payload that composes the ExperienceEvent class with implementation-details, environment-details, web, interaction, and this field group, see experienceevent-interaction-dynamic-chat.example.full-experienceevent.json.", + "definitions": { + "dynamic-chat-interaction": { + "properties": { + "xdm:dynamicChatInteraction": { + "title": "Dynamic Chat Interaction", + "description": "Transcript envelope fields from the Dynamic Chat source payload. Property names align with the sample JSON keys (xdm-prefixed).", + "type": "object", + "properties": { + "xdm:imsOrgId": { + "title": "IMS Organization ID", + "description": "Adobe IMS organization identifier from the transcript payload.", + "type": "string" + }, + "xdm:instanceId": { + "title": "Instance ID", + "description": "Dynamic Chat / Marketo instance identifier from the transcript payload.", + "type": "string" + }, + "xdm:playbookId": { + "title": "Playbook ID", + "description": "Playbook identifier associated with the dialogue session.", + "type": "string" + }, + "xdm:pageUrl": { + "title": "Page URL", + "description": "URL of the page where the chat widget was hosted when the session occurred.", + "type": "string", + "format": "uri" + }, + "xdm:dialogueName": { + "title": "Dialogue Name", + "description": "Human-readable name of the active dialogue.", + "type": "string" + }, + "xdm:leadTimeZone": { + "title": "Lead Time Zone", + "description": "IANA time zone name for the lead (e.g. America/Los_Angeles).", + "type": "string" + } + } + } + } + } + }, + "allOf": [ + { + "$ref": "https://ns.adobe.com/xdm/common/extensible#/definitions/@context" + }, + { + "$ref": "#/definitions/dynamic-chat-interaction" + } + ], + "meta:status": "proposed" +} diff --git a/components/fieldgroups/experience-event/experienceevent-interaction.example.1.json b/components/fieldgroups/experience-event/experienceevent-interaction.example.1.json new file mode 100644 index 000000000..6a0b5a944 --- /dev/null +++ b/components/fieldgroups/experience-event/experienceevent-interaction.example.1.json @@ -0,0 +1,49 @@ +{ + "xdm:interaction": { + "xdm:channelType": "whatsapp", + "xdm:conversationId": "6ceb9d929c9bdc4f90e967a32f8639b4", + "xdm:crossChannelCorrelationId": "550e8400-e29b-41d4-a716-446655440000", + "xdm:authorRole": "person", + "xdm:participants": [ + { + "xdm:identityMap": { + "Phone": [ + { + "xdm:id": "16505551234", + "xdm:primary": true, + "xdm:authenticatedState": "ambiguous" + } + ] + }, + "xdm:role": "person", + "xdm:isAuthor": true + }, + { + "xdm:identityMap": { + "system_agent_id": [ + { + "xdm:id": "106540352242922", + "xdm:primary": false, + "xdm:authenticatedState": "ambiguous" + } + ] + }, + "xdm:role": "system", + "xdm:isAuthor": false + } + ], + "xdm:content": [ + { + "xdm:contentType": "text", + "xdm:value": "Does it come in another color?" + } + ], + "xdm:sourceMessageId": "wamid.HBgLMTY1MDM4Nzk0MzkVAgASGBQzQTRBNjU5OUFFRTAzODEwMTQ0RgA=" + }, + "xdm:whatsappInteraction": { + "xdm:wabaId": "102290129340398", + "xdm:phoneNumberId": "106540352242922", + "xdm:displayPhoneNumber": "15550025839", + "xdm:messageType": "text" + } +} diff --git a/components/fieldgroups/experience-event/experienceevent-interaction.schema.json b/components/fieldgroups/experience-event/experienceevent-interaction.schema.json new file mode 100644 index 000000000..931331c8a --- /dev/null +++ b/components/fieldgroups/experience-event/experienceevent-interaction.schema.json @@ -0,0 +1,304 @@ +{ + "meta:license": [ + "Copyright 2017 Adobe Systems Incorporated. All rights reserved.", + "This work is licensed under a Creative Commons Attribution 4.0 International (CC BY 4.0) license", + "you may not use this file except in compliance with the License. You may obtain a copy", + "of the License at https://creativecommons.org/licenses/by/4.0/" + ], + "$id": "https://ns.adobe.com/xdm/context/experienceevent-interaction", + "$schema": "http://json-schema.org/draft-06/schema#", + "title": "Interaction", + "type": "object", + "meta:extensible": true, + "meta:abstract": true, + "meta:tags": { + "industry": ["all"] + }, + "meta:intendedToExtend": ["https://ns.adobe.com/xdm/context/experienceevent"], + "description": "A logical unit of exchange between one or more participants on a single channel, recorded as an XDM ExperienceEvent timeseries record. What constitutes one interaction depends on the channel: a single WhatsApp message, a single email, a Brand Concierge turn (prompt + response + optional feedback), or a complete Dynamic Chat transcript. Textual and simple payload parts use xdm:content[]; binary, media, document, and rich link metadata use xdm:asset[] at the same level. Optional xdm:crossChannelCorrelationId is a caller-supplied opaque key repeated on every related event across channels for analytics joins (distinct from xdm:conversationId, which is often channel-native). Fields inherited from ExperienceEvent — @id (dedup key), xdm:timestamp, xdm:eventType, xdm:identityMap (author's primary identity for UIS stitching), xdm:producedBy — are not repeated here. Channel-specific field groups extend this with platform-native metadata.", + "definitions": { + "interaction": { + "properties": { + "xdm:interaction": { + "title": "Interaction", + "description": "Core fields describing a participant interaction on a messaging or conversation channel. Participants carry full xdm:identityMap per party; media and file payloads are modeled in xdm:asset[] separate from xdm:content[].", + "type": "object", + "properties": { + "xdm:channelType": { + "title": "Channel Type", + "description": "The application or platform where the interaction took place. A controlled extensible enum. Distinct from the existing xdm:channel Experience Channel datatype, which is web-analytics-oriented. Use meta:enum values for known surfaces; channel-specific field groups carry the deeper platform detail.", + "type": "string", + "meta:enum": { + "whatsapp": "WhatsApp", + "sms": "SMS", + "email": "Email", + "chat": "Web or App Chat", + "brand_concierge": "Adobe Brand Concierge", + "dynamic_chat": "Adobe Dynamic Chat", + "phone": "Phone or Voice Call", + "video": "Video Conference", + "slack": "Slack", + "social": "Social Media", + "in_app": "In-App Messaging", + "push": "Push Notification" + } + }, + + "xdm:conversationId": { + "title": "Conversation ID", + "description": "The identifier of the containing conversation that groups related interactions. Semantics differ by channel: WhatsApp — conversation.id from the webhook (system-derived when absent); Brand Concierge — conversationID; Dynamic Chat — transcriptId (may equal @id for a transcript-as-single-event model); Email — thread ID or RFC References chain.", + "type": "string" + }, + + "xdm:crossChannelCorrelationId": { + "title": "Cross-channel correlation ID", + "description": "Optional. A stable, opaque identifier assigned by the brand or integration layer and emitted on every ExperienceEvent that should be joined across channels for reporting, journey analytics, or case context. Use the same value on WhatsApp, email, chat, Brand Concierge, Dynamic Chat, and other surfaces when those touches belong to one logical omnichannel thread, case, or journey instance. Format is implementation-defined (UUID, ULID, or namespaced string such as case:12345); keep values non-PII unless governed like other identifiers. Distinct from xdm:conversationId (often source-native per channel), from @id (AEP event dedup), and from xdm:identityMap (UIS person stitching). Omit when no cross-channel correlation is supplied.", + "type": "string", + "examples": [ + "550e8400-e29b-41d4-a716-446655440000", + "case:ACME-2026-88421", + "journey_ctx_7f3c9a2b1d8e4f60" + ] + }, + + "xdm:parentInteractionId": { + "title": "Parent Interaction ID", + "description": "Optional. The @id of the parent interaction that this fragment directly replies to or is threaded under (quoted reply, email In-Reply-To, Slack thread reply). Distinct from conversationId.", + "type": "string" + }, + + "xdm:authorRole": { + "title": "Author Role", + "description": "The functional role of the participant whose identity is in the ExperienceEvent xdm:identityMap (the author or sender of this interaction). Agent and bot identities MUST use non-UIS namespaces (brand_agent_id, system_agent_id) in identityMap to avoid unintended UIS stitching.", + "type": "string", + "meta:enum": { + "person": "Human end-user or consumer (visitor, customer, lead).", + "agent": "Human brand representative (support rep, sales agent).", + "bot": "Automated chatbot or scripted AI agent (DC bot).", + "concierge": "Generative AI-powered brand assistant (BC concierge).", + "system": "Platform or source system emitting a status or lifecycle event." + } + }, + + "xdm:participants": { + "title": "Participants", + "description": "All parties active in this interaction: author and direct recipients. Each entry carries the same xdm:identityMap shape as ExperienceEvent (namespace keys to arrays of identity items). The author is marked with isAuthor:true; that participant's identityMap MUST be consistent with the event-level xdm:identityMap primary author identity. Agent and bot entries MUST use brand_agent_id or system_agent_id namespaces.", + "type": "array", + "items": { + "type": "object", + "properties": { + "xdm:identityMap": { + "title": "Identity Map", + "description": "Identities for this participant, keyed by namespace integration code. Same structure as ExperienceEvent xdm:identityMap.", + "type": "object", + "meta:xdmType": "map", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "https://ns.adobe.com/xdm/context/identityitem" + } + } + }, + "xdm:role": { + "title": "Role", + "description": "The functional role of this participant in the interaction.", + "type": "string", + "meta:enum": { + "person": "Human end-user or consumer.", + "agent": "Human brand representative.", + "bot": "Automated chatbot or scripted AI agent.", + "concierge": "Generative AI-powered brand assistant.", + "system": "Platform or system endpoint." + } + }, + "xdm:isAuthor": { + "title": "Is Author", + "description": "True if this participant is the sender or author of this interaction. Exactly one entry should have isAuthor:true; its xdm:identityMap MUST match the author identity represented in the parent ExperienceEvent xdm:identityMap.", + "type": "boolean" + } + }, + "required": ["xdm:identityMap", "xdm:role"] + } + }, + + "xdm:content": { + "title": "Content", + "description": "Ordered array of lightweight content parts: text, HTML, serialized location/structured JSON, or simple URL strings in value. Use xdm:asset[] for images, video, audio, documents, and link preview metadata. Multi-part messages interleave content[] and asset[] by emission order as defined by the connector.", + "type": "array", + "items": { + "type": "object", + "properties": { + "xdm:contentType": { + "title": "Content Type", + "description": "Discriminator for this content part.", + "type": "string", + "meta:enum": { + "text": "Plain text. Use xdm:value for the string.", + "html": "HTML markup. Use xdm:value for the HTML string.", + "image": "Image reference when only a simple URL is needed; prefer xdm:asset[] with xdm:mediaRef for full metadata.", + "video": "Video reference when only a simple URL is needed; prefer xdm:asset[] with xdm:videoRef.", + "audio": "Audio reference when only a simple URL is needed; prefer xdm:asset[] with xdm:audioRef.", + "document": "Document reference when only a simple URL is needed; prefer xdm:asset[] with xdm:attachment.", + "link": "Hyperlink when only a URL string is needed; prefer xdm:asset[] with xdm:linkRef for previews.", + "location": "Geographic or place data as serialized JSON in xdm:value.", + "structured": "Channel-defined payload (buttons, carousels, forms) as serialized JSON in xdm:value." + } + }, + "xdm:value": { + "title": "Value", + "description": "Body text, URL, or serialized JSON depending on contentType.", + "type": "string" + } + }, + "required": ["xdm:contentType"] + } + }, + + "xdm:asset": { + "title": "Assets", + "description": "Ordered array of media, file, and rich link parts. Each item has a content type discriminator and optional AEP Assets ID after ingestion. Pair with xdm:content[] to represent captions, citations, and multi-part message ordering.", + "type": "array", + "items": { + "type": "object", + "properties": { + "xdm:contentType": { + "title": "Asset Content Type", + "description": "Which type-specific sub-object is populated for this asset part.", + "type": "string", + "meta:enum": { + "image": "Image. Use xdm:mediaRef.", + "video": "Video. Use xdm:videoRef.", + "audio": "Audio or voice note. Use xdm:audioRef.", + "document": "File attachment. Use xdm:attachment.", + "link": "Hyperlink with optional preview. Use xdm:linkRef." + } + }, + "xdm:assetId": { + "title": "AEP Asset ID", + "description": "Adobe Experience Platform Assets (DAM) identifier after connector ingestion. Omit until ingested.", + "type": "string" + }, + "xdm:mimeType": { + "title": "MIME Type", + "description": "IANA MIME type, e.g. image/jpeg, video/mp4, application/pdf.", + "type": "string" + }, + "xdm:mediaRef": { + "title": "Image Media Reference", + "description": "Present when contentType = image.", + "type": "object", + "properties": { + "xdm:url": { + "title": "URL", + "type": "string", + "format": "uri" + }, + "xdm:altText": { + "title": "Alt Text", + "type": "string" + } + } + }, + "xdm:videoRef": { + "title": "Video Reference", + "description": "Present when contentType = video.", + "type": "object", + "properties": { + "xdm:url": { + "title": "URL", + "type": "string", + "format": "uri" + }, + "xdm:thumbnailUrl": { + "title": "Thumbnail URL", + "type": "string", + "format": "uri" + } + } + }, + "xdm:audioRef": { + "title": "Audio Reference", + "description": "Present when contentType = audio.", + "type": "object", + "properties": { + "xdm:url": { + "title": "URL", + "type": "string", + "format": "uri" + } + } + }, + "xdm:attachment": { + "title": "Document / File Attachment", + "description": "Present when contentType = document.", + "type": "object", + "properties": { + "xdm:url": { + "title": "URL", + "type": "string", + "format": "uri" + }, + "xdm:filename": { + "title": "Filename", + "type": "string" + }, + "xdm:contentId": { + "title": "Content-ID", + "description": "MIME Content-ID (cid:) for inline email parts (RFC 2392).", + "type": "string" + }, + "xdm:isInline": { + "title": "Is Inline", + "description": "True when embedded inline (e.g. cid: in HTML email).", + "type": "boolean" + } + } + }, + "xdm:linkRef": { + "title": "Link Reference", + "description": "Present when contentType = link. xdm:url is required when this object is used.", + "type": "object", + "properties": { + "xdm:url": { + "title": "URL", + "type": "string", + "format": "uri" + }, + "xdm:displayText": { + "title": "Display Text", + "description": "Anchor text or human-readable label.", + "type": "string" + }, + "xdm:previewImageUrl": { + "title": "Preview Image URL", + "type": "string", + "format": "uri" + } + }, + "required": ["xdm:url"] + } + }, + "required": ["xdm:contentType"] + } + }, + + "xdm:sourceMessageId": { + "title": "Source Message ID", + "description": "Platform-native identifier for this interaction. Distinct from @id. Examples: WhatsApp wamid, BC turnID, DC transcriptId, email Message-ID.", + "type": "string" + } + } + } + } + } + }, + "allOf": [ + { + "$ref": "https://ns.adobe.com/xdm/common/extensible#/definitions/@context" + }, + { + "$ref": "#/definitions/interaction" + } + ], + "meta:status": "proposed" +}