Resolve Conversation (v2)

Understand how to configure Resolve Conversation in Cisco Webex Contact Center

Introduction

The Resolve Conversation node invokes a middleware micro-service between Webex Contact Center and Webex Engage, managing conversations and tasks across these integrated platforms. Its primary function is to evaluate incoming messages using sender, recipient, and channel details to determine whether to initiate a new conversation or append the message to an existing one. By consolidating logic that was previously distributed across multiple nodes—such as searching for a conversation, appending to an existing one, or creating a new task—the Resolve Conversation node simplifies flow configuration, although it may make the underlying process less transparent to users.

Authorization

Refer to section Node Authorizations for more information.

Context

How does this work internally?

The Resolve Conversation node automatically checks for existing conversations across various channels-such as chat, email, or social by evaluating sender, recipient, and channel information. If a matching conversation is found, it routes the message; accordingly, otherwise, it initiates a new conversation.

Chat

A step-by-step procedure for how the Resolve Conversation node handles chat:

  1. Identify conversation context:
    The node extracts key attributes from the incoming chat:

    • Customer Address → Livechat Browser Fingerprint
    • Business Address → Livechat App ID
    • Livechat Thread ID → UUID
  2. Search for a unique conversation:
    Using the combination of these attributes (Customer Address + Business Address + Thread ID), the node searches for an existing conversation in the system.

  3. Invoke next steps based on conversation status:

    • If an Active or Queued conversation exists:

      • Append the incoming message to the ongoing conversation.
    • If only a Closed conversation exists, or if no conversation is found:

      • Create a new conversation.

      • Generate a new task and link it to the new conversation.

        Chat Resolve Conversation

        Chat Resolve Conversation

Email

A step-by-step procedure for how the Resolve Conversation node handles email:

  1. Extract Attributes from Incoming Email:

    • Check if the "In-Reply-To" header is present.
    • If not, resort to subject-recipient based search using the following parameters by capturing them from the incoming email :
      • Customer Address (Email ID)
      • Business Address (Mailbox)
      • Email Subject
  2. Search for an Existing Conversation:

    • First, use the "In-Reply-To" header to try to find a matching conversation.
    • If "In-Reply-To" is not available, use the combination of Customer Address, Business Address, and Email Subject.
  3. Evaluate Conversation Status:

    • If an Active or Queued conversation is found:

      • Append the incoming message to the existing conversation.
    • If a Closed conversation is found:

      • Re-open the closed conversation to preserve customer history.
      • Append the new message to the re-opened conversation.
      • Create a new task and update the conversation with this new task ID.
    • If no conversation exists (new customer):

      • Create a new conversation.

      • Create a new task and update the conversation with the task ID.

        Email Resolve Conversation

        Email Resolve Conversation

Social (SMS / Facebook / Apple Messages for Business/ Whatsapp)

A step-by-step procedure for how the Resolve Conversation node handles channels like SMS, Facebook, Apple Messages for Business Chat, and Whatsapp:

  1. Extract Key Attributes from the Incoming Message:
    • Customer Address (e.g., Customer Mobile Number, Page Scoped ID (PSID), AMB Opaque ID, Whatsapp Number)
    • Business Address (e.g., SMS Longcode, Facebook Page ID, Apple Messages for Business Account ID, Whatsapp Business Longcode)
  2. Search for an Existing Conversation:
  • Use the combination of customer and business address to identify a unique conversation ID.
  1. Evaluate and Route Based on Conversation Status:
  • If an Active or Queued conversation exists:

    • Append the incoming message to the ongoing conversation.
  • If a Closed conversation exists:

    • Re-open the closed conversation to preserve customer history.
    • Append the new message to the re-opened conversation.
    • Create a new task and update the conversation with this new task ID.
  • If no conversation exists (new customer):

    • Create a new conversation.

    • Create a new task and update the conversation with the task ID.

      Social Resolve Conversation

      Social Resolve Conversation

JSON payloads

🚧

Note

As Webex Connect variables deal with strings alone, these JSON payloads are constructed in an Evaluate node generally (already implemented in the template flows from GitHub) and passed on as stringified JSON to the Resolve conversation node.

Below is a JSON representation of the same for better readability

Chat

Sample payload - detailsJson

{
    "messageDetails": {
        "appId": "LI07154615",
        "domain": "transcendent-starburst.netlify.app",
        "threadId": "e5f0ccab-c350-4d2a-ad74-3c71993506de",
        "threadTitle": "1765454452383_0.688648135896382",
        "threadStatus": "",
        "userId": "ba30f8e0-b6a3-4a10-90b6-d1467abd5b8a",
        "message": "Hi this is a sample message",
        "attachmentCount": 0,
        "attachment": "",
        "extras": "",
        "version": "v2",
        "tid": "709c153e-e865-4dc1-8cef-4dcbae6f7b11",
        "serviceKey": "b373dc37-73a5-11f0-840f-027f9a8873c5",
        "customerName": "Customer",
        "customerEmail": "ba30f8e0-b6a3-4a10-90b6-d1467abd5b8a",
        "timestamp": "2025-12-11T12:01:33.495Z",
        "proactiveRuleId": ""
    },
    "pciDetails": {
        "isPCICompliant": true,
        "isPCIValidationDone": "true",
        "nonPCIComplianceReason": "",
        "isAttachmentEnabled": true,
        "droppedAttachmentCount": 0
    }
}
{
    "messageDetails": {
        "appId": "LI07154615",
        "domain": "transcendent-starburst-5fc84f.netlify.app",
        "threadId": "e5f0ccab-c350-4d2a-ad74-3c71993506de",
        "threadTitle": "1765454452383_0.688648135896382",
        "threadStatus": "",
        "userId": "ba30f8e0-b6a3-4a10-90b6-d1467abd5b8a",
        "message": "",
        "attachmentCount": 1,
        "attachment": "[{\"file\":\"https://oregon-webex-encryption.s3.us-west-2.amazonaws.com/589517eb-5a89-490f-bf7f-c0ea9e059c19dee3f14e-4d0c-4b36-8b6f-1c51b6ca482e.png?keyUri=kms%3A%2F%2Fkms-us.wbx2.com%2Fkeys%2Fd71a43c8-947f-48ef-897e-f80849c33f95&JWE=eyJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiZGlyIn0..gMF9nnWXnPRA5utz.z9qRXaAStEFF1VqUoI7OMeFZOn55hqwIDwTyjfhsnpexMUpVRLBoqDfKi5fCrMsRVeM3rXTMHs2BnK9paDCgHGq8QHBpnmnIIapKOg88ENrUjZYUs3HRMXdvpc449XEMdzkQCRLE95CaBabkzW8OME0CxcKWpEGX03IU4Zrx41Sojf6idoLwsKDvwISC0WSmsMqYTHAhNOjnRxlsn1jVl2hbCzOlFBYRlz3dT0KRFktnIlRvRyOuxdnUWIO2LxjKV7IHN76OJbO8oIWsNUYv68qNPiFf-36pkXl18E2u8sP6Uj16l-vCzalO-ntmgFxgsy4wcsVACMRW2rxArCuAJy4sW20CWyOG732SmYpHoYDnchsX3z0Ve2ZRVA97XPbP2tWxDvF6HVM3pkNWig.tEdzE1RO2dlGh40EzKezYQ\",\"contentType\":\"image\"}]",
        "extras": "",
        "version": "v2",
        "tid": "709c153e-e865-4dc1-8cef-4dcbae6f7b11",
        "serviceKey": "b373dc37-73a5-11f0-840f-027f9a8873c5",
        "customerName": "Customer",
        "customerEmail": "ba30f8e0-b6a3-4a10-90b6-d1467abd5b8a",
        "timestamp": "2025-12-11T12:01:33.495Z",
        "proactiveRuleId": ""
    },
    "pciDetails": {
        "isPCICompliant": true,
        "isPCIValidationDone": "true",
        "nonPCIComplianceReason": "",
        "isAttachmentEnabled": true,
        "droppedAttachmentCount": 0
    }
}
var messageDetails = {
    "appId": appId,
    "domain": liveChatDomain,
    "threadId": threadId,
    "threadTitle": threadTitle,
    "threadStatus": threadStatus,
    "userId": userId,
    "message": resolveConversationMessage,
    "attachmentCount": parseInt(attachmentCount),
    "attachment": attachment,
    "extras": JSON.stringify(messageExtras),
    "version": version,
    "tid": transId,
    "serviceKey": serviceKey,
    "customerName": customerName,
    "customerEmail": customerEmail,
    "timestamp": timestamp
};

var pci = {
    "isPCICompliant": JSON.parse(isPCICompliance.replace("NA", "true")),
    "isPCIValidationDone": resolveConversationIsPCIValidationDone,
    "nonPCIComplianceReason": resolveConversationNonPCIComplianceReasonObject,
    "isAttachmentEnabled": JSON.parse(isAttachmentEnabled.replace("NA", "true")),
    "droppedAttachmentCount": JSON.parse(droppedAttachmentCount.replace("NA", "0"))
};

var details = {
    "messageDetails": messageDetails,
    "pciDetails": pci
};

var detailsJson = JSON.stringify(details);

Field Descriptions

Field KeyField DescriptionMandatory
appIdCreated when the app/asset is created; used for Connect and Engage integrationYes
domainDomain accessed by customersYes
threadIdRepresents the threads created for chatYes
threadTitleComes from chat conversationYes
threadStatusRefers to the closure or open status of the threadYes
userIdComes from chat conversationYes
messagetextContains the message from the chat customerYes
attachmentCountCount of attachments per message receivedYes
attachmentAttachment informationYes
extrasAdditional optional informationNo
versionVersion informationNo
tidHolds the Transaction ID of the conversationYes
serviceKeyComes from Connect serviceNo
customerNameCustomer Name either configured in the field or from pre-chat formYes
customerEmailCustomer email address configured in the field or from pre-chatYes
timestampRefers to timestamp of regionYes

Email

Sample payload - detailsJson

        "messageDetails": {
        "appId": "a_638296118145560000",
        "assetType": "AWS SES",
        "senderName": "Rajesh imI",
        "recipient": "[email protected]",
        "businessEmailId": "[email protected]",
        "customerEmailId": "[email protected]",
        "customerName": "Rajesh imI",
        "toAddresses": "[\"[email protected]\"]",
        "ccRecipients": "[]",
        "bccRecipients": "[]",
        "subject": "inbound chat 1205",
        "inReplyTo": "",
        "headers": "  ",
        "htmlMessage": "<div dir=\"ltr\"><div>hello there </div><br>",
        "strippedText": "hello there\r\n",
        "strippedHtml": "<div dir=\"ltr\"><div>hello there </div><br>",
        "attachments": "[]",
        "serviceKey": "79d7035b-d435-11f0-b1a0-02e9c3f1ccb1",
        "timestamp": "2026-05-12T12:13:20.743Z"
      },
      "pciDetails": {
        "isPCICompliant": true,
        "isPCIValidationDone": "true",
        "nonPCIComplianceReason": "[]",
        "droppedAttachmentCount": 0
      },
      "malwareScanDetails": {
        "isMalwareCompliant": true,
        "isMalwareValidationDone": "true",
        "malwareFailedReason": "[]",
        "droppedAttachmentCount": 0
      },
      "securityScanDetails": {
        "isSecurityCompliant": true,
        "isSecurityValidationDone": "true",
        "securityFailedReason": "[]",
        "droppedAttachmentCount": 0
      }
 var messageDetails = "{" +
"\"appId\": \""+ appId + "\"," +
"\"assetType\": \""+ assetType + "\"," +
"\"senderName\": \""+ senderName + "\"," +
"\"recipient\": \""+ bizemailid + "\"," +
"\"businessEmailId\": \""+ bizemailid + "\"," +
"\"customerEmailId\": \""+ customerEmailId + "\"," +
"\"customerName\": \""+ senderName + "\"," +
"\"toAddresses\": "+ JSON.stringify(toAddresses) + "," +
"\"ccRecipients\": "+ JSON.stringify(ccRecipients) + "," +
"\"bccRecipients\": "+ JSON.stringify(bccRecipients) + "," +
"\"subject\": "+ JSON.stringify(subject) + "," +
"\"inReplyTo\": \""+ inReplyTo + "\"," +
"\"headers\": "+ JSON.stringify(headers) + "," +
"\"message\": \""+ messagetext + "\"," +
"\"htmlMessage\": \""+ messageHTML + "\"," +
"\"strippedText\": \""+ strippedText + "\"," +
"\"strippedHtml\": \""+ strippedHtml + "\"," +
"\"attachments\": "+ attachmentEmptyName + "," +
"\"serviceKey\": \""+ serviceKey + "\"," +
"\"timestamp\": \""+ timestamp + "\"" +
"}";

resolveConversationNonPCIComplianceReasonObject =
resolveConversationNonPCIComplianceReasonObject.replace("name\":\"\"", "name\":\"no_filename\"");

var pci = JSON.stringify({
"isPCICompliant": JSON.parse(isPCICompliance.replace("NA", "true")),
"isPCIValidationDone": resolveConversationIsPCIValidationDone,
"nonPCIComplianceReason": resolveConversationNonPCIComplianceReasonObject,
"droppedAttachmentCount": JSON.parse(droppedAttachmentCount.replace("NA", "0"))
});

var malwareScanDetails = JSON.stringify({
"isMalwareCompliant": JSON.parse(isMalwareCompliance.replace("NA", "true")),
"isMalwareValidationDone": isMalwareValidationDone,
"malwareFailedReason": malwareNonComplianceReasonObject,
"droppedAttachmentCount": JSON.parse(malwareScanDroppedAttachmentCount.replace("NA", "0"))
});


var securityScanDetails = JSON.stringify({
"isSecurityCompliant": JSON.parse(isSecurityCompliance.replace("NA", "true")),
"isSecurityValidationDone": isSecurityValidationDone,
"securityFailedReason": securityNonComplianceReasonObject,
"droppedAttachmentCount": JSON.parse(securityScanDroppedAttachmentCount.replace("NA", "0"))
});

var details = "{\"messageDetails\":" + messageDetails +
" , \"pciDetails\": " + pci +
" , \"malwareScanDetails\": " + malwareScanDetails +
" , \"securityScanDetails\": " + securityScanDetails +
"}";

var detailsJson = details;

Field Descriptions

Field KeyField DescriptionMandatory
appIDCreated when the app/asset is created; used for Connect and Engage integrationYes
assetTypeType of assets, e.g., email, chat, or socialYes
senderNameCustomer’s name in the form of email or nameYes
bizemailidBusiness email Id which is configured for the organizationYes
customerEmailIdRepresents customer’s email addressYes
senderNameCustomer’s name in the form of email or nameYes
toAddressCustomer's email address where email is sentYes
ccRecipientsRepresents CC recipientsYes
bccRecipientsRepresents BCC recipientsYes
subjectRepresents subject of the emailYes
headersContains all header content from the email gatewayYes
messagetextContains email message bodyYes
messagehtmlContains HTML message contentYes
strippedTextContains stripped/cleaned version of text from email gatewayYes
strippedHtmlContains stripped version of HTML from email gatewayYes
attachmentsContains all incoming attachmentsYes
serviceKeyComes from Connect serviceNo
timestampRefers to timestamp of regionYes

Social

Sample payload - detailsJson

messageDetails = {
    "appId": appId,
    "abcUserId": abcUserId,
    "accountId": accountId,
    "customerName": customerName,
    "message": resolveConversationmessagetext,
    "attachments": attachments,
    "attachmentUrl": attachmentUrl,
    "serviceKey": serviceKey,
    "timestamp": timestamp,
    "deviceCapabilityList": deviceCapabilityList
};
 var tid = transId.split('_')[0];
var messageDetails = {
    "appId": appId,
    "abcUserId": abcUserId,
    "accountId": accountId,
    "customerName": customerName,
    "message": resolveConversationmessagetext,
    "attachments": attachments,
    "attachmentUrl": attachmentUrl,
    "serviceKey": serviceKey,
    "timestamp": timestamp
};

var pci = {
    "isPCICompliant": JSON.parse(isPCICompliance.replace("NA", "true")),
    "isPCIValidationDone": resolveConversationIsPCIValidationDone,
    "nonPCIComplianceReason": resolveConversationNonPCIComplianceReasonObject,
    "isAttachmentEnabled": JSON.parse(isAttachmentEnabled.replace("NA", "true")),
    "droppedAttachmentCount": JSON.parse(droppedAttachmentCount.replace("NA", "0"))
};

var details = {
    "messageDetails": messageDetails,
    "pciDetails": pci
}


var detailsJson = JSON.stringify(details);

1;
{
  "details": {
    "messageDetails": {
      "appId": "a_173200067561504200",
      "waId": "916303330251",
      "customerWhatsappId": "919618413605",
      "customerUsername": "Rajeshh",
      "message": "hey there",
      "attachments": "[]",
      "caption": "",
      "serviceKey": "79d7035b-d435-11f0-b1a0-02e9c3f1ccb1",
      "timestamp": "2026-05-12T10:40:54.000Z"
    },
    "pciDetails": {
      "isPCICompliant": true,
      "isPCIValidationDone": "true",
      "nonPCIComplianceReason": "{\"text\":\"\"}",
      "isAttachmentEnabled": true,
      "droppedAttachmentCount": 0
    },
    "malwareScanDetails": {
      "isMalwareCompliant": true,
      "isMalwareValidationDone": "NA",
      "malwareFailedReason": "NA",
      "droppedAttachmentCount": 0
    },
    "securityScanDetails": {
      "isSecurityCompliant": true,
      "isSecurityValidationDone": "true",
      "securityFailedReason": "{\"text\":\"\"}",
      "droppedAttachmentCount": 0
    }
  }
}
 var messageDetails = {
"appId": appId,
"waId": WANumber,
"customerWhatsappId": customerWhatsappId,
"customerUsername": customerUsername,
"message": message,
"attachments": attachments,
"caption": caption,
"serviceKey": serviceKey,
"timestamp": isoTimeStamp
};

var pci = {
"isPCICompliant": JSON.parse(isPCICompliance.replace("NA", "true")),
"isPCIValidationDone": resolveConversationIsPCIValidationDone,
"nonPCIComplianceReason": resolveConversationNonPCIComplianceReasonObject,
"isAttachmentEnabled": JSON.parse(isAttachmentEnabled.replace("NA", "true")),
"droppedAttachmentCount": JSON.parse(pciScanDroppedAttachmentCount.replace("NA", "0"))
};

var malwareScanDetails = {
"isMalwareCompliant": JSON.parse(isMalwareCompliance.replace("NA", "true")),
"isMalwareValidationDone": isMalwareValidationDone,
"malwareFailedReason": malwareNonComplianceReasonObject,
"droppedAttachmentCount": JSON.parse(malwareScanDroppedAttachmentCount.replace("NA", "0"))
};

var securityScanDetails = {
"isSecurityCompliant": JSON.parse(isSecurityCompliance.replace("NA", "true")),
"isSecurityValidationDone": isSecurityValidationDone,
"securityFailedReason": securityNonComplianceReasonObject,
"droppedAttachmentCount": JSON.parse(securityScanDroppedAttachmentCount.replace("NA", "0"))
};

var details = {
"messageDetails": messageDetails,
"pciDetails": pci,
"malwareScanDetails": malwareScanDetails,
"securityScanDetails": securityScanDetails
};

var detailsJson = JSON.stringify(details);
 
{
  "details": {
    "messageDetails": {
      "serviceNumber": "447418369300",
      "senderNumber": "447966197542",
      "message": "hey",
      "serviceKey": "79d7035b-d435-11f0-b1a0-02e9c3f1ccb1",
      "timestamp": "2026-04-27T06:42:11.262Z"
    },
    "pciDetails": {
      "isPCICompliant": true,
      "isPCIValidationDone": "true",
      "nonPCIComplianceReason": "{\"text\":\"\"}",
      "droppedAttachmentCount": 0
    },
    "malwareScanDetails": {
      "isMalwareCompliant": true,
      "isMalwareValidationDone": "NA",
      "malwareFailedReason": "NA",
      "droppedAttachmentCount": 0
    },
    "securityScanDetails": {
      "isSecurityCompliant": true,
      "isSecurityValidationDone": "true",
      "securityFailedReason": "{\"text\":\"\"}",
      "droppedAttachmentCount": 0
    }
  }
}
  
 var messageDetails = {
    "serviceNumber": serviceNumber,
    "senderNumber": senderNumber,
    "message": message,
    "serviceKey": serviceKey,
    "timestamp": timestamp
}

var pci = {
    "isPCICompliant": JSON.parse(isPCICompliance.replace("NA", "true")),
    "isPCIValidationDone": isPCIValidationDone,
    "nonPCIComplianceReason": nonPCIComplianceReasonObject,
    "droppedAttachmentCount": JSON.parse(droppedAttachmentCount.replace("NA", "0"))
};

var malwareScanDetails = {
    "isMalwareCompliant": JSON.parse(isMalwareCompliance.replace("NA", "true")),
    "isMalwareValidationDone": isMalwareValidationDone,
    "malwareFailedReason": malwareNonComplianceReasonObject,
    "droppedAttachmentCount": JSON.parse(malwareScanDroppedAttachmentCount.replace("NA", "0"))
};

var securityScanDetails = {
    "isSecurityCompliant": JSON.parse(isSecurityCompliance.replace("NA", "true")),
    "isSecurityValidationDone": isSecurityValidationDone,
    "securityFailedReason": securityNonComplianceReasonObject,
    "droppedAttachmentCount": JSON.parse(securityScanDroppedAttachmentCount.replace("NA", "0"))
};

var details = {
    "messageDetails": messageDetails,
    "pciDetails": pci,
    "malwareScanDetails": malwareScanDetails,
    "securityScanDetails": securityScanDetails
};

var detailsJson = JSON.stringify(details);

1;
{
  "details": {
    "messageDetails": {
      "appId": "a_638838409917150000",
      "facebookPageId": "391273087404701",
      "psId": "24371667315851482",
      "customerName": "User",
      "message": "test",
      "attachments": "",
      "attachmentUrl": "",
      "serviceKey": "79d7035b-d435-11f0-b1a0-02e9c3f1ccb1",
      "timestamp": "2026-05-12T06:46:13.243Z"
    },
    "pciDetails": {
      "isPCICompliant": true,
      "isPCIValidationDone": "true",
      "nonPCIComplianceReason": "{\"text\":\"\"}",
      "droppedAttachmentCount": 0
    },
    "malwareScanDetails": {
      "isMalwareCompliant": true,
      "isMalwareValidationDone": "NA",
      "malwareFailedReason": "NA",
      "droppedAttachmentCount": 0
    },
    "securityScanDetails": {
      "isSecurityCompliant": true,
      "isSecurityValidationDone": "true",
      "securityFailedReason": "{\"text\":\"\"}",
      "droppedAttachmentCount": 0
    }
  }
}  
 
 var messageDetails = {
    "appId": appId,
    "facebookPageId": FBpageid,
    "psId": psId,
    "customerName": customerName,
    "message": resolveConversationmessagetext,
    "attachments": resolveConversationMessengerPayloadObject,
    "attachmentUrl": attachmentURL,
    "serviceKey": serviceKey,
    "timestamp": timestamp
};

var pci = {
    "isPCICompliant": JSON.parse(isPCICompliance.replace("NA", "true")),
    "isPCIValidationDone": resolveConversationIsPCIValidationDone,
    "nonPCIComplianceReason": resolveConversationNonPCIComplianceReasonObject,
    "droppedAttachmentCount": JSON.parse(droppedAttachmentCount.replace("NA", "0"))
};

var malwareScanDetails = {
    "isMalwareCompliant": JSON.parse(isMalwareCompliance.replace("NA", "true")),
    "isMalwareValidationDone": isMalwareValidationDone,
    "malwareFailedReason": malwareNonComplianceReasonObject,
    "droppedAttachmentCount": JSON.parse(malwareScanDroppedAttachmentCount.replace("NA", "0"))
};

var securityScanDetails = {
    "isSecurityCompliant": JSON.parse(isSecurityCompliance.replace("NA", "true")),
    "isSecurityValidationDone": isSecurityValidationDone,
    "securityFailedReason": securityNonComplianceReasonObject,
    "droppedAttachmentCount": JSON.parse(securityScanDroppedAttachmentCount.replace("NA", "0"))
};

var details = {
    "messageDetails": messageDetails,
    "pciDetails": pci,
    "malwareScanDetails": malwareScanDetails,
    "securityScanDetails": securityScanDetails
};

var detailsJson = JSON.stringify(details);

1;

Field Descriptions

Field KeyField DescriptionMandatory
appIdCreated when app/asset is created, referred to in Connect and Engage integrationYes
abcUserIdApple user IDYes
accountIdApple account IDYes
customerNameCustomer's nameYes
messageMessage received from customerYes
attachmentsCustomer attachmentsYes
attachmentUrlURL of the attachmentYes
serviceKeyComes from Connect serviceNo
TimestampRefers to the timestamp of the regionYes
deviceCapabilityListList of device capabilities received from the gatewayYes

Field Descriptions

Field KeyField DescriptionMandatory
appIdCreated when app/asset is created, referred to in Connect and Engage integrationYes
waIdRefers to the Whatsapp Business numberYes
customerWhatsappIdCustomer's Whatsapp numberYes
customerUsernameCustomer's Whatsapp usernameYes
messageWhatsapp message received from the customerYes
attachmentsAttachments sent by the Whatsapp customerYes
captionCaption along with attachments, considered as text onlyNo
serviceKeyComes from Connect serviceNo
timestampRefers to the timestamp of the regionYes

Field Descriptions

Field KeyField DescriptionMandatory
serviceNumberIncoming service numberYes
senderNumberCustomer's numberYes
messageCustomer messageYes
serviceKeyComes from Connect serviceNo
timestampRefers to timestamp of regionYes

Field Descriptions

Field KeyField DescriptionMandatory
appIdCreated when the app/asset is created; used for Connect and Engage integrationYes
facebookPageIdRefers to the Facebook Page ID created with Connect Engage integrationYes
psIdPage-specific ID for users who interact using the Facebook pageYes
customerNameRefers to the Facebook customer's nameYes
messagetextContains the customer's message textYes
attachmentsAttachments sent from the customerYes
messagetextContains the customer's message textYes
attachmentsAttachments sent from the customerYes
attachmentURLURL of the attachmentsYes
serviceKeyComes from Connect serviceNo
timestampRefers to the timestamp of the regionYes

How to configure this node

Field KeyField Description
Method NameSpecifies the action to be performed. In this case, it is set to "Resolve Conversation," which indicates this node is responsible for ending an active interaction.
Node Runtime AuthorizationRequired for the node to execute with the necessary permissions.
Flow IdA field to input the specific identifier for the workflow or flow instance that this node belongs to.
Trans Id (Transaction ID)A variable field (currently set to $(tid)) that identifies the specific customer transaction or interaction being resolved.
Media TypeSelect the type of communication being handled, such as "Chat."
Media ChannelSpecify the particular channel used for the interaction, such as "Web, Mobile."
DetailsA text field to provide additional context or metadata about the resolution, such as "Live Chat/ In-App Messaging."
Override Default Contact Close Event HandlingA checkbox that, when selected, allows the user to bypass the standard system-level logic for closing a contact, providing more granular control over the resolution process.

Node outcomes

Success outcomes

Node OutcomeWhen does this occur?Suggested next steps
acceptedRequest has been acknowledged by the service and is awaiting async eventsWait for subsequent events
createdA Webex CC task and a Webex Engage conversation has been created and have been linked. The message has already been added to the conversationProceed to next steps (e.g. AI agent or Queue Task)
reopenedAn existing closed conversation was re-opened on Webex Engage, a task has been created for this and both have been linkedProceed to next steps (e.g. AI agent or Queue Task)
appendedAn existing active / queued interaction was found on Webex Engage and the message was appended to the conversationEnd the flow successfully

Error outcomes

Node OutcomeWhen does this occur?Suggested next steps
onInvalidDataThis error occurs when any of the mandatory fields on the node's UI did not have a value passed during flow run timeDebug your flow offline
onErrorThis error occurs when the underlying API calls to the microservice fails (responds with a non 2XX series code)Implement exponential retry logic in your flow
onInvalidChoiceThis error occurs when the API responds with an unknown code that has not been implemented in the code

This is an internal error outcome exposed by default from the pre-built integration framework and should not occur ideally in a live scenario with this node in general
Contact Cisco Support
onauthorizationfailThis error occurs when we've failed to authenticate your requestRecheck your Integration's Auth credentials
tooManyRequestsThis error occurs when you've hit the rate limits of this serviceImplement exponential retry logic in your flow
serviceUnavailableThis error occurs when the middleware service is down and responds with a 5XX series response code specificallyImplement expotential retry logic in your flow (in the order of a few minutes preferably)
errorThis occur occurs when the pre-built integration framework on Webex Connect's side is downContact Cisco Support
taskFailedThis error occurs when the task creation failed on Webex CC's side (OR) conversation creation failed on Webex Engage's sideImplement exponential retry logic in your flow

If you still notice errors consistently, contact Cisco Support
appendFailedThis error occurs when the message was attempted to be appended to an existing conversation but it failedImplement exponential retry logic in your flow

If you still notice errors consistently, contact Cisco Support
onTimeoutThis error occurs when the node timed-out waiting for a synchronous (OR) asynchronous response back from this serviceContact Cisco Support

Best practices

  • Implement exponential retry logic for error outcomes listed above
  • Contact Cisco Support if you notice errors consistently on this node across all your flows using this node