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

SendPoll#

Test Postman

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

Сообщение добавляется в очередь на отправку.
Скорость отправки сообщений из очереди устанавливает интервал отправки сообщений.

Запрос#

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

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

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

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

Параметр Тип Обязательный Описание
chatId string Да Идентификатор чата
message string Да Текст вопроса опроса. Длина от 1 до 255 символов. Поддерживаются символы emoji 😃
options array Да Массив строк с вариантами ответов (от 2 до 12 вариантов).
type string Нет Тип опроса.
Доступные значения:
- regular (обычный опрос),
- quiz (викторина).
По умолчанию regular
multipleAnswers boolean Нет Разрешить выбор нескольких вариантов ответа, true/ false. Актуально только для типа regular, умолчанию: false
isAnonymous boolean Нет Если true, то список проголосовавших скрыт. По умолчанию: true.
Неанонимные опросы нельзя отправлять в каналы.
correctOptionId integer Нет Индекс правильного ответа (начиная с 0). Используется для опросов типа quiz
quotedMessageId string Нет Идентификатор цитируемого сообщения
typingTime integer Нет Время показа уведомления набора сообщения в чате собеседника.
Принимает значение в диапазоне от 1000 до 20000 миллисекунд (от 1 до 20 секунд)
typingType string Нет Тип набора сообщения. Возможные значения:
text - "печатает..." (по умолчанию)
record_voice_note - "записывает голосовое..."
upload_voice_note - "отправляет голосовое..."
record_video_note - "записывает видео-сообщение..".
upload_video_note - "отправляет видео-сообщение..."
record_video - "записывает видео..."
upload_video - "отправляет видео..."
upload_photo - "отправляет фото..."
upload_document - "отправляет файл..."
choose_sticker - "выбирает стикер..."
choose_location - "выбирает локацию..."
choose_contact - "выбирает контакт..."

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

Параметр Тип Описание
optionName string Текст варианта выбора каждого варианта от 1 до 100 символов. Варианты должны отличаться друг от друга.

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

Отправка сообщения в групповой чат#

{
    "chatId": "-12345678909876",
    "message": "Please choose the color:",
    "options": [
        { "optionName": "green" },
        { "optionName": "red"   },
        { "optionName": "blue"  }
    ],
    "multipleAnswers": false
}

Отправка викторины в групповой чат#

{
    "chatId": "-12345678909876",
    "message": "Какая планета самая большая в Солнечной системе?",
    "options": [
        { "optionName": "Марс"   }, // optionId = 0
        { "optionName": "Венера" }, // optionId = 1
        { "optionName": "Юпитер" }, // optionId = 2
        { "optionName": "Сатурн" }  // optionId = 3
    ],
    "type": "quiz",
    "correctOptionId": 2,
    "isAnonymous": false
}

Отправка сообщения с цитированием#

{
    "chatId": "-12345678909876",
    "message": "Please choose the color:",
    "options": [
        { "optionName": "green" },
        { "optionName": "red"   },
        { "optionName": "blue"  }
    ],
    "multipleAnswers": false,
    "quotedMessageId": "1769676078000"
}

Ответ#

Поля ответа#

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

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

{
    "idMessage": "1769676078000"
}

Ошибки#

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

Код 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' length must be from 2 to 12 elements inclusive
Некорректное количество вариантов ответа
400 Validation failed.
Details: 'optionName' field must have unique value
Варианты ответа не должны повторяться
400 Validation failed.
Details: Polls can only be sent to groups or channels, not private chats
Отправка опросов возможна только в групповые чаты

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

import requests

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

payload = {
    "chatId": "-12345678909876ы",
    "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": "-12345678909876",
    "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"":""-12345678909876"",""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