Setting recordingState to ACTIVE does not work

TLDR: setting recordingState to ACTIVE does not change the recordingState on the call.

A bit of detail:

  • Recording is enabled for the trunk
  • recordings are present for the call
  • during the call GET api/v2/conversations/calls/{conversation_id} returns recordingState = none
  • POST api/v2/conversations/calls/{conversation_id}/recordingstate = "ACTIVE" returns Response: 202 {"recordingState":"ACTIVE"}

yet, if I query GET https://api.mypurecloud.jp/api/v2/conversations/calls again, recordingState is shown as "none".

So, what does "recordingState" indicate? And why is it not set to ACTIVE if it is being recorded on the trunk level and why can't I set it? API says we can..

url = f'https://api.{GENESYS_CLOUD_REGION}/api/v2/conversations/calls/{conversation_id}/recordingstate'
headers = {
'Authorization': f'Bearer {access_token}',
'Content-Type': 'application/json'
}
data = {
"recordingState": state
}
logging.info(f"PUT {url} with headers {headers} and data {data}")

A 202 response indicates that your request was successfully received, but further processing will happen after the response was sent. Although the response body indicates the state update, the 202 indicates the action is not yet complete.

If you waited at least a second or two for the recording to start before checking again, please open a case with Genesys Cloud Care to investigate. We do not have access to your org's data to determine what is happening after the API response returns.

Hi,

I noticed that when querying using https://api.mypurecloud.jp/api/v2/conversations/calls/{abcdef12_1234_1234_abcd_abcdef12} the return contains recordingState both for each participant as well as a more global attribute:

{"id": "abcdef12_1234_1234_abcd_abcdef12", "participants": [{"id": "fedcabcd-baba-adad-abab-970abb032345", "address": "sip:v2i1u9726q7n8678+random_domain.orgspan.com@localhost", "startTime": "2024-06-14T02:27:56.623Z", "connectedTime": "2024-06-14T02:28:02.333Z", "purpose": "agent", "state": "connected", "direction": "outbound", "held": false, "wrapupRequired": true, "wrapupPrompt": "optional", "mediaRoles": ["full"], "user": {"id": "f9a8b7c6-d5e4-4321-0a98-7b65cd43210f", "selfUri": "/api/v2/users/f9a8b7c6-d5e4-4321-0a98-7b65cd43210f"}, "queue": {"id": "9e8f7c6d-a5b4-4c32-1a09-8b76dc543210", "selfUri": "/api/v2/routing/queues/9e8f7c6d-a5b4-4c32-1a09-8b76dc543210"}, "team": {"id": "78394aaa-abcd-4b17-abcd-3806d79cabcd", "selfUri": "/api/v2/teams/78394aaa-abcd-4b17-abcd-3806d79cabcd"}, "attributes": {}, "provider": "Edge", "muted": false, "confined": false, "recording": false, "recordingState": "suspend", "ani": "sip:v2i1u9726q7n8678+random_domain.orgspan.com@localhost", "dnis": "tel:+1202-456-1414", "securePause": false}, {"id": "f8a3d123-abcd-4225-abcd-a62d195d1234", "name": "Biomedome 1, Mars", "address": "tel:+1202-456-1414", "startTime": "2024-06-14T02:27:57.354Z", "connectedTime": "2024-06-14T02:28:02.328Z", "purpose": "customer", "state": "connected", "direction": "outbound", "held": false, "wrapupRequired": false, "mediaRoles": ["full"], "queue": {"id": "9e8f7c6d-a5b4-4c32-1a09-8b76dc543210", "selfUri": "/api/v2/routing/queues/9e8f7c6d-a5b4-4c32-1a09-8b76dc543210"}, "attributes": {}, "provider": "Edge", "externalContact": {"id": "f7bdd987-9876-4760-3456-d552fb385678", "selfUri": "/api/v2/externalcontacts/contacts/f7bdd987-9876-4760-3456-d552fb385678"}, "peer": "48d80abc-1234-1234-1234-ddc07497abcd", "muted": false, "confined": false, "recording": true, "recordingState": "suspend", "ani": "sip:1007@156.33.241.5;user=phone", "dnis": "tel:+1202-456-1414", "securePause": false}], "otherMediaUris": [], "recentTransfers": [], "utilizationLabelId": "631fabcd-baba-adad-abab-970abb032345", "recordingState": "suspend", "securePause": false, "selfUri": "/api/v2/conversations/calls/abcdef12_1234_1234_abcd_abcdef12"}

  1. Could you please tell me what is this global in JSON recurdingState and how is it different from each of the participants? In which scenarios you would have active for the participant but none / suspend/paused for the global?

  2. what does recordingState of none signify? Can you set the recordingState to none? In APIs it shows as a valid option, but what does it mean? Is it the same as DO NOT RECORD?

Thank you!

The best way to understand the conversation data is to look at a conversation where you already know what physically happened so you can match up the data. You can also refer to the documentation for the API endpoint to see what the documentation says for each of the various fields.

One is on the whole conversation and the other are on individual participants. I wouldn't expect that.

That it's not recording. If the API resource you're using allows it. None means not recording. "DO NOT RECORD" is not a recording state; refer to the API documentation for valid values.

That it's not recording. If the API resource you're using allows it. None means not recording. "DO NOT RECORD" is not a recording state; refer to the API documentation for valid values.

Correct. So, would setting to NONE after suspend or active stop the recording?
In the reference it says:

On update, 'paused' initiates a secure pause, 'active' resumes any paused recordings; otherwise indicates state of conversation recording.Valid values: ACTIVE, PAUSED, NONE.

I guess what I am asking is whether I can stop recording completely. For now, all I can imagine is pausing the recording, writing its ID into DB and then batch delete them... Stopping the recording from within the workflow is not a robust enough solution for us - would love to do it via API.

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