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

SendPoll#

Метод предназначен для отправки сообщения с опросом.

Сообщение будет добавлено в очередь на отправку. Сообщение на отправку хранится 24 часа в очереди и будет отправлено сразу же после авторизации телефона. Скорость отправки сообщений из очереди регулирует параметр Интервал отправки сообщений.

Для метода используются ограничения на частоту запросов в секунду.

Запрос#

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

POST
{{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 failed
Details: add at least 1 answer option
Не передан ни один вариант ответа
400 Validation failed
Details: 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);