Set Participant Data action not persisting custom variables in IVR flow

Stumbled on a weird bug today with…

  • I’m building a Laravel app that interacts with Genesys Cloud via the REST API, and I’m trying to pass custom variables through an IVR flow using the Set Participant Data action.
  • My current approach involves making a PUT request to /api/v2/interactions/participants/{participantId} with a JSON payload containing the custom data I want to set.
  • Here’s the relevant part of my Guzzle code:
$client->put("interactions/participants/{$participantId}", [
 'json' => [
 'participantData' => [
 'custom' => [
 'order_id' => '12345',
 'customer_type' => 'premium'
 ]
 ]
 ],
 'headers' => [
 'Authorization' => 'Bearer ' . $token,
 'Content-Type' => 'application/json'
 ]
]);
  • The API call returns a 200 OK status, but when I check the participant data later in the flow, the custom variables are not there.
  • I’ve verified that the participant ID is correct and that the OAuth token has the necessary scopes.
  • I’m wondering if I’m missing something in the payload structure or if there’s a specific way to ensure the data persists through the IVR flow.
  • Has anyone else encountered this issue with the Set Participant Data action?