We’re trying to update custom attributes on a webchat participant mid-session from a Node.js backend. Our service receives a conversation.participant.added event, runs enrichment logic, and then attempts to patch the participant attributes back to Genesys.
Using the JS SDK patchParticipant method. We’re pulling the if-match header value from the event’s entity.version field, but the request keeps failing with a 409.
await genesyscloud.conversations.patchParticipant({
conversationId: event.entity.id,
participantId: event.participantId,
body: {
attributes: {
...event.entity.attributes,
'enrichmentStatus': 'complete',
'riskFlag': true
}
},
headers: {
'if-match': event.entity.version.toString()
}
});
Error response:
{
"code": "concurrentModification",
"message": "Participant update failed due to concurrent modification",
"status": 409
}
It looks like the revision number is incrementing between the event emission and our PATCH call. Maybe internal system updates are bumping the version. We’ve tried adding a delay, but that just makes the race condition unpredictable. The ETag from the webhook payload seems to be stale immediately. Don’t see a way to bypass the ETag check for attribute updates. The revision bump happens too fast. ETag strategy isn’t working.