1. Business Requirements
1.1 Business goal/user stories
- Each member has one specific navigator (essentially an agent/advocate).
- Members can message a specific navigator to which they are assigned.
- When a specific member messages, they will be routed to the specific navigator assigned to them.
- The designation/mapping between member and navigator will happen based on “plan type.”
- Each navigator can have hundreds of members assigned to them.
- All DSNP conversations will be associated with the same DSNP skill.
2. High-Level Requirements
2.1 Bot requirements provided by the brand
- Need a separate interaction if the LivePerson Agent is not logged in vs. away/at capacity.
- If away/at capacity, present the options to wait or go to the skill queue.
- If Not logged in, send a separate message (Your navigator is not available for chat this time, we are connecting you to the first available navigator.) and send it directly to the skill queue.
- If the visitor does not choose an option but types something instead, prompt to choose an option one time only. On the second text entry, route to the skill queue.
- The brand is comfortable that the LivePerson Agent availability may not be relevant if the visitor sits on the choice for a while.
2.2 Bot Flow diagram
3. ETS Solution Overview
3.1 Bot flow
- DSNP Customer starts the authenticated conversation from Mobile Engagement.
- Conversation Builder Bot assigns to the conversation and pulls the Agent Username from the Personal Info: Company SDE field.
- Conversation Builder Bot retrieves the agent mapping object from the Conversation Context Service to get the LivePerson Agent ID.
- Conversation Builder Bot retrieves the Agent status and Agent load from the Key Messaging Metrics API with Agent View Method.
- IF Agent IS available and HAS a capacity: Conversation Builder Bot transfer the conversation to the Agent by Agent ID.
(Connecting you to your Navigator). - IF Agent NOT available: Conversation Builder Bot transfer the conversation to the general DNSP skill.
(Connecting you with a navigator). - IF Agent IS AWAY or AT max capacity: Conversation Builder Bot gave two options for the consumer:
(Thank you for messaging us. Your assigned Navigator is currently assisting another member. Would you like to message your Navigator and they will get to you as soon as they are available, or would you like to speak with someone now?).- A) Wait for Navigator: Conversation Builder Bot transfer the conversation to the Agent by Agent ID.
- B) Get Help Now: Conversation Builder Bot transfer conversation to the general DNSP skill.
3.2 Store Agent Username to the Auth SDEs
The assigned Navigator Username should be passed and maintained by the brand's team into the customer id_token claims as a part of the LivePerson SDEs.
3.3 Agent IDs mapping Object
The brand's team will maintain the Agent mapping object in the dedicated Conversation Context Service namespace.
3.4 LiveEngage required configuration
Skill level configuration should be updated on the “Edit Skill” for the general DNSP skill page under the “Transfer to agent (messaging)” section.
(Account level configuration: 2 hours. Can be adjusted later on the skill level).
4. ETS Solution Details
4.1 Customer SDE Attributes to store the Agent Username
javascript:
const sdeType = 'personalInfo';
const sdeKey = 'company';
4.2 Key Messaging Metris / Agent View method
Request Parameters to should include the following filters:
javascript:
{
"filters": {
"time": {
"from": 1666361651000, // current time in milliseconds - 1 minute
"to": 1666361651000 // current time in milliseconds
},
"userTypes": [
"HUMAN"
],
"agentIds": [
"123456789" // LivePerson Agent ID
]
},
"includeAgentMetadata": "false",
"metricsToRetrieveCurrentValue": [
"agent_load",
"active_conversations",
"assigned_conversations",
"agent_current_status",
"agent_current_status_start_time",
"agent_current_status_reason",
"agent_current_status_reason_start_time"
]
}
Response example:
javascript:
{
"metadata": {
"count": 1,
"self": {
"rel": "self",
"href": "https://va.agentmng.liveperson.net/manager_workspace/api/account/1234567/agent_view?offset=0&limit=50"
}
},
"agentViewRecords": [
{
"agentId": "123456789",
"agentCurrentStatus": "AWAY", // Current Agent Status
"agentCurrentStatusStartTime": 1666361509200, // The start time of the current status as timestamp. Can be used for duration calculation.
"agentCurrentStatusReasonId": "-1",
"agentCurrentStatusReasonStartTime": 1666361509200,
"activeConversations": 0, // The current active conversations of the agent
"agentLoad": 0.0 // The current load of the agent, including bot agents
}
]
}
Important note: If this API is used inside the Conversation Builder integration dialog with Bot Bearer authorization, the bot user must have Agent Manager permissions. Otherwise, the API can be called from the FaaS function using a dedicated Auth1.0 key with appropriate permissions to the Key Messaging Metrics API.
4.3 Configure the wait time for transfer to the Agent use-case
4.4 Conversation Context Namespace for storing the Agent mapping object
javascript:
const namespace = "brand_dnsp_agent_data";
4.5 Conversation Cloud Account Configuration
- Staging
- DSNP Campaign Name: DSNP Mobile
- DSNP Engagement Name: DSNP Android and DSNP iOS
- DSNP Engagement Skill (Bot skill): dsnp-routing-skill
- DSNP General queue (Human skill): dsnp
- Production
- DSNP Campaign Name: DSNP Mobile
- DSNP Engagement Name: DSNP iOS and DSNP Android
- DSNP Engagement Skill (Bot skill): dsnp-routing-skill
- DSNP General queue (Human skill): dsnp
Consumer waiting in queue for > 10 minutes use case is out of scope for the initial release. This logic will require the additional event-based LivePerson FaaS function
If Navigator is on Break or Lunch, we want to show the navigator as completely unavailable instead of letting the consumer wait.