Как я могу получить запись вызова RingCentral из отслеживаемого входящего вызова? - PullRequest
0 голосов
/ 09 марта 2019

Я отслеживаю входящие вызовы на RingCentral, прослушивая фильтр событий уведомлений о сеансе вызовов (CSN) telephony/sessions:

/restapi/v1.0/account/~/extension/~/telephony/sessions

С этого момента я буду получать события, подобные следующим.Свойство recordings появится, чтобы указать, что запись доступна.Как я могу получить эту запись?

{
  "uuid":"12345678901234567890",
  "event":"/restapi/v1.0/account/11111111/extension/22222222/telephony/sessions",
  "timestamp":"2019-03-08T22:30:40.059Z",
  "subscriptionId":"11112222-3333-4444-5555-666677778888",
  "ownerId":"33333333",
  "body":{
    "sequence":7,
    "sessionId":"1234567890",
    "telephonySessionId":"1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
    "serverId":"10.13.22.20.TAM",
    "eventTime":"2019-03-08T22:30:39.938Z",
    "parties":[
      {
        "accountId":"11111111",
        "extensionId":"22222222",
        "id":"cs12345678901234567890-2",
        "direction":"Inbound",
        "to":{
          "phoneNumber":"+16505550100",
          "name":"Jane Doe",
          "extensionId":"22222222"
        },
        "from":{
          "phoneNumber":"+14155550100",
          "name":"John Smith"
        },
        "recordings":[
          {
            "id":"44444444",
            "active":false
          }
        ],
        "status":{
          "code":"Answered",
          "rcc":false
        },
        "missedCall":false,
        "standAlone":false,
        "muted":false
      }
    ],
    "origin":{
      "type":"Call"
    }
  }
}

1 Ответ

0 голосов
/ 09 марта 2019

Существует два способа извлечь запись, используя информацию в событии, а именно свойство recordings[0].id и свойство sessionID.

  1. , непосредственно вызывая конечную точку recording с recordings[0].id property.
  2. косвенным путем путем запроса конечной точки call-log со свойством sessionId

Примечание 1: Пока вызов продолжается,запись не будет доступна для извлечения, даже когда идентификатор записи присутствует в событии уведомления о сеансе вызова.Запись будет доступна для восстановления вскоре после завершения вызова.

Примечание 2: Записи вызовов могут быть в формате MP3 или WAV, определенном компанией.Чтобы различить, проверьте заголовок ответа Content-Type для типа MIME при извлечении файла записи.

1) Непосредственно через API записи

Вы можете вызватьКонечная точка API записи и извлечение носителя напрямую, вручную создавая URL записи следующим образом:

https://media.ringcentral.com/restapi/v1.0/account/{accountId}/recording/{recordingId}/content

В этом примере accountId равно 11111111, а recordingId равно 44444444 для следующего:

https://media.ringcentral.com/restapi/v1.0/account/11111111/recording/44444444/content

Этот подход может быть быстрым, он может быть подвержен ошибкам, так как RingCentral однажды изменил имя хоста носителя.Хотя ожидаемых изменений нет, будущие изменения, вызов API call-log и получение полного URL-адреса мультимедиа из ответа, являются более безопасным и рекомендуемым подходом.Об этом подходе см. Ниже.

2) Косвенно через API-интерфейс журнала вызовов

Выполнение промежуточного вызова API для call-log API имеет двойное преимущество, так как является официальнымподход для получения медиа-URL, предоставляющий больше метаданных для вызова.При таком подходе recording.id в записи call-log будет совпадать со свойством recordings[0].id в событии уведомления о сеансе вызова.

API учетной записи компании и расширения call-log API можно вызывать с помощьюsessionId параметр из события, как показано:

GET /restapi/v1.0/account/~/call-log?sessionId={sessionId}
GET /restapi/v1.0/account/~/extension/~/call-log?sessionId={sessionId}

В этом примере sessionId равен 1234567890, поэтому вы должны иметь URL-адрес API журнала вызовов компании следующим образом

GET /restapi/v1.0/account/~/call-log?sessionId=1234567890

Объект ответа будет иметь свойство recording, которое предоставляет гиперссылки для получения медиа-файла.Файл может быть в формате WAV или MP3, который сообщается в заголовке ответа Content-Type.

{
  "uri": "https://platform.ringcentral.com/restapi/v1.0/account/11111111/extension/22222222/call-log?view=Simple&sessionId=1234567890&page=1&perPage=100",
  "records": [
    {
      "uri": "https://platform.ringcentral.com/restapi/v1.0/account/11111111/extension/22222222/call-log/1234567890ABCDEFGabcdefgh?view=Simple",
      "id": "1234567890ABCDEFGabcdefgh",
      "sessionId": "1234567890",
      "startTime": "2019-03-08T22:30:29.505Z",
      "duration": 35,
      "type": "Voice",
      "direction": "Inbound",
      "action": "Phone Call",
      "result": "Accepted",
      "to": {
        "phoneNumber": "+16505550100",
        "name": "Jane Doe"
      },
      "from": {
        "phoneNumber": "+14155550100",
        "name": "John Smith",
        "location": "San Francisco, CA"
      },
      "recording": {
        "uri": "https://platform.ringcentral.com/restapi/v1.0/account/11111111/recording/44444444",
        "id": "44444444",
        "type": "OnDemand",
        "contentUri": "https://media.ringcentral.com/restapi/v1.0/account/111111111/recording/44444444/content"
      },
      "extension": {
        "uri": "https://platform.ringcentral.com/restapi/v1.0/account/111111111/extension/22222222",
        "id": 22222222
      },
      "reason": "Accepted",
      "reasonDescription": "The call connected to and was accepted by this number."
    }
  ],
  "paging": {
    "page": 1,
    "perPage": 100,
    "pageStart": 0,
    "pageEnd": 0
  },
  "navigation": {
    "firstPage": {
      "uri": "https://platform.ringcentral.com/restapi/v1.0/account/11111111/extension/22222222/call-log?view=Simple&sessionId=1234567890&page=1&perPage=100"
    },
    "lastPage": {
      "uri": "https://platform.ringcentral.com/restapi/v1.0/account/11111111/extension/22222222/call-log?view=Simple&sessionId=1234567890&page=1&perPage=100"
    }
  }
}
...