UUI Data on Communicate Call

Hi,

I am testing some scenarios with UUI data. I am running into a use case that I wanted some guidance on.. I am placing an outbound call as a businses user and would like to add UUI data on this outbound call programatically. I noticed that the API to add UUI data to the call is the following, with a specific Communication ID..

PUT /api/v2/conversations/calls/{conversationId}/participants/{participantsId}/communications/{communicationId}/uuidata

However, when I'm looking at the call structure for an outbound business user call.. I don't see any call Segments, there for I have no .

{
"entities": [
{
"id": "756f8d64-e205-4d32-a895-7f3db2138349",
"participants": [
{
"id": "e2246c9c-88fa-43f7-81d6-9b1b0462d06e",
"address": "sip:6011c58d3ad3b31c4ef826a7+xxxxx.orgspan.com@localhost",
"startTime": "2022-08-11T14:10:53.775Z",
"connectedTime": "2022-08-11T14:10:58.213Z",
"purpose": "user",
"state": "connected",
"direction": "outbound",
"held": false,
"wrapupRequired": false,
"user": {
"id": "db85e45b-bfff-400e-9f4b-92e868654391",
"selfUri": "/api/v2/users/db85e45b-bfff-400e-9f4b-92e868654391"
},
"attributes": {},
"provider": "Edge",
"muted": true,
"confined": false,
"recording": false,
"recordingState": "none",
"ani": "sip:6011c58d3ad3b31c4ef826a7+xxxxx.orgspan.com@localhost",
"dnis": "tel:+1952210xxxx"
},
{
"id": "e47c001f-58bd-425f-a962-0d9d3bde7faf",
"name": "Twin Cities MN",
"address": "tel:+1952210xxxx",
"startTime": "2022-08-11T14:10:54.778Z",
"connectedTime": "2022-08-11T14:10:58.210Z",
"purpose": "external",
"state": "connected",
"direction": "outbound",
"held": false,
"wrapupRequired": false,
"attributes": {},
"provider": "Edge",
"externalContact": {
"id": "7bce3de3-f152-4f49-9bb8-870abd75378b",
"selfUri": "/api/v2/externalcontacts/contacts/7bce3de3-f152-4f49-9bb8-870abd75378b"
},
"externalOrganization": {
"id": "b4d3697d-988b-4c3c-8e7d-1ac3cee9b549",
"selfUri": "/api/v2/externalcontacts/organizations/b4d3697d-988b-4c3c-8e7d-1ac3cee9b549"
},
"peer": "58d50130-ac25-4d28-a33a-21b9f1cdff29",
"muted": false,
"confined": false,
"recording": true,
"recordingState": "active",
"ani": "sip:3120@10.87.4.134;user=phone",
"dnis": "tel:+1952210xxxx"
}
],
"otherMediaUris": [],
"recordingState": "active",
"selfUri": "/api/v2/conversations/calls/756f8d64-e205-4d32-a895-7f3db2138349"
}
],
"pageSize": 1,
"pageNumber": 1,
"total": 1,
"firstUri": "/api/v2/conversations/calls?pageSize=1&pageNumber=1",
"selfUri": "/api/v2/conversations/calls?pageSize=1&pageNumber=1",
"lastUri": "/api/v2/conversations/calls?pageSize=1&pageNumber=1",
"pageCount": 1
}

Is it possible to add UUI data to a business user call? If so, what should be the Communication
ID?

Hi @78692638d4a24645fbf5
Review this post for an explanation of the communicationId and where to find it

Also you might consider redacting the phone number info in the original post, if any of those numbers are sensitive. Up to you, though.

Thanks, that did the trick.

Do you have any information if I can use the platform API to add UUI data to an IVR call before it transfers out of the platform? /api/v2/conversations/calls/{conversationId}/participants/{participantId}/communications/{communicationId}/uuidata

I'm using this endpoint right now with with the flow participant's active call session, but when i transfer it to another Genesys Cloud organization, the uui data does not seem to come into the second org. My overall goal is to be able to utilize EventBridge, in tandem with a few Lambda functions to pass a "tracking" ID via UUI data between Genesys Cloud environments. What I hope to do is:

  1. use the v2.detail.events.conversation.{id}.flow.start Topic
  2. Retrieve the convo ID, Participant ID and Session ID
  3. Use the GET /api/v2/conversations/{conversationId} to retrieve UUI Data
  4. Use the PUT api/v2/conversations/calls/{conversationId}/participants/{participantId}/communications/{communicationId}/uuidata to add outbound UUI Data onto the flow participant.

The reason I want to do this from the Eventbridge / Lambda layer is because for direct business user calls, we are going to need that layer anyways, so it makes sense to have the UUI mechanism at the same level.

Can you provide some details about how exactly you're doing the transfer? My guess is that the voice call on which you're setting the UUI data and the outgoing voice call that's being used for the transfer aren't the same call.

I don't know what the issue is at this point, but you could try using the Set UUI Data architect action to set the data and then do the transfer via architect. You can then inspect the conversation's data after the fact to see how it lines up with what you're doing. There's also some info in that article about ensuring UUI data is enabled. Also consider that all parties handling the call in between systems (i.e. any gateways you own and telcos involved) must also support passing UUI data.

Hi Tim,

I guess at the heart of my question is 1 main thing:

*Adding UUI data to live IVR Call
Can I use the the UUI Data API to add outbound UUI Data to an active IVR call? I know we have the toolsteps in Architect, I'm just wondering if it's possible programatically.

PUT /api/v2/conversations/calls/{conversationId}/participants/{participantsId}/communications/{communicationId}/uuidata endpoint,
with the flow's participant ID as the participantId and the flow's connected call session as the Communication ID,

  "id": "**98323620-d73e-4d6f-9358-1228bf3ab306**",
  "startTime": "2022-08-17T16:39:06.540Z",
  "endTime": "2022-08-17T16:40:23.180Z",
  "connectedTime": "2022-08-17T16:39:06.605Z",
  "name": "redacted",
  "purpose": "ivr",
  "participantType": "IVR",
  "address": "sip:79b9cf87-f673-456a-b07e-7c1876f1fc34@127.0.0.1;language=en-US;user=ivr",
  "ani": "tel:8851",
  "aniName": "Peter Redacted",
  "dnis": "sip:79b9cf87-f673-456a-b07e-7c1876f1fc34@127.0.0.1;language=en-US;user=ivr",
  "wrapupRequired": false,
  "attributes": {},
  "calls": [
    {
      "state": "connected",
      "id": "**110aa6b7-b6a5-4594-be34-13da08cb4813"**

I haven't been able to do this, but perhaps I am using an incorrect value somewhere.

Thanks for your help!

Hello,

No, I don't think you can do this via API while the call is under IVR/architect control.
As far as I know, you will have to use the "Set UUI Data" and the "Transfer to Number" actions in your Architect flow.

I had done few tests a couple of years ago. I haven't checked recently but the following is probably still accurate.

The PUT /api/v2/conversations/calls/{conversationId}/participants/{participantsId}/communications/{communicationId}/uuidata endpoint requires a user context (auth context/token).
If you try to invoke it using a token obtained from an OAuth Client Credentials Grant flow, the request will be rejected.
Therefore you will not be able to invoke that endpoint from your backend (assuming it would leverage an OAuth Client with Client Credentials Grant type) or using a Genesys Cloud Data Action.

Second thing is that when you use a "Set UUI Data" action in your Architect flow, it doesn't translate into an immediate API request to set UUI data on the call/conversation.
The UUI data defined in the "Set UUI Data" block is in fact buffered by Architect and managed at the end of the flow (when processing the Architect Transfer or Disconnect blocks).
That's why you also have to use the "Transfer to Number" action to trigger that transfer.
If you invoke the transfer via Platform API (participant replace), the UUI Data will not be set on the outbound leg.

Regards,

This topic was automatically closed 31 days after the last reply. New replies are no longer allowed.