Блог Горошко Андрея Bitrix24 Создать и отправить голосование в чат vote.Integration.Im.send (vote.integrat…

Создать и отправить голосование в чат vote.Integration.Im.send (vote.integrat…

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Создать и отправить голосование в чат vote.Integration.Im.send (vote.integrat…», проанализируем лучшие практики и покажем, как правильно использовать vote.integration.im.send.md в реальных задачах.

Создать и отправить голосование в чат vote.Integration.Im.send

> Scope: vote
>
> Кто может выполнять метод: любой пользователь

Метод vote.Integration.Im.send создает и отправляет голосование в указанный чат мессенджера.

Параметры метода

Название
тип
Описание
chatId
integer
Идентификатор чата, в который отправляется голосование. Получить можно методами im.chat.add, im.chat.get, im.recent.get, im.recent.list
IM_MESSAGE_VOTE_DATA
object
Данные голосования с вопросом и вариантами ответов. Структура описана ниже
templateId
string
Уникальный идентификатор запроса, требований к формату нет.
Цель идентификатора — защита от дублирования. Если из-за сбоя сети запрос отправится повторно с тем же templateId, сервер поймет это и создаст опрос только один раз

Параметр IM_MESSAGE_VOTE_DATA {#MESSAGE}

Название
тип
Описание
QUESTIONS*
array
Массив вопросов голосования, структура описана ниже. Максимум 1 вопрос
ANONYMITY
integer
Анонимность голосования. Возможные значения:
— 0 — неанонимное голосование,
— 1 — анонимное голосование.

Значение по умолчанию: 0, публичное голосование

OPTIONS
integer
Разрешить переголосование. Возможные значения:
— 0 — нет,
— 1 — да.

Значение по умолчанию: 0, переголосование запрещено

Структура вопроса в QUESTIONS {#QUESTIONS}

Название
тип
Описание
QUESTION
string
Текст вопроса
FIELD_TYPE
integer
Тип поля для ответа. Возможные значения:
— 0 — радиокнопки, один вариант ответа,
— 1 — чекбоксы, множественный выбор.

Значение по умолчанию: 0

ANSWERS
array
Массив вариантов ответов, структура описана ниже. Минимум 2 варианта, максимум 10

##### Структура ответа в ANSWERS {#ANSWERS}

Название
тип
Описание
MESSAGE
string
Текст варианта ответа

Примеры кода

  • cURL (Webhook)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"chatId":**put_chat_id**,"IM_MESSAGE_VOTE_DATA":{"QUESTIONS":[{"QUESTION":"**put_question_title**","FIELD_TYPE":0,"ANSWERS":[{"MESSAGE":"**put_message_content**"},{"MESSAGE":"**put_message_content**"},{"MESSAGE":"**put_message_content**"}]}],"ANONYMITY":0,"OPTIONS":0},"templateId":null}' \
    https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/vote.Integration.Im.send
  • cURL (OAuth)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"chatId":**put_chat_id**,"IM_MESSAGE_VOTE_DATA":{"QUESTIONS":[{"QUESTION":"**put_question_title**","FIELD_TYPE":0,"ANSWERS":[{"MESSAGE":"**put_message_content**"},{"MESSAGE":"**put_message_content**"},{"MESSAGE":"**put_message_content**"}]}],"ANONYMITY":0,"OPTIONS":0},"templateId":null,"auth":"**put_access_token_here**"}' \
    https://**put_your_bitrix24_address**/rest/vote.Integration.Im.send
  • JS
    try
    {
        const response = await $b24.callMethod(
            'vote.Integration.Im.send',
            {
                chatId: **put_chat_id**,
                IM_MESSAGE_VOTE_DATA: {
                    QUESTIONS: [
                        {
                            QUESTION: '**put_question_title**',
                            FIELD_TYPE: 0,
                            ANSWERS: [
                                { MESSAGE: '**put_message_content**' },
                                { MESSAGE: '**put_message_content**' },
                                { MESSAGE: '**put_message_content**' }
                            ]
                        }
                    ],
                    ANONYMITY: 0,
                    OPTIONS: 0
                },
                templateId: null
            }
        );

        const result = response.getData().result;
        console.log('Created element with ID:', result);
        processResult(result);
    }
    catch( error )
    {
        console.error('Error:', error);
    }
  • PHP
    try {
        $response = $b24Service
            ->core
            ->call(
                'vote.Integration.Im.send',
                [
                    'chatId' => **put_chat_id**,
                    'IM_MESSAGE_VOTE_DATA' => [
                        'QUESTIONS' => [
                            [
                                'QUESTION' => '**put_question_title**',
                                'FIELD_TYPE' => 0,
                                'ANSWERS' => [
                                    ['MESSAGE' => '**put_message_content**'],
                                    ['MESSAGE' => '**put_message_content**'],
                                    ['MESSAGE' => '**put_message_content**']
                                ]
                            ]
                        ],
                        'ANONYMITY' => 0,
                        'OPTIONS' => 0
                    ],
                    'templateId' => null
                ]
            );

        $result = $response
            ->getResponseData()
            ->getResult();

        echo 'Success: ' . print_r($result, true);
        processData($result);

    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error sending vote message: ' . $e->getMessage();
    }
  • BX24.js
    BX24.callMethod(
        "vote.Integration.Im.send",
        {
            "chatId": **put_chat_id**,
            "IM_MESSAGE_VOTE_DATA": {
                "QUESTIONS": [
                    {
                        "QUESTION": "**put_question_title**",
                        "FIELD_TYPE": 0,
                        "ANSWERS": [
                            {
                                "MESSAGE": "**put_message_content**"
                            },
                            {
                                "MESSAGE": "**put_message_content**"
                            },
                            {
                                "MESSAGE": "**put_message_content**"
                            }
                        ]
                    }
                ],
                "ANONYMITY": 0,
                "OPTIONS": 0
            },
            "templateId": null
        },
        function(result)
        {
            if(result.error())
            {
                console.error(result.error());
            }
            else
            {
                console.dir(result.data());
            }
        }
    );
  • PHP CRest
    require_once('crest.php');

    $result = CRest::call(
        'vote.Integration.Im.send',
        [
            'chatId' => **put_chat_id**,
            'IM_MESSAGE_VOTE_DATA' => [
                'QUESTIONS' => [
                    [
                        'QUESTION' => '**put_question_title**',
                        'FIELD_TYPE' => 0,
                        'ANSWERS' => [
                            ['MESSAGE' => '**put_message_content**'],
                            ['MESSAGE' => '**put_message_content**'],
                            ['MESSAGE' => '**put_message_content**']
                        ]
                    ]
                ],
                'ANONYMITY' => 0,
                'OPTIONS' => 0
            ],
            'templateId' => null
        ]
    );

    echo '<PRE>';
    print_r($result);
    echo '</PRE>';

Обработка ответа

HTTP-статус: 200

{
    "result": {
        "messageId": 23,
        "voteId": 7
    },
    "time": {
        "start": 1754470016.954889,
        "finish": 1754470017.043656,
        "duration": 0.08876705169677734,
        "processing": 0.07431983947753906,
        "date_start": "2025-08-06T11:46:56+03:00",
        "date_finish": "2025-08-06T11:46:57+03:00",
        "operating_reset_at": 1754470616,
        "operating": 0.3257129192352295
    }
}

Возвращаемые данные

Название
тип
Описание
result
object
Корневой элемент ответа. Содержит информацию о номере сообщения и голосования, стурктура описана ниже
time
time
Информация о времени выполнения запроса

Элемент ответа result {#result}

Название
тип
Описание
messageId
integer
Идентификатор отправленного сообщения в чате
voteId
integer
Идентификатор созданного голосования

Обработка ошибок

HTTP-статус: 400

{
    "error": "400",
    "error_description": "Access denied"
}

Возможные коды ошибок

КодОписание
403Создание опроса недоступно
400Введите вопрос и варианты ответов
400Максимальное количество вопросов: 1
400Минимальное количество ответов: 2
400Максимальное количество ответов: 10
400Не удалось сохранить данные опроса. Попробуйте ещё раз
403Недостаточно прав для создания опроса
  • [](./index)
  • [](./vote.attachedvote.download)
  • [](./vote.attachedvote.get)
  • [](./vote.attachedvote.getAnswerVoted)
  • [](./vote.attachedvote.getMany)
  • [](./vote.attachedvote.getWithVoted)
  • [](./vote.attachedvote.recall)
  • [](./vote.attachedvote.resume)
  • [](./vote.attachedvote.stop)
  • [](./vote.attachedvote.vote)

💡 Экспертное мнение и рекомендации

Ключевые выводы по теме «Создать и отправить голосование в чат vote.Integration.Im.send (vote.integrat…»:

Использование современных стандартов D7 при работе с vote.integration.im.send.md позволяет писать чистый, масштабируемый и безопасный код. Не забывайте обрабатывать исключения (try/catch) и проверять права доступа текущего пользователя перед выполнением критических операций.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Related Post

Сбросить параметры карточки элементов crm.item.details.configuration.resetСбросить параметры карточки элементов crm.item.details.configuration.reset

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Сбросить параметры карточки элементов crm.item.details.configuration.reset». Мы подготовили подробный разбор принципов работы и развернутые примеры интеграции.

Удалить компанию crm.company.deleteУдалить компанию crm.company.delete

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Удалить компанию crm.company.delete», разберем архитектурные особенности и предоставим

Создать пользовательское поле для счетов crm.invoice.userfield.addСоздать пользовательское поле для счетов crm.invoice.userfield.add

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Создать пользовательское поле для счетов crm.invoice.userfield.add», разберем архитектурные