callsGetIceServers#
Бета-версия
Функциональность находится в режиме бета-версии. Функции могут быть изменены, а также могут работать нестабильно. В будущем за функционал может взиматься дополнительная плата.
Подключение к функционалу можно запросить через техподдержку GREEN-API
Метод предназначен для получения списка серверов, которые помогают двум сторонам звонка найти сетевой маршрут друг к другу. Без этого списка звук передать не получится, поэтому метод вызывается до отправки предложения о передаче звука в соединении callsRtc.
Список передаётся в WebRTC как есть — в параметр iceServers при создании соединения. Разбирать его содержимое не требуется.
Запрос#
Для получения списка серверов требуется выполнить запрос по адресу:
{{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);