We are building a custom agent desktop widget in .NET using the Embeddable Client App SDK. The goal is to push real-time data from our internal CRM into the Genesys Cloud conversation context. Specifically, we want to update the participant’s external attributes while the voice call is live.
We are using the ConversationsApi from the Genesys Cloud .NET SDK. The code looks like this:
var body = new ConversationParticipantPatchRequest
{
ExternalAttributes = new Dictionary<string, object>
{
{ "crm_case_id", "CASE-998877" },
{ "priority_level", "high" }
}
};
try
{
var result = await _conversationsApi.PatchConversationParticipantAsync(conversationId, participantId, body);
// handle success
}
catch (ApiException ex)
{
Console.WriteLine($"Error {ex.ErrorCode}: {ex.Message}");
}
The endpoint is PATCH /api/v2/conversations/calls/{conversationId}/participants/{participantId}.
When we run this, we get a 400 Bad Request. The error message in the response body is vague. It just says “Invalid input”. We have verified that the conversationId and participantId are correct because we are reading them from the onParticipantUpdate event in the SDK.
Is it not possible to write to external attributes on a live voice call participant? Or is there a specific format required for the ConversationParticipantPatchRequest that we are missing? The documentation for this endpoint is pretty thin on examples for voice calls. We tried sending just one attribute at a time but it fails the same way.
We need to know if this is a limitation of the API for voice media or if our payload structure is wrong.