Skip to main content

Live Chat Integration on app.yellow.ai

This integration will allow the customers who are using bots on app.yellow.ai to use the updated live chat integration on cloud.yellow.ai.

1. Use cases

The following are the use-cases of this integration:

1.1 Amazon connect live agent

To connect with an Amazon Connect Live Agent, use this code-snippet


app.raiseTicketForThirdPartyLiveChat({
issue: "Test Issue",
contact: {
phone: "9870000000",
name: "Raj",
email: "[email protected]"
},
amazonConnectLiveAgentCustomFields: {customFields: {test: “yes”}}
}).then((ticketData) => {
app.log(ticketData, "ticketData");
// Display appropriate message based on the ticketData
}).catch((error) => {
app.log(error, 'error');
//Error handler
});

This table consists of sample values, data types and descriptions for all the fields that need to be filled.

Field nameSample valueData typeDescription
issueTest descriptionStringThe subject/topic/reason why the ticket is created.
phone9870000000StringMobile number of the end user.
email[email protected]StringEmail address of the end user.
nameRajeshStringName of the end user.
amazonConnectLiveAgentCustomFields{customFields: {test: “yes”}}ObjectCustom key: value pairs associated with the end user required to raise a ticket. You need to pass the value of this key as {}, in case no key: pairs are required.

Sample response in case of success

{
"assignedTo": true,
"success": true,
"status": "ASSIGNED",
"ticketInfo": "{{apiresponse}}"
}
note

apiresponse represents the raw response from the amazon connect create ticket API

Sample response in case of failure


{
"success": false,
"assignedTo": false,
"agentNotAvailable": true,
"message": "TicketId is not created and transferring the control back to the bot",
"ticketInfo": "{{apiresponse}}"
}

:::note apiresponse represents the raw response from the amazon connect create ticket API :::

1.2 Avaya Live Agent

To connect with an Avaya Live Agent, use this code-snippet

      app.raiseTicketForThirdPartyLiveChat({
issue: "Test Issue",
contact: {
phone: "9870000000",
name: "Raj",
email: "[email protected]"
}
}).then((ticketData) => {
app.log(ticketData, "ticketData");
// Display appropriate message based on the ticketData
}).catch((error) => {
app.log(error, 'error');
//Error handler
});

This table consists of sample values, data types and descriptions for all the fields in the that need to be filled.

Field nameSample valueData typeDescription
issueTest descriptionStringThe subject/topic/reason why the ticket is created.
phone9870000000StringMobile number of the end user.
email[email protected]StringEmail address of the end user.
nameRajeshStringName of the end user.

Sample response in case of success

{
"assignedTo": true,
"success": true,
"message": "Agent is available and ticket is assigned to the agent",
"status": "ASSIGNED",
"ticketInfo": "{{apiresponse}}"
}

note

apiresponse represents the raw response from the avaya create ticket API

Sample response in case of failure


{
"success": false,
"assignedTo": false,
"agentNotAvailable": true,
"message": "Agent availability is false and hence not assigned to any agent.",
"ticketInfo": "{{apiresponse}}"
}

note

apiresponse represents the raw response from the avaya create ticket API

1.3 Custom Live Agent

To connect with a Custom Live Agent, use this code-snippet

      app.raiseTicketForThirdPartyLiveChat({
issue: "Test Issue",
contact: {
phone: "9870000000",
name: "Raj",
email: "[email protected]"
},
category: "Sales",
priority: "MEDIUM",
customLiveAgentCustomFields: {customFields: {test: “yes”}}
}).then((ticketData) => {
app.log(ticketData, "ticketData");
// Display appropriate message based on the ticketData
}).catch((error) => {
app.log(error, 'error');
//Error handler
});

This table consists of sample values, data types and descriptions for all the fields in the that need to be filled.

Field nameSample valueData typeDescription
issueTest descriptionStringThe subject/topic/reason why the ticket is created.
phone9870000000StringMobile number of the end user.
email[email protected]StringEmail address of the end user.
nameRajeshStringName of the end user.
categorySalesStringCategory under which the ticket will be created.
priorityMEDIUMStringPriority of the ticket to be created.
customLiveAgentCustomFields{customFields: {test: “yes”}}ObjectCustom key:value pairs associated with the end user required to raise a ticket. You need to pass the value of this key as {}, in case no key:pairs are required.

Sample response in case of success


{
"assignedTo": true,
"success": true,
"status": "ASSIGNED",
"ticketInfo": "{{apiresponse}}"
}
note

apiresponse represents the raw response from the custom live agent create ticket API

Sample response in case of failure


{
"success": false,
"assignedTo": false,
"agentNotAvailable": true,
"message": "Agent is unavailable to chat with the end user, hence transferring the control back to the bot.",
"ticketInfo": "{{apiresponse}}"
}
apiresponse represents the raw response from the custom live agent create ticket API

1.4 Freshchat Live Agent

To connect to a Freshchat Live Agent, please use this code-snippet:

   app.raiseTicketForThirdPartyLiveChat({
issue: "Test Issue",
contact: {
phone: "9870000000",
name: "Raj",
email: "[email protected]"
},
assignedGroupId: "test-group",
freshChatUserId: "3554-cbcbc-dchchc",
freshChatUniqueIdentifier: "testInfo",
properties: [],
freshChatChannelId: "abce-ddede-eded-3454"
}).then((ticketData) => {
app.log(ticketData, "ticketData");
// Display appropriate message based on the ticketData
}).catch((error) => {
app.log(error, 'error');
//Error handler
});

This table consists of sample values, data types and descriptions for all the fields in the that need to be filled.

Field nameSample valueData typeDescription
issueTest descriptionStringThe subject/topic/reason why the ticket is created.
phone9870000000StringMobile number of the user.
email[email protected]StringEmail address of the user.
nameRajeshStringName of the user.
assignedGroupIdSalesStringCategory under which the ticket will be created.
priority3554-cbcbc-dchchcStringFreshchat groupId to which the ticket should be assigned. The default value “” should be passed for this.
freshChatUserIdtest-groupStringFreshchat userId of the user, this is passed if the same ticket needs to be re-opened for the same user. The default value “” should be passed for this.
freshChatUniqueIdentifiertestInfoObjectA unique identifier that will reflect as referenceId in the freshchat agent portal if passed. The default value “” should be passed for this.
properties[{key:”Hash”, value: “Yes”} ]ArrayCustom properties that can be passed on while creating a ticket.
freshChatChannelIdabce-ddede-eded-3454StringThis API needs to be called from Postman, which in turn will fetch the list of channel IDs associated with that Freshchat account and confirms the client's authorization to access that account.

Sample response in case of success

{
"assignedTo": true,
"success": true,
"status": "ASSIGNED",
"ticketInfo": "{{apiresponse}}"
}

note

apiresponse represents the raw response from the freshchat live agent create ticket API

Sample response in case of failure:-

{
"success": false,
"assignedTo": false,
"agentNotAvailable": true,
"message": "Agent is unavailable to chat with the end user, hence transferring the control back to the bot.",
"ticketInfo": "{{apiresponse}}"
}

::: note apiresponse represents the raw response from the freshchat live agent create ticket API :::

1.5 Kapture CRM Live Agent

To connect to a Kapture CRM Live Agent, please use this code-snippet

      app.raiseTicketForThirdPartyLiveChat({
issue: "Test Issue",
contact: {
phone: "9870000000",
name: "Raj",
email: "[email protected]"
}
}).then((ticketData) => {
app.log(ticketData, "ticketData");
// Display appropriate message based on the ticketData
}).catch((error) => {
app.log(error, 'error');
//Error handler
});

This table consists of sample values, data types and descriptions for all the fields that need to be filled.

Field nameSample valueData typeDescription
issueTest descriptionStringThe subject/topic/reason why the ticket is created.
phone9870000000StringMobile number of the end user.
email[email protected]StringEmail address of the end user.
nameRajeshStringName of the end user.

Sample response in case of success


{
"assignedTo": true,
"success": true,
"message": "Agent is available and ticket is assigned to the agent",
"status": "ASSIGNED",
"ticketInfo": "{{apiresponse}}"
}

note

apiresponse represents the raw response from the kapture crm create ticket API

Sample response in case of failure

{
"success": false,
"assignedTo": false,
"agentNotAvailable": true,
"message": "Agent availability is false and hence not assigned to any agent.",
"ticketInfo": "{{apiresponse}}"
}
note

apiresponse represents the raw response from the kapture crm create ticket API

1.6 Locobuzz Live Agent

To connect to a Locobuzz Live Agent, please use this code-snippet

      app.raiseTicketForThirdPartyLiveChat({
issue: "Test Issue",
contact: {
phone: "9870000000",
name: "Raj",
email: "[email protected]"
},
category: "Sales",
priority: "MEDIUM",
}).then((ticketData) => {
app.log(ticketData, "ticketData");
// Display appropriate message based on the ticketData
}).catch((error) => {
app.log(error, 'error');
//Error handler
});

This table consists of sample values, data types and descriptions for all the fields that need to be filled.

Field nameSample valueData typeDescription
issueTest descriptionStringThe subject/topic/reason why the ticket is created.
phone9870000000StringMobile number of the end user.
email[email protected]StringEmail address of the end user.
nameRajeshStringName of the end user.
categorySalesStringCategory under which the ticket will be created.
priorityMEDIUMStringPriority of the ticket to be created.
sentimentHappyStringUser sentiment. Default value to be passed for this key is “”.

Sample response in case of success

{
"assignedTo": true,
"success": true,
"status": "ASSIGNED",
"ticketInfo": "{{apiresponse}}"
}
note

apiresponse represents the raw response from the locobuzz live agent create ticket API

Sample response in case of failure

{
"success": false,
"assignedTo": false,
"agentNotAvailable": true,
"message": "Agent is unavailable to chat with the end user, hence transferring the control back to the bot.",
"ticketInfo": "{{apiresponse}}"
}
note

apiresponse represents the raw response from the locobuzz live agent create ticket API

1.7 Genesys Live Agent

To connect to a Genesys Live Agent, please use this code-snippet

      app.raiseTicketForThirdPartyLiveChat({
issue: "Test Issue",
contact: {
phone: "9870000000",
name: "Raj",
email: "[email protected]"
},
genesysCustomFields: {customFields: {test: “yes”}}
}).then((ticketData) => {
app.log(ticketData, "ticketData");
// Display appropriate message based on the ticketData
}).catch((error) => {
app.log(error, 'error');
//Error handler
});

This table consists of sample values, data types and descriptions for all the fields that need to be filled.

Field nameSample valueData typeDescription
issueTest descriptionStringThe subject/topic/reason why the ticket is created.
phone9870000000StringMobile number of the end user.
email[email protected]StringEmail address of the end user.
nameRajeshStringName of the end user.
genesysCustomFields{customFields: {test: “yes”}}ObjectCustom key:value pairs associated to the end user required to raise a ticket. You need to pass the value of this key as {}, in case no key:pairs are required.

Sample response in case of success

{
"assignedTo": true,
"success": true,
"status": "ASSIGNED",
"ticketInfo": "{{apiresponse}}"
}
note

apiresponse represents the raw response from the genesys create ticket API

Sample response in case of failure

{
"success": false,
"assignedTo": false,
"agentNotAvailable": true,
"message": "TicketId is not created and transferring the control back to the bot",
"ticketInfo": "{{apiresponse}}"
}
note

apiresponse represents the raw response from genesys create ticket API

1.8 Genesys Cloud Live Agent

To connect to a Genesys Cloud Live Agent, please use this code-snippet

      app.raiseTicketForThirdPartyLiveChat({
issue: "Test Issue",
contact: {
phone: "9870000000",
name: "Raj",
email: "[email protected]"
},
genesysCloudCustomFields: {customFields: {test: “yes”}}
}).then((ticketData) => {
app.log(ticketData, "ticketData");
// Display appropriate message based on the ticketData
}).catch((error) => {
app.log(error, 'error');
//Error handler
});

This table consists of sample values, data types and descriptions for all the fields that need to be filled.

Field nameSample valueData typeDescription
issueTest descriptionStringThe subject/topic/reason why the ticket is created.
phone9870000000StringMobile number of the end user.
email[email protected]StringEmail address of the end user.
nameRajeshStringName of the end user.
genesysCloudCustomFields{customFields: {test: “yes”}}ObjectCustom key:value pairs associated to the end user required to raise a ticket. You need to pass the value of this key as {}, in case no key:pairs are required.

Sample response in case of success


{
"assignedTo": true,
"success": true,
"status": "ASSIGNED",
"ticketInfo": "{{apiresponse}}"
}
note

apiresponse represents the raw response from the genesys cloud create ticket API

Sample response in case of failure


{
"success": false,
"assignedTo": false,
"agentNotAvailable": true,
"message": "TicketId is not created and transferring the control back to the bot",
"ticketInfo": "{{apiresponse}}"
}
note

apiresponse represents the raw response from genesys cloud create ticket API

1.9 Intercom Live Agent

To connect to an Intercom Live Agent, please use this code-snippet

      app.raiseTicketForThirdPartyLiveChat({
issue: "Test Issue",
contact: {
phone: "9870000000",
name: "Raj",
email: "[email protected]"
},
intercomLiveAgentCustomFields: {customFields: {test: “yes”}}
}).then((ticketData) => {
app.log(ticketData, "ticketData");
// Display appropriate message based on the ticketData
}).catch((error) => {
app.log(error, 'error');
//Error handler
});

This table consists of sample values, data types and descriptions for all the fields that need to be filled.

Field nameSample valueData typeDescription
issueTest descriptionStringThe subject/topic/reason why the ticket is created.
phone9870000000StringMobile number of the end user.
email[email protected]StringEmail address of the end user.
nameRajeshStringName of the end user.
intercomLiveAgentCustomFields{customFields: {test: “yes”}}ObjectCustom key:value pairs associated to the end user required to raise a ticket. You need to pass the value of this key as {}, in case no key:pairs are required.

Sample response in case of success


{
"assignedTo": true,
"success": true,
"status": "ASSIGNED",
"ticketInfo": "{{apiresponse}}"
}
note

apiresponse represents the raw response from the intercom create ticket API

Sample response in case of failure

{
"success": false,
"assignedTo": false,
"agentNotAvailable": true,
"message": "TicketId is not created and transferring the control back to the bot",
"ticketInfo": "{{apiresponse}}"
}
note

apiresponse represents the raw response from the intercom create ticket API

1.10 Nice Incontact Live Agent

To connect to a Nice Incontact Live Agent, please use this code-snippet

      app.raiseTicketForThirdPartyLiveChat({
issue: "Test Issue",
contact: {
phone: "9870000000",
name: "Raj",
email: "[email protected]"
}
}).then((ticketData) => {
app.log(ticketData, "ticketData");
// Display appropriate message based on the ticketData
}).catch((error) => {
app.log(error, 'error');
//Error handler
});

This table consists of sample values, data types and descriptions for all the fields that need to be filled.

Field nameSample valueData typeDescription
issueTest descriptionStringThe subject/topic/reason why the ticket is created.
phone9870000000StringMobile number of the end user.
email[email protected]StringEmail address of the end user.
nameRajeshStringName of the end user.

Sample response in case of success

{
"assignedTo": true,
"success": true,
"status": "ASSIGNED",
"ticketInfo": "{{apiresponse}}"
}
note

apiresponse represents the raw response from the nice-incontact create ticket API

Sample response in case of failure

{
"success": false,
"assignedTo": false,
"agentNotAvailable": true,
"message": "TicketId is not created and transferring the control back to the bot",
"ticketInfo": "{{apiresponse}}"
}
apiresponse represents the raw response from the nice-incontact create ticket API

1.11 Talishma Live Agent

      To connect to a Talishma Live Agent, please use this code-snippet

app.raiseTicketForThirdPartyLiveChat({
issue: "Test Issue",
contact: {
phone: "9870000000",
name: "Raj",
email: "[email protected]"
}
}).then((ticketData) => {
app.log(ticketData, "ticketData");
// Display appropriate message based on the ticketData
}).catch((error) => {
app.log(error, 'error');
//Error handler
});

This table consists of sample values, data types and descriptions for all the fields that need to be filled.

Field nameSample valueData typeDescription
issueTest descriptionStringThe subject/topic/reason why the ticket is created.
phone9870000000StringMobile number of the end user.
email[email protected]StringEmail address of the end user.
nameRajeshStringName of the end user.

Sample response in case of success

{
"assignedTo": true,
"success": true,
"status": "ASSIGNED",
"ticketInfo": "{{apiresponse}}"
}
note

apiresponse represents the raw response from the talishma create ticket API

Sample response in case of failure

{
"success": false,
"assignedTo": false,
"agentNotAvailable": true,
"message": "TicketId is not created and transferring the control back to the bot",
"ticketInfo": "{{apiresponse}}"
}
note

apiresponse represents the raw response from the talishma create ticket API

1.12 Salesforce Live Agent


app.raiseTicketForThirdPartyLiveChat({
issue: "Test Issue",
contact: {
phone: "9870000000",
name: "Raj",
email: "[email protected]"
},
salesforceLiveChatCustomFields: [],
salesforceLiveChatCustomEntities: [],
salesforceLiveChatAgentId: "",
salesforceLiveChatAgentAssignedMessage: "",
salesforceLiveChatVisitorLanguage: "English",
salesforceLiveChatQueuePositionMessage: "",
salesforceLiveChatUpdatedQueuePositionMessage: "",
salesforceLiveChatAgentTransferredMessage: "",
salesforceLiveChatEstimatedWaitTimeMessage: "",
salesforceLiveChatDisplayAgentName: true,
salesforceLiveChatIdleTimeWarningMessage: “”,
salesforceLiveChatIdleTimeTimeoutMessage: “”,
salesforceLiveChatConnectionFailureMessage: “”,
salesforceLiveChatAgentDisconnectMessage: “”,
salesforceLiveChatAgentTimeoutMessage: “”
}).then((ticketData) => {
app.log(ticketData, "ticketData");
// Display appropriate message based on the ticketData
}).catch((error) => {
app.log(error, 'error');
//Error handler
});
Field nameSample valueData typeDescription
issueTest descriptionStringThe subject, topic, and reason for creating the ticket.
phone9870000000StringMobile number of the user.
email[email protected]StringEmail address of the user.
nameRajeshStringName of the user.
salesforceLiveChatCustomFields[
{
    "label": "Mobile",
    "value": "9999444443",
    "entityMaps": [
        {
            "entityName": "contact",
            "fieldName": "Mobile_Number__c"
        }
    ],
    "transcriptFields": [
        "Mobile_Number__c"
    ],
    "displayToAgent": true
},

{
    "label": "Chat",
    "value": "sessionURL",
    "entityMaps": [
        {
            "entityName": "case",
            "fieldName": "chat_transcript__c"
        }
    ],
    "transcriptFields": [
        "chat_transcript__c"
    ],
    "displayToAgent": true
}
]
ArrayThe details provided by the user before initiating the chat.
salesforceLiveChatCustomEntities[
{
    "entityName":"Contact",
    "saveToTranscript":"contact",
    "linkToEntityName":"Case",
    "linkToEntityField":"ContactId",
    "entityFieldsMaps":
    [
        {
            "fieldName":"LastName",
            "label":"LastName",
            "doFind":true,
            "isExactMatch":true,
            "doCreate":true
        },
        {
            "fieldName":"FirstName",
            "label":"FirstName",
            "doFind":true,
            "isExactMatch":true,
            "doCreate":true
        },
        {
            "fieldName":"Email",
            "label":"Email",
            "doFind":true,
            "isExactMatch":true,
            "doCreate":true
        }
    
ArrayThe records are created or searched based on the enabled EntityFieldsMaps.
salesforceLiveChatAgentId0055g00000HEbLDStringThe agentId required to enable the sticky agent feature.
salesforceLiveChatAgentAssignedMessageYou are now connected to {liveAgent}.StringThe message that will be displayed to the user after an agent has been assigned. Use the dynamic parameter{liveAgent} to display the name of the agent.
salesforceLiveChatVisitorLanguageEnglishStringLanguage preferred by the user to chat with the live agent.
salesforceLiveChatQueuePositionMessageYour queue position is {position}StringThe message that will be displayed to the user when the ticket is in queue. Use the dynamic parameter {position} to display the queue position numerically in the message.
salesforceLiveChatUpdatedQueuePositionMessageYour current queue position is {position}StringThe message that will be displayed to the user when the queue position changes. Use the dynamic parameter{position} to display the position.
salesforceLiveChatAgentTransferredMessageYour chat has been transferred to {liveAgent}StringThe message that will be displayed to the user when the chat gets transferred from one agent to another. Use the dynamic parameter {liveAgent} to display the name of the agent.
salesforceLiveChatEstimatedWaitTimeMessageThe estimated wait time for the chat to get assigned is {waitTime} secondsStringThe message that will be shown to the user to notify them of the time they should expect to wait before an agent is assigned. Use the dynamic parameter {waitTime} to display the wait time.
salesforceLiveChatDisplayAgentNametrueBooleanEnable this flag to display the name of the chat agent when they get assigned.
salesforceLiveChatIdleTimeWarningMessageIdle warning messageStringThe message that will be displayed when there's user inactivity.
salesforceLiveChatIdleTimeTimeoutMessageIdle timeout messageStringThe message that will be displayed when the live chat terminates due to user inactivity after a specified period.
salesforceLiveChatConnectionFailureMessageConnection failureStringThe message that will be displayed to the user when there is a failure in connecting with the live agent.
salesforceLiveChatAgentDisconnectMessageAgent has disconnectedStringThe message that will be displayed to the user when their agent disconnects the chat. (This message will be displayed only if there are other active agents with the capacity to take new chats, otherwise, the message configured in the field salesforceLiveChatConnectionFailureMessage will be displayed).
salesforceLiveChatAgentTimeoutMessageAgent timeout occurredStringThe message that will be displayed to the user when the Agent Timeout value has surpassed.

Sample response in case of success:

{
"assignedTo": true,
"success": true,
"status": "ASSIGNED",
"ticketInfo": "{{apiresponse}}"
}
note

apiresponse represents the raw response from the salesforce create ticket API

Sample response in case of failure:

{
"success": false,
"assignedTo": false,
"agentNotAvailable": true,
"message": "TicketId is not created and transferring the control back to the bot",
"ticketInfo": "{{apiresponse}}"
}

note

apiresponse represents the raw response from the salesforce create ticket API

2. Configuration

You can configure any of the above mentioned live agent integration(s) by following these steps:-

To enable the integration in the yellow.ai Integrations Module,

  1. Login to app.yellow.ai, search for your bot in the Search Projects section and then click the bot.
drawing
  1. Click the Growth icon on the left navigation bar.
drawing
  1. Click Data Explorer. You will be redirected to the cloud.yellow.ai’s UI.
drawing
  1. On the top left corner, click the drop-down and choose Integrations.
drawing
  1. Configure the required live chat integration
drawing
  1. .After entering the required values, click Connect and the integration will get enabled on yellow.ai.