Persisting Kotlin SDK Custom Attributes via Architect Set Participant Data Action

Could someone explain the precise JSON structure required to pass custom variables from an IVR flow into a Genesys Cloud Web Messaging session initiated via the Android SDK? I am building a Kotlin-based Android application using the Genesys Cloud Web Messaging SDK. My goal is to capture user input within an IVR flow using the Architect Set Participant Data action and ensure those values are accessible as customAttributes within the subsequent web messaging session.

Currently, I am configuring the Architect flow to execute a Set Participant Data action before transitioning the user to a web messaging queue. I am attempting to map the IVR input variables to the participant’s custom data. However, when I retrieve the participant details using the SDK method messagingSession.getParticipant(), the customAttributes map remains empty. I have verified that the IVR inputs are correctly stored in the flow variables by logging them via the Log action.

The specific issue appears to be the payload format sent to the internal data action. I am using the following JSON structure in the Set Participant Data action configuration:

{
 "customAttributes": {
 "ivrInputValue": "{{flowVars.ivrInputValue}}"
 }
}

I suspect that the key customAttributes might need a different namespace or that the mapping syntax for flow variables within the Architect action payload is incorrect for cross-channel persistence. I am also considering if the merge strategy needs to be explicitly defined in the action configuration to prevent overwriting existing data. Has anyone successfully bridged IVR variables to Web Messaging custom attributes using this pattern? I need to ensure the data persists through the channel switch without requiring a manual API call to PATCH /api/v2/conversations/webchat/{conversationId}/participants/{participantId} from the Android side, which would introduce unnecessary latency and complexity in my coroutine-based network layer.