Как найти callerStatus и calleeStatus для вызовов RingCentral? - PullRequest
0 голосов
/ 22 ноября 2018

Как получить статус вызова для прошлых вызовов?

Я хочу получить статус callerStatus и calleeStatus, который отображается в ответе API RingOut Status, но я не уверен, что использоватьдля ringOutId в пути URL:

https://developer.ringcentral.com/api-reference#RingOut-getRingOutCallStatus

Запрос

GET /restapi/v1.0/account/400162076008/добавочный номер / 400162076009 / сигнал вызова / Y3MxNzE4NDkyODg0NDM5MDJAMTAuNjIuMjkuMzM

Ответ

HTTP 200 OK

{
    "uri" : "https://platform.ringcentral.com/restapi/v1.0/account/400162076008/extension/400162076009/ring-out/2",
    "id" : "Y3MxNzE4NDkyODg0NDM5MDJAMTAuNjIuMjkuMzM",
    "status" : {
      "callStatus" : "Success",
      "callerStatus" : "Success",
      "calleeStatus" : "Success"
    }
}

При выполнении вызова состояния RingOut без ringOutId я надеялся получить списоквызовов, но вместо этого я получаю следующую ошибку:

Resource for parameter [ringOutId] is not found

Что я использую для ringOutId?Как я могу получить callerStatus и calleeStatus для звонков?

1 Ответ

0 голосов
/ 22 ноября 2018

Состояние активного вызова 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 с их точки зрения.

...