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

SendPoll#

Test Postman Apidog

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

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

  1. Через личный кабинет включить настройки Получать уведомления о входящих сообщениях и файлах и Получать уведомления об опросах
  2. Через метод SetSettings включить настройки incomingWebhook и pollMessageWebhook

Запрос#

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

POST
{{apiUrl}}/waInstance{{idInstance}}/sendPoll/{{apiTokenInstance}}

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

Параметры запроса#

Параметр Тип Обязательный Описание
chatId string Да Идентификатор чата
message string Да Текст сообщения. Поддерживаются символы emoji 😃. Максимальная длина текстового сообщения составляет 255 символов.
options array Да Массив данных о вариантах выбора. Количество вариантов ответов в голосовании не может быть больше 12. Варианты ответа должны отличаться друг от друга минимум одним символом.
multipleAnswers boolean Нет Разрешить несколько ответов. true — включено, false — отключено, По умолчанию: false
quotedMessageId string Нет Идентификатор цитируемого сообщения. При заполнении параметра сообщение отправится с цитированием указанного сообщения чата.
Цитирование сообщения возможно только из того же чата, в который производится отправка.
Для отправки сообщений из другого чата используется метод ForwardMessages

Цитирование сообщений

Для корректной работы с механизмом цитирования сообщений система должна знать о сообщении, которое будет процитировано. Убедится о том что сообщение доступно к цитированию можно запросив метод журналирования getMessage, если сообщение отсутствует в системе, то цитировать такое сообщение невозможно.

  • Для цитирования входящих сообщений необходимо включить настройку Получать уведомления о входящих сообщениях и файлах.

  • Для цитирования исходящих сообщений отправленных с телефона, включите настройку Получать уведомления о сообщениях, отправленных с телефона.
    Так сообщения будут попадать в систему и их можно будет цитировать.

Установку настроек можно сделать методом SetSettings или через личный кабинет.

Поля массива options

Параметр Тип Описание
optionName string Текст варианта выбора. Максимальная длина
текста составляет 100 символов.

Пример тела запроса#

Количество вариантов ответов в опросе

Для успешной отправки опроса количество вариантов ответа должно быть не менее 2 и не более 12.

Отправка сообщения в личный чат:

{
    "chatId": "11001234567@c.us",
    "message": "Please choose the color:",
    "options": [
        {
            "optionName": "green"
        },
        {
            "optionName": "red"
        },
        {
            "optionName": "blue"
        }
    ],
    "multipleAnswers": false
}

Ответ#

Поля ответа#

Поле Тип Описание
idMessage string Идентификатор отправленного сообщения

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

{
    "idMessage": "3EB0C767D097B7C7C030"
}

Пример отображения у получателя#

Пример отображения опроса

Ошибки SendPoll#

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

Код HTTP Идентификатор ошибки Описание
400 Bad Request
Validation failed
Ошибка валидации
400 Validation failed.
Details: 'message' length must be less than or equal to 255 characters long
Длина сообщения должна быть меньше или равна 255 символам
400 Validation failed.
Details: 'optionName' length must be less than or equal to 100 characters long
Длина варианта ответа должна быть меньше или равна 100 символам
400 Validation failed.
Details: 'options[X].optionName' is required
Некорректный ключ для варианта ответа Х
400 Validation failed.
Details: 'options' length must be from 2 to 12 elements inclusive
Некорректное количество вариантов ответа
400 Validation failed.
Details: 'optionName' field must have unique value
Варианты ответа не должны повторяться
500 request entity too large Превышение допустимой длины json (>100кб)

Отправка с неверным идентификатором цитируемого сообщения

В случае некорректного указания quotedMessageId, система вернёт код 200 и id отправляемого сообщения, но оно не будет доставлено получателю.

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

import requests

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

payload = {
    "chatId": "11001234567@c.us",
    "message": "Please choose the color:",
    "options": [
        {"optionName": "green"},
        {"optionName": "red"},
        {"optionName": "blue"}
    ],
    "multipleAnswers": True
}

headers = {
'Content-Type': 'application/json'
}

response = requests.post(url, json=payload, headers=headers)

print(response.text.encode('utf8'))
curl --location --request POST '{{apiUrl}}/waInstance{{idInstance}}/sendPoll/{{apiTokenInstance}}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "chatId": "11001234567@c.us",
    "message": "Please choose the color:",
    "options": [{"optionName": "green"}, {"optionName": "red"}, {"optionName": "blue"}]
}'
Sub SendPoll()
    Dim url As String
    Dim RequestBody As String
    Dim http As Object
    Dim response As String

    ' The apiUrl, idInstance and apiTokenInstance values are available in console, double brackets must be removed
    url = "{{apiUrl}}/waInstance{{idInstance}}/sendPoll/{{apiTokenInstance}}"

    ' chatId - chat identifier, message - message text, options - array of data about choice options, multipleAnswers - allow multiple answers. true - enabled, false - disabled, Default: false
    RequestBody = "{""chatId"":""71234567890@c.us"",""message"":""Please choose the color:"",""options"":[{""optionName"":""green""},{""optionName"":""red""},{""optionName"":""blue""}],""multipleAnswers"":false}"

    Set http = CreateObject("MSXML2.XMLHTTP")

    With http
        .Open "POST", url, False
        .setRequestHeader "Content-Type", "application/json"
        .send RequestBody
    End With

    response = http.responseText

    Debug.Print response

    ' Outputting the answer to the desired cell
    Range("A1").Value = response

    Set http = Nothing
End Sub