SendPoll#
Метод предназначен для отправки сообщения с опросом.
Сообщение будет добавлено в очередь на отправку. Сообщение на отправку хранится 24 часа в очереди и будет отправлено сразу же после авторизации телефона. Скорость отправки сообщений из очереди регулирует параметр Интервал отправки сообщений.
Для метода используются ограничения на частоту запросов в секунду.
Запрос#
Для отправки сообщения с опросом требуется выполнить запрос по адресу:
{{apiUrl}}/waInstance{{idInstance}}/sendPoll/{{apiTokenInstance}}
Префикс v3 стал необязательным параметром запроса
Для вашего удобства унифицировали формат запросов методов API для всех мессенджеров.
Подробнее о правилах вызова методов читайте в статье Выполнение запросов.
Для получения параметров запроса apiUrl, idInstance и apiTokenInstance обратитесь к разделу Перед началом работы.
Параметры запроса#
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
chatId | string | Да | Идентификатор чата. |
message | string | Да | Текст заголовка опроса. Поддерживаются символы emoji 😃. Максимальная длина текста составляет 200 символов. Требуется использовать кодировку UTF-8 без BOM. |
options | array | Да | Массив вариантов ответа. Количество вариантов ответов в голосовании не может быть больше 12. Варианты ответа должны отличаться друг от друга минимум одним символом. |
allowToChangeAnswer | boolean | Нет | Разрешить участникам менять свой ответ (переголосование). Значение по умолчанию — true. |
quotedMessageId | string | Нет | Идентификатор цитируемого сообщения. При заполнении параметра сообщение отправится с цитированием указанного сообщения чата. Цитирование сообщения возможно только из того же чата, в который производится отправка. Для отправки сообщений из другого чата используется метод ForwardMessages. |
typingTime | integer | Нет | Время показа уведомления набора сообщения в чате собеседника. Время ограничено значениями от 1000 до 20000 миллисекунд (от 1 до 20 секунд). |
Параметры объекта массива options:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
optionName | string | Да | Текст варианта ответа. Максимальная длина текста составляет 100 символов. |
Цитирование сообщений
Для корректной работы с механизмом цитирования сообщений система должна знать о сообщении, которое будет процитировано. Убедится о том что сообщение доступно к цитированию можно запросив метод журналирования GetMessage, если сообщение отсутствует в системе, то цитировать такое сообщение невозможно.
-
Для цитирования входящих сообщений необходимо включить настройку
Получать уведомления о входящих сообщениях и файлах. -
Для цитирования исходящих сообщений отправленных с телефона, включите настройку
Получать уведомления о сообщениях, отправленных с телефона.
Так сообщения будут попадать в систему и их можно будет цитировать.
Установку настроек можно сделать методом SetSettings или через личный кабинет.
Пример тела запроса#
{
"chatId": "10000000",
"message": "Какой мессенджер вы используете чаще всего?",
"options": [
{"optionName": "MAX"},
{"optionName": "Telegram"},
{"optionName": "WhatsApp"}
],
"allowToChangeAnswer": false
}
Ответ#
Поля ответа#
| Поле | Тип | Описание |
|---|---|---|
idMessage | string | Идентификатор отправленного сообщения |
Пример тела ответа#
{
"idMessage": "1762333029830"
}
Ошибки SendPoll#
Перечень общих для всех методов ошибок смотрите в разделе Стандартные ошибки
| Код HTTP | Идентификатор ошибки | Описание |
|---|---|---|
| 400 | Bad Request Validation failed | Ошибка валидации |
| 400 | Validation failedDetails: add at least 1 answer option | Не передан ни один вариант ответа |
| 400 | Validation failedDetails: poll options should not be repeated | Варианты ответа не должны повторяться |
| 500 | Internal Server Error request entity too large | Превышение допустимой длины json (>100кб) |
Примеры кода#
import requests
url = "{{apiUrl}}/waInstance{{idInstance}}/sendPoll/{{apiTokenInstance}}"
payload = {
"chatId": "10000000",
"message": "Какой мессенджер вы используете чаще всего?",
"options": [
{"optionName": "MAX"},
{"optionName": "Telegram"},
{"optionName": "WhatsApp"}
]
}
headers = {
'Content-Type': 'application/json'
}
response = requests.post(url, json=payload, headers=headers)
print(response.text.encode('utf8'))
curl --location '{{apiUrl}}/waInstance{{idInstance}}/sendPoll/{{apiTokenInstance}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"chatId": "10000000",
"message": "Какой мессенджер вы используете чаще всего?",
"options": [
{"optionName": "MAX"},
{"optionName": "Telegram"},
{"optionName": "WhatsApp"}
]
}'
var restTemplate = new RestTemplate();
var requestUrl = new StringBuilder();
requestUrl
.append({{apiUrl}})
.append("/waInstance").append({{idInstance}})
.append("/sendPoll/")
.append({{apiTokenInstance}});
var headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
var jsonBody = "{\r\n\t\"chatId\": \"10000000\",\r\n\t\"message\": \"Какой мессенджер вы используете чаще всего?\",\r\n\t\"options\": [{\"optionName\": \"MAX\"}, {\"optionName\": \"Telegram\"}]\r\n}";
var requestEntity = new HttpEntity<>(jsonBody, headers);
var response = restTemplate.exchange(requestUrl.toString(), HttpMethod.POST, requestEntity, String.class);
System.out.println(response);
var requestUrl = new StringBuilder();
requestUrl
.append({{apiUrl}})
.append("/waInstance").append({{idInstance}})
.append("/sendPoll/")
.append({{apiTokenInstance}});
var response = Unirest.post(requestUrl.toString())
.header("Content-Type", "application/json")
.body("{\r\n\t\"chatId\": \"10000000\",\r\n\t\"message\": \"Какой мессенджер вы используете чаще всего?\",\r\n\t\"options\": [{\"optionName\": \"MAX\"}, {\"optionName\": \"Telegram\"}]\r\n}")
.asString();
System.out.println(response);