A1: The recording object should be available in the main response object too. If you are so sure that the recording object exists in a leg and not present in the main object, then submit a dev support ticket with the full record payload so someone can have a look at it.
A2: The max record count is 250 records. If there are more than 250 call records, the API will ignore the dateFrom query param.
Hi Phong,
Is RingCentral sending snapshot of the call record or the finalized call record? Because our database is showing some call records did not have recording URL saved, however when we queried RingCentral using postman for the same call record, the recording URL was there in the response. Is it possible that when our system synced one particular record, the recording URL was not available yet (maybe due to the call was still ongoing) at the moment, and at later point when we queried the same record from Postman again, the record was finalized (call was finished)? That's why we saw the discrepancies?
Hi Phong,
We sync RC phone records every min. Is recording always gonna be available and be part of main object (or legs)? For example, is it possible that for a given callsid, the recording is not available at the moment (maybe some sort of delay) when we sync. So the API just returns the call record without recording... later on if we sync the same callsid again, the recording becomes available.
Reason why we are asking this is for some reason, some of the call records are missing recordings after our sync and currently we only sync once, we don't sync again past records.
One example is: aQq83eLPTD-HzUA. We used postman to query and found out there was a recording there after we found out that our system didn't have recording for this callsid.
Request:
https://platform.ringcentral.com/restapi/v1.0/account/~/call-log-sync?syncType=FSync&dateFrom=2023-09-11T16:43:00.8102227Z&recordCount=250&view=Detailed&showDeleted=false
Response:
{
"uri": "https://platform.ringcentral.com/restapi/v1.0/account/6297958XXXX/call-log/aQq83eLPTD-HzUA?view=Detailed",
"id": "aQq83eLPTD-HzUA",
...
}
First of all, I recommend you not to post full real data on public place (I deleted them on your post). You should mask or delete those data such as an account id, extension id, phone number, name etc. If you must provide real data to help a supporter to investigate, submit a dev support ticket and provide the data via the support channel.
To your question, I already explained earlier, it is possible that a call record may not have all call data at the time it is synced, but the ISync will keep track of new data of a call record and will return the same record (identified by record id) with latest updated data in a next sync. This happens more often to a long and complicated call via a call queue and the call is transferred from one agent to another agent etc.
The recording object always present on the main call record (just for the case you sync or read the call log with the "Simple" view. The recording object also present in a call leg (for "Detailed" view). In a direct call, the call recording can be easily identified the owner and you can either pick it from the main record or from the leg record. But in a call queue call, the recording object in the main record may not tell you about the owner. So you should rely on the recording object on a call leg to identify the owner.
Also, if a call is first accepted by an agent and be recorded, then the first agent blind transferred the call to the next agent and the next agent also record the call. In this case, the recording object in the main record only refer to the first recording. And there will be 2 different recording objects in the call legs, one belongs to the first agent and another one belongs to the second agent.
BTW, what is the reason you sync every min? If your account is not such busy that may produce more than 250 calls per minute, I recommend to extend the sync period to 10 mins or more.