Перейти к содержанию

callsGetIceServers#

Бета-версия

Функциональность находится в режиме бета-версии. Функции могут быть изменены, а также могут работать нестабильно. В будущем за функционал может взиматься дополнительная плата.
Подключение к функционалу можно запросить через техподдержку GREEN-API

Метод предназначен для получения списка серверов, которые помогают двум сторонам звонка найти сетевой маршрут друг к другу. Без этого списка звук передать не получится, поэтому метод вызывается до отправки предложения о передаче звука в соединении callsRtc.

Список передаётся в WebRTC как есть — в параметр iceServers при создании соединения. Разбирать его содержимое не требуется.

Запрос#

Для получения списка серверов требуется выполнить запрос по адресу:

GET
{{apiUrl}}/waInstance{{idInstance}}/callsGetIceServers/{{apiTokenInstance}}

Запрос выполняется без параметров.

Для получения параметров запроса apiUrl, idInstance и apiTokenInstance обратитесь к разделу Перед началом работы.

Ответ#

В ответе приходит массив серверов в формате RTCIceServer, который принимает WebRTC.

Поля ответа#

Поле Тип Описание
urls string | array Адрес сервера либо массив адресов
username string Имя пользователя. Приходит для серверов, которые требуют доступа по паролю
credential string Пароль. Приходит для серверов, которые требуют доступа по паролю

Пример тела ответа#

[
  {
    "urls": "stun:stun.l.google.com:19302"
  },
  {
    "urls": "turn:7.777.77.77:3478?transport=udp",
    "username": "178333333:720133333333",
    "credential": "green/password="
  },
  {
    "urls": "turn:7.777.77.76:3478?transport=tcp",
    "username": "178333333:720133333333",
    "credential": "green/password="
  },
  {
    "urls": "turn:7.777.77.75:3478?transport=tcp",
    "username": "178333333:720133333333",
    "credential": "green/password="
  }
]

Конкретный список серверов возвращает API, и он может меняться: адреса, имена пользователей и пароли в примере приведены для наглядности. Сохранять список у себя не нужно — запрашивайте его перед каждым звонком.

Ошибки#

Перечень общих для всех методов ошибок смотрите в разделе Стандартные ошибки.

Примеры кода#

import requests

url = "{{apiUrl}}/waInstance{{idInstance}}/callsGetIceServers/{{apiTokenInstance}}"

payload = {}
headers = {}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text.encode('utf8'))
curl --location '{{apiUrl}}/waInstance{{idInstance}}/callsGetIceServers/{{apiTokenInstance}}'
var restTemplate = new RestTemplate();
var requestUrl = new StringBuilder();
requestUrl
    .append({{apiUrl}})
    .append("/waInstance").append({{idInstance}})
    .append("/callsGetIceServers/")
    .append({{apiTokenInstance}});

var response = restTemplate.exchange(requestUrl.toString(), HttpMethod.GET, null, String.class);
System.out.println(response);
var requestUrl = new StringBuilder();
requestUrl
    .append({{apiUrl}})
    .append("/waInstance").append({{idInstance}})
    .append("/callsGetIceServers/")
    .append({{apiTokenInstance}});

var response = Unirest.get(requestUrl.toString())
    .header("Content-Type", "application/json")
    .asString();

System.out.println(response);