Random Unauthorized Error On Disposition

Problem:
We are seeing the following error occur about 6-10 times per hour in our call center

Error:

Error calling PatchConversationParticipant: {"message":"Failed to update properties on conversation participant.","code":"conversation.participant.update.invalid","status":400,"details":[],"errors":[{"message":"Access to Conversation {id} is forbidden.","code":"not.authorized","status":403,"details":[{"fieldName":"wrapup"}]}]}

We are seeing a lot of unauthorized messages, but for now, I am going to focus on this one since it is occurring the most.

Here is the basic flow of events that occurs:

First, we need to get the wrap-up codes

  1. API to get call conversation by passing conversation id
  2. In the conversation we find the participant by userid, purpose = "agent" and the last participant in the list by date/time
  3. Then we get the wrapup codes by conversation id and participant id

The above works fine. Below is where the problem occurs

Disposition the call

  1. First, we perform the same steps above to verify that the conversation id, participant id, and wrapup id are valid. This works fine; no errors
  2. Then it calls to patch the conversation to set the deposition code
    Randomly we get the error listed above when this happens.

When this happens, the agents submit the disposition a 2nd time and it's successful.

Here's what I verified

  • Conversation ID, Participant ID, and Auth header are the same throughout the entire lifetime of that conversation id
  • Auth header has not expired.
  • Wrapup code doesn't change

Here's my theory: When we are under a heavy load (because this didn't happen during our pilot testing) there is some sort of delay where maybe information isn't getting replicated fast enough on the Genesys side.. Why else would the agent get unauthorized on a dispo and then a couple of seconds later the dispo saves no problem?

Please help!

Here's what I am seeing in the logs if this helps

Hello,

I would recommend to open a ticket with Genesys Cloud Customer Care so Technical Support can investigate.
They will be able to check your data & the cloud side logs (API requests) to see what could have caused such rejects.
We can't investigate customer data on the forum (we don't have access to it).

Something they will ask, if you can retrieve them and can provide them in your ticket, are the values sent back in the ININ-Correlation-Id header (HTTP Response) of these failed requests. This will help Support track down your failed API requests.
As you seem to use the .Net SDK, you can enable SDK Logging to include the HTTP Response headers (LogLevel.LTrace or LogLevel.LError).

Regards,

1 Like

Thank you, Jerome, for pointing me in the right direction..

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