This covers integrations with Genesys at the end of a call
0. During the call BOFE pairs interaction ID with customer ID by calling an endpoint in backoffice-manager
1. After the call, Genesys calls dedicated endpoint in backoffice-manager
2. backoffice-manager
fetches missing data via genesys-gateway
3. backoffice-manager
logs the communication into communication-history-manager
0. Pair interaction ID with customer ID
There will be new endpoint
POST backoffice-manager/customers/supportInteraction body: { customerId: UUID (required) interactionId: UUID (required) }
Store both IDs in a table, together with
createdAt
interactionId
should be the primary keyPrepare service to retrieve
customerId
byinteractionId
1. Receive log from Genesys
There is an endpoint to be called by Genesys
POST backoffice-manager/customers/supportResult
The endpoint should be created in
backoffice-manager
Body model:
{ "conversationId": UUID "eventTime": string (timestamp) "direction": string // inbound, outbound "mediaType": string // callback, chat, cobrowse, email, message, screenshare, unknown, video, voice. "ani": string "subject": string (optional) "wrapupCode": UUID "userId": UUID }
2. Fetch missing details
See Genesys gateway
2.1 Fetch agent name
GET https://api.{{environment}}/api/v2/users/{{userId}}
userId
comes fromsupportResult.userId
The resulting model has a string attribute
"name"
2.2 Fetch wrap-up code detail
https://api.{{environment}}/api/v2/routing/wrapupcodes/{{codeId}}
codeId
comes fromsupportResult.wrapupCode
The resulting model has a string attribute
"name"
2.3 Fetch customer ID
In “Support Interaction” table (from 0.) will be a mapping from
interactionId
tocustomerId
As interaction ID use
supportResult.conversationId
confirmed that conversation ID is that same as interaction ID
If missing, use
null
3. Log communication
Use existing endpoint
POST communication-history-manager/communicationRecords
Attribute | Value | Notes |
---|---|---|
direction | If | from 1 |
communicatedAt |
| from 1 |
source |
| constant |
channel | Based on
The missing types should be added to | from 1 |
domain |
| constant |
customerId |
| from 2.3 |
customerHandle |
| from 1 |
interactionId |
| from 1 |
bankUserId |
| constant |
bankUserName |
| from 2.1 |
purpose |
| from 2.2 |
title |
if | from 1 or constant |
body | empty string This could fold the call transcript later. | constant |
Limitations
Given that the Genesys is not able to send customerId into the /supportResult
endpoint, we rely on BOFE for mapping the interaction ID to customer ID. This brings several possible problematic cases:
A communication occurs in Genesys but not in BOFE (customer asks some general info). In this case the communication would be logged but it would not be tracable to the particular customer.
Another example of the above is customer sending an email to Call center, or call center sending emails back - how will those get mapped to customer ID?
If during one communication session in Genesys the agent will access pages for more customer (because the caller can verify for them), only the last one will be paired with that communication.
How to mitigate these and whether they are big issues or not should be discussed with Zbyněk Melichar (Unlicensed)
Attachments:
plantuml_1669029545006.svg (image/svg+xml)
plantuml_1669029545006.png (image/png)
plantuml_1669029545006 (text/plain)
plantuml_1669029545006.svg (image/svg+xml)
plantuml_1669029545006.png (image/png)
image-20221201-170030.png (image/png)