Состояние активного вызова RingOut
API статуса RingOut используется только при телефонных звонках через RingOut.ringOutId
возвращается в ответе на API Make RingOut.Он также возвращает состояние только во время разговора и через некоторое время, после чего возвращает 404.
Ссылка API: https://developer.ringcentral.com/api-reference#RingOut-makeRingOutCall
RingOut Historical Call Status
Чтобы получить статус вызова для исторических вызовов, используйте API журнала вызовов.По умолчанию служба вернет статус общего вызова в свойстве result
.Чтобы получить статус отдельных абонентов по вызову, известных как ноги, используйте API детального журнала вызовов.Доступны следующие URL:
Журнал вызовов компании (все пользователи)
GET /restapi/v1.0/account/~/call-log?view=Detailed
https://developer.ringcentral.com/api-reference#Call-Log-loadCompanyCallLog
Журнал вызовов добавочного номера пользователя
GET /restapi/v1.0/account/~/extension/~/call-log?view=Detailed
https://developer.ringcentral.com/api-reference#Call-Log-loadUserCallLog
При подробном просмотре вы получите ответ со свойством legs
, которое представляет собой массив записей журнала вызовов, также известный как Подробные записи вызовов (CDR) .Пример записи показан ниже.Каждый вызов в массиве legs
имеет свойство result
.result
используется вместо статуса, потому что в журнале вызовов перечислены только завершенные вызовы.Каждая нога имеет свойство legType
, которое можно использовать для идентификации звонящего и вызываемого.
Например, legType
можно установить на:
RingOutClientToCaller
RingOutClientToSubscriber
RingOutClientToSubscriber
можно использовать для calleeStatus
.Это дает нам:
callerStatus
= leg.result
, где leg.legType == 'RingOutClientToCaller'
calleeStatus
= leg.result
, где leg.legType == 'RingOutClientToSubscriber'
Примечание: CDR может иметь только одну ногу.Это может произойти, если result
равен Busy
.В RingOut, если одна сторона занята, это может быть оптимизацией, чтобы не вызывать другую сторону.Много раз наши клиенты будут использовать RingOut, чтобы сначала позвонить своему сотруднику, а если сотрудник ответит, то позвонит клиенту.Если сотрудника нет, нет причин звонить клиенту и заставлять его слушать тональный сигнал занятости.
Вот пример записи журнала ответных вызовов:
{
"uri": "https://platform.ringcentral.com/restapi/v1.0/account/727097016/extension/727097016/call-log/L6HbCN6tB1nyDUA?view=Detailed",
"id": "L6HbCN6tB1nyDUA",
"sessionId": "575838550017",
"startTime": "2018-11-22T08:42:05.500Z",
"duration": 19,
"type": "Voice",
"direction": "Outbound",
"action": "RingOut PC",
"result": "Call connected",
"to": {
"phoneNumber": "+12125550111",
"name": "Daenerys Targaryen",
},
"from": {
"phoneNumber": "+16505550101",
"name": "John Snow"
},
"extension": {
"uri": "https://platform.ringcentral.com/restapi/v1.0/account/727097016/extension/727097016",
"id": 727097016
},
"transport": "PSTN",
"lastModifiedTime": "2018-11-22T08:42:30.007Z",
"billing": {
"costIncluded": 0.0,
"costPurchased": 0.0
},
"legs": [
{
"startTime": "2018-11-22T08:42:05.257Z",
"duration": 20,
"type": "Voice",
"direction": "Outbound",
"action": "RingOut PC",
"result": "Call connected",
"to": {
"phoneNumber": "+16505550101",
"name": "John Snow"
},
"from": {
"phoneNumber": "+12125550111",
"name": "Daenerys Targaryen",
},
"extension": {
"uri": "https://platform.ringcentral.com/restapi/v1.0/account/727097016/extension/727097016",
"id": 727097016
},
"transport": "PSTN",
"billing": {
"costIncluded": 0.0,
"costPurchased": 0.0
},
"legType": "RingOutClientToSubscriber"
},
{
"startTime": "2018-11-22T08:42:05.500Z",
"duration": 19,
"type": "Voice",
"direction": "Outbound",
"action": "RingOut PC",
"result": "Call connected",
"to": {
"phoneNumber": "+12125550111",
"name": "Daenerys Targaryen",
},
"from": {
"phoneNumber": "+16505550101",
"name": "John Snow"
},
"extension": {
"uri": "https://platform.ringcentral.com/restapi/v1.0/account/727097016/extension/727097016",
"id": 727097016
},
"transport": "PSTN",
"legType": "RingOutClientToCaller",
"master": true
}
]
},
Примечание: В подробном примере журнала вызовов to
и from
для ветви RingOutClientToCaller
совпадают с to
и from
для общего вызова, в то время как онипоменял ногу RingOutClientToSubscriber
на вызываемого.Это потому, что вызываемый будет соединен с вызывающим абонентом, чей номер находится в свойстве to
с их точки зрения.