Business Objectives:
The aim of this solution document is to tackle the issue of inactive conversations lingering in the queue awaiting closure. Implementing a queue clean-up solution is vital to ensure a smoother and more effective experience for all stakeholders.
When conversations remain in the queue for extended periods, consumers may lose interest and become inactive. This can result in prolonged queue times and decreased agent efficiency. The proposed solution directly addresses this concern.
Key Requirements:
- Inactive, unassigned conversations in the queue lead to consumer inactivity.
- These inactive consumers extend queue wait times and diminish agent productivity by consuming agent capacity and time.
- Promptly addressing unassigned conversations is crucial to mitigate future negative impacts on both consumers and human agents.
Pros | Cons |
---|
The productized solution is backed by LP support. | The current implementation of consumer response to wake-up messages lacks support for NLU and relies on Regex matching for 'yes' or 'no'. |
It offers a simpler, more stable solution with fewer points of failure. |
|
Consumers remain in FIFO order in the queue, ensuring accurate wait time-related metrics. |
|
Conversations are immediately closed, enhancing efficiency. |
|
Pre-Launch Activities
1. Your brands production account identification number.
2. Create a bot user with the login Name: “QueueCleanBot”.
For reporting through MI API: Add two additional Users.
Repeat the steps listed above to create your user. Ensure that you use the below login names.
- QueueCleanBotConsumerNegativeResponse
- QueueCleanBotConsumerNoResponse
3. Ensure that the backend site settings are set as follows:
Conversation.hooks.max.ws.clients.per.brand -
5
Conversation.hooks.brand.queue.clean.up.dont.rout.inactive.conversations.enabled -
true
4. Ensure that Conversation Context Service (CCS) v2 is enabled on your brands LivePerson Account. Contact the Orchestrator channel on Slack to enable this on the brands account if not enabled already.
5. Ensure that async-messaging.cqrs.include-metadata-in-content-events.enabled
is enabled on the shard of which the account is. Contact the Unified Messaging Services (UMS) team to enable this if not enabled.
6. Prepare a list of skills (if any) that need to be enabled for the QCU solution. You can obtain the list from your brand.
Skill Description | Skill Id | Skill Name |
---|
|
|
|
Set default config under Conversation orchestrator with verbiage for each, examples are listed below as well as in the Configuration section.
1. Default Configuration: queue_clean_up_brand_config
- Use this configuration for a general setup that applies to all skills by default.
- Set
enabledForAllSkills
to true
to enable for all skills. - Set
enabledForAllSkills
to false
to enable it for specific skills.
2. Skill-Specific Configuration (queue_clean_up_skill_config_{skillname})
- Use these configurations to customize Conversation Cleanup settings for individual skills.
- Replace
{skillname}
with the actual name of your skill. - Each skill configuration requires setting the
skillId
and any desired message overrides.
For detailed instruction on setting up each configuration option, see here.
Launch Day Activities
1. Enable Backend Configuration
- Set the
LP "conversation.hooks.brand.queue.clean.up.enable"
configuration to true
.
2. Stop Custom Queue Clean-Up (QCU)
- Disable the automatic messages for the Custom QCU solution for:
- Customer Non-responsive
- Agent Non-responsive
- Waiting in Queue
- <Skills List>
3. Adjust Idle Functions as a Service (FaaS) & Messaging Routing FaaS
- Adjust the configurations for Custom QCU as necessary.
4. Disable the Bot "Agent Connectors"
- Stop the "Agent Connectors" bot for Custom QCU. (Pending)
5. Update CCS Variables and Policies
- Disable the "QCModeForceOff/QCModeForceOn" variables and related policy rules accordingly in CCS. (Pending)
- Rearrange the order of policies.
- Set the
QCModeForceOn
variable to false
and the QCModeForceOff
variable to true
in custom variables, effectively turning off Custom QC.
Steps After Successful Launch
1. Undeploy FaaS
- QC_ConversationEnd
- QC_RefreshCCSToken
- QC_ParticipantChange
2. Remove Agent Connector
- Remove the Agent Connector for the Clean Queue Bot (QCU) bot user.
Rollback Guide
1. Restart Custom QCU
2. Enable Automatic Messages for Custom QCU Solution
- Enable the automatic messages for the following scenarios:
- Customer Non-responsive
- Agent Non-responsive
- Waiting in Queue
- <Skills List>
3. Adjust Idle Functions as a Service (FaaS) & Messaging Routing FaaS
- Adjust the configurations for Custom QCU as necessary.
4. Start Bot Connectors for Custom QCU
- Start the bot connectors for Custom QCU.
5. Enable Variables in Conversation Orchestrator
- Enable the “QCModeForceOff/QCModeForceOn” variable accordingly.
6. Disable Backend Configuration
- Disable the backend configuration by setting
LP "conversation.hooks.brand.queue.clean.up.enable"
to false
.
Plan to Launch Productized QCU
1. Queue Clean Up
Conversation.hooks.brand.auto.unassign.config
<prod_account_id> - Prod - enabled
<dev_account_id> - Dev - Disabled
2. Set Default Configuration Under Conversation Orchestrator
- Queue_clean_up_brand_config (Brand to provide values below for default/per_skill and ETS to implement):
{
"enabledForAllSkills": "true", // true / false
"queueCleanUpInitialWaitTimeSec": 600,
"queueCleanUpConsumerNotRespondingWaitTimeSec": 120,
"queueCleanUpWakeupSystemMessage": "are you still there ? please answer yes/no",
"queueCleanUpClosingSystemMessage": "This conversation is closed, come back again should you need help",
"queueCleanUpThankYouForWaitingSystemMessage": "Thank you for waiting",
"queueCleanUpSystemResponseToConsumerNonStandardResponse" : "We know its hard for you but please we apreceate to know if you are interested in the service. Please answer the correct reponse",
"queueCleanUpWakeupMessageConsumerPositiveResponse": "(?i)yes", // REGEX for the response for exmple every "yes" response ignore capital letter
"queueCleanUpWakeupMessageConsumerNegativeResponse": "(?i)no", // REGEX for the response for exmple every "no" response ignore capital letter
"queueCleanUpNoResponseRepeatCounter": 1
}
- queue_clean_up_skill_config_{Skill Name} (Brand to provide values below for default/per_skill and ETS to implement)
{
"queueCleanUpInitialWaitTimeSec": 600,
"queueCleanUpConsumerNotRespondingWaitTimeSec": 120,
"queueCleanUpWakeupSystemMessage": "are you still there ? please answer yes/no",
"queueCleanUpClosingSystemMessage": "This conversation is closed, come back again should you need help",
"queueCleanUpThankYouForWaitingSystemMessage": "Thank you for waiting",
"queueCleanUpSystemResponseToConsumerNonStandardResponse" : "We know its hard for you but please we apreceate to know if you are interested in the service. Please answer the correct reponse", // message to be sent to customer
"queueCleanUpWakeupMessageConsumerPositiveResponse": "(?i)yes", // REGEX for the response for exmple every "yes" response ignore capital letter
"queueCleanUpWakeupMessageConsumerNegativeResponse": "(?i)no", // REGEX for the response for exmple every "no" response ignore capital letter
"queueCleanUpNoResponseRepeatCounter": 1,
"skillId": 111501373 // skills list to clean up
}
Once the configuration is added, the feature will apply only on new conversation.
Implementation Plan
Task Description | Duration | Owner | Target Completion Date |
---|
Brand to provide Pre-Req information for queue_clean_up_brand_config_{Skill Name}for Sandbox | X Days |
| N/A |
LP ETS to configure per “Implementation Guide” and QAin Sandbox | 2 Days |
| TBD |
Handover To Brand For QA Execution | X Days |
| TBD |
Brand QA Sign-Off | 12 Days |
| TBD |
Brand to provide Pre-Req information for queue_clean_up_brand_config_{Skill Name}for PROD | X Days |
| TBD |
LP ETS to configure per “Implementation Guide - Pre-Launch Activities” and QAin PROD | 1 Days |
| TBD |
LP ETS to configure per “Implementation Guide - Launch Day Activities”, stop QCU and QA in PROD and LIVE
5 human skills | 1 Days |
| TBD |
Handover To Brand For QA Execution
- Potentially reduce the queue wait time for testing
| 1 Days |
| TBD |
Brand QA Sign-Off in PROD | 2 Days |
| TBD |
Monitor Solution In PROD (use Graphana dashboard) | Ongoing |
|
|
| | | |
Same configs for all skills
Skill Description | Skill Id | Skill Name |
---|
|
|
|
- enabledForAllSkills: true or false - will typically be ‘false’ because Brand only uses QCU for human skills.
- queueCleanUpInitialWaitTimeSec: IWT: The amount of time before the initial QCU message.
- queueCleanUpConsumerNotRespondingWaitTimeSec: The wait time in case of no response from the customer.
- queueCleanUpWakeupSystemMessage: Verbiage sent to the customer when QCU fires.
- queueCleanUpClosingSystemMessage: Verbiage sent to the customer when the conversation is closed (either from a response of ‘no’ from the customer or no reply to the QCU message).
- queueCleanUpThankYouForWaitingSystemMessage: Verbiage sent to the customer after they respond ‘yes’ to the QCU message.
- queueCleanUpSystemResponseToConsumerNonStandardResponse: Verbiage sent to the customer if they reply to the QCU message with an non-standard response. This is used to essentially send different second message.
- queueCleanUpWakeupMessageConsumerPositiveResponse: For all positive responses to be captured this regex will be utilized to evaluate it against the user response
- queueCleanUpWakeupMessageConsumerNegativeResponse: For all negative response to be captured this regex will be utilized to evaluate it against the user response
- queueCleanUpNoResponseRepeatCounter: The number of times you want to send the customer the QCU message if they don’t respond to the QCU message.
Questions & Answers:
- Does this solution enable closing conversations immediately when the consumer selects "No"?
- Yes, this solution allows conversations to be closed immediately upon the consumer choosing "No".
- Can different wake-up messages be sent for non-standard responses that don't match 'yes'/'no' Regex?
- Yes, this solution permits the sending of different follow-up wake-up messages.
- Does this solution transfer non-responsive consumers to human agents after receiving a wake-up message?
- Depending on the brand account configuration, conversations from the queue can be allowed or disallowed to be transferred to human agents. Reach out to the account team for changes.
- Does this solution validate against NLU or pattern matches?
- No, the current version relies on Regex patterns for 'yes'/'no' responses that can be configured.
- Can the brand independently set and adjust configurations?
- Yes, configurations are managed in Conversation Orchestrator under "Custom" variables, empowering the brand to adjust them as needed.
- Is it possible to increase timers during a buildup of wait time in the queue?
- Timers are set in seconds, and increasing timing configurations is possible without impacting the flow or conversations. Users will receive appropriate messages when the conversation hits the new timer, typically taking a few minutes to take effect.
- Can timers be decreased while the queue wait time is decreasing, and does it have any downside impact?
- Yes, timers can be decreased, and in the next evaluation, conversations past the newly decreased timers will receive appropriate messages like the wake-up message. There is no downside impact.
- After sending a "Yes" response to the wake-up message, if the user continues sending messages, does that reset the IWT or wake-up message timer?
- No, user actions or messages do not reset the IWT/wake-up message timer.
Ready to move on to the next capability? Click here to proceed.