What I am doing for now is I've added a loop to the disclosure call flow that uses a data action to query the current conversation/call looking for the status of "Confined" and if confined, I play a prompt/message asking the agent to place themselves on mute, then to resume the customer (in the agent script UI). I added in some dead air time to slow down the loop to give the agent some time to click through their UI. If they don't do it, it checks again and nags them. The customer hears on hold music. Once the customer is out of confinement, the call flow continues with playing the disclosure. It's clunky, but it meets the minimum requirement for this request. I am looking forward to a script action or a flow data action that can be invoked to start a conference with the disclosure, but it should be a scripter action to work the cleanest.
The Data Action to query the Conversation is as follows: (hope it helps others down the line as it was not straight forward to create, at all)
REQUEST:
{
"requestUrlTemplate": "/api/v2/conversations/${input.CONVERSATIONID}",
"requestType": "GET",
"headers": {
"Content-Type": "application/json; charset=UTF-8"
},
"requestTemplate": "${input.rawRequest}"
}
RESPONSE:
{
"translationMap": {
"customerAttributes": "$.participants[?(@.purpose =='customer')]"
},
"translationMapDefaults": {},
"successTemplate": "${successTemplateUtils.firstFromArray(\"${customerAttributes}\")}"
}
INPUT CONTRACT:
{
"title": "ConversationRequest",
"type": "object",
"required": [
"CONVERSATIONID"
],
"properties": {
"CONVERSATIONID": {
"default": "your guid here",
"type": "string"
}
},
"additionalProperties": true
}
OUTPUT CONTRACT:
{
"title": "CustAttr",
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"address": {
"type": "string"
},
"purpose": {
"type": "string"
},
"held": {
"type": "boolean"
},
"muted": {
"type": "boolean"
},
"confined": {
"type": "boolean"
},
"recording": {
"type": "boolean"
},
"startTime": {
"type": "string"
},
"endTime": {
"type": "string"
},
"connectedTime": {
"type": "string"
},
"ani": {
"type": "string"
},
"dnis": {
"type": "string"
},
"wrapupRequired": {
"type": "boolean"
}
},
"additionalProperties": true
}
------------------------------
Ryan Cheesman
Senior Manager, IT Integration Services
Tandem Diabetes Care Inc. | positively different
------------------------------
Original Message:
Sent: 01-06-2023 10:26
From: Daniel Ho
Subject: Playing a pre-recorded disclosure message during an interaction.
Rather than consult transfer, it is probably better to leverage the upcoming ACD conference instead (currently in beta), if you need the customer being able to listen to the disclosure audio right off the bat.
------------------------------
Daniel Ho
Product Line Manager – Recording and Quality Management, Genesys Cloud
Workforce Engagement Management (WEM)
Original Message:
Sent: 01-05-2023 13:48
From: Ryan Cheesman
Subject: Playing a pre-recorded disclosure message during an interaction.
Any luck with this David? I've gone into the deep end on this one myself and am stuck. I setup up an agent script with a consult transfer button that goes to an inbound flow, that invokes a bot flow to read the disclosure, then listen for the customer to accept / say yes. then when the script terminates, the caller is merged back to the agent.
The problem is that a consult transfer places the customer on hold and the agent hears the disclosure. I need to flip that around, or at least to turn the consult into a conference so that hey both hear the messaging and responses. I started down the path of looking at the conversation API and am struggling with the Output Contract. In API explorer I have had partial success in forcing a live call/"customer" off hold, but most of the time it responds with 200 but does nothing. I read that changing a live call is not allowed. Not sure how this can actually be accomplished.
I've called into other IVR's and have been played disclosures before and can't imagine that people aren't doing them in Genesys.
My requirements require us to save the call recording that includes the customer stating their full name (which is a separate challenge), the disclosure itself, then a verbal approval / yes response from the customer. The recording needs to be saved for 5 years (another challenge to treat these calls seperately from others into the same queue).
Would love to hear from anyone who's had luck with this type of requirement.
I found the following API that can change the consult direction, or to have both, but I cannot seem to get the partcipantId out of the conversation API to input it into this one, I need to figure out the output contract for the conversation or converstation/call API:
api/v2/conversations/calls/{conversationId}/participants/{participantId}/consult
UPDATE:
Found the following helpful post: Display participant Attributes in the Script - Genesys Cloud Applications / Architect - Genesys Cloud Developer Forum - Thank you yuezhong!
Was able to use it to build my Output contract and more importantly, setup the Response to filter and get the partcipantId. Now that I can get this part, I can use it to feed into the consult API to see if I can make this whole process work.
Get Conversation Customer ParticipantId by ConversationId
INPUT CONTRACT:
{
"title": "ConversationRequest",
"type": "object",
"required": [
"CONVERSATIONID"
],
"properties": {
"CONVERSATIONID": {
"type": "string"
}
},
"additionalProperties": true
}
OUTPUT CONTRACT:
{
"title": "CustAttr",
"type": "object",
"properties": {
"id": {
"type": "string"
}
},
"additionalProperties": true
}
REQUEST:
{
"requestUrlTemplate": "/api/v2/conversations/${input.CONVERSATIONID}",
"requestType": "GET",
"headers": {
"Content-Type": "application/json; charset=UTF-8"
},
"requestTemplate": "${input.rawRequest}"
}
RESPONSE:
{
"translationMap": {
"customerAttributes": "$.participants[?(@.purpose =='customer')]"
},
"translationMapDefaults": {},
"successTemplate": "${successTemplateUtils.firstFromArray(\"${customerAttributes}\")}"
}
I'll respond with a new message once I round out this solution and get the consult API Data Action working.
------------------------------
Ryan Cheesman
Senior Manager, IT Integration Services
Tandem Diabetes Care Inc. | positively different
Original Message:
Sent: 06-07-2022 13:21
From: David Mitchell
Subject: Playing a pre-recorded disclosure message during an interaction.
Hey everyone!
Not sure if this has been discussed previously but my organization is looking for an option to play a pre-recorded message on a call. To give a little background we have a couple of different disclosures that we have to state verbatim based on different paths during a call with our consumer base. Is there any way to have these disclosures pre-recorded and implement a button to play a prerecorded message on the line with the caller and have them provide acknowledgment via key press?
#Unsure/Other
------------------------------
David Mitchell
Security Service Federal Credit Union
------------------------------