Работает только в Telegram.
Компонент Нативный запрос работает также как Запрос API, но настраиваются эти компоненты по-разному.
В отличие от Запроса, в Нативном запросе, пользователю нужно выбрать только Метод и заполнить Тело запроса — для методов, которые отправляют POST, для GET — в поле для тела запроса нужно обязательно вписать пустой объект {}.
Остальные настройки добавятся по умолчанию, в компоненте их видно не будет.
Когда в компоненте выбран Метод запроса, в настройках появляется активная ссылка ведущая на документацию API Telegram выбранного метода.
Телеграм предоставляет большое количество методов, с помощью которых можно взаимодействовать с пользователями бота. Многие из них уже реализованы в конструкторе в виде компонентов, но делать какие-то специфичные вещи можно и с помощью запросов к API.
Для примера, отправим одним сообщением три изображения с помощью Нативного запроса. Метод: sendMediaGroup.
Этим методом можно отправить несколько файлов одного вида: изображений, документов, видео или аудио.
В боте отправленные изображения будут выглядеть так:
Обязательные параметры для Тела запроса:
Напишем Тело запроса с этими параметрами:
{ "chat_id": "{{this_user.platform_id}}", "media":[{ "type": "photo", "media": "https://drive.google.com/file/d/1Y09-df77xdYlpsze2rpqWGCbkms4HNpl/view?usp=sharing"}, {"type": "photo", "media": "https://drive.google.com/file/d/1GXpNm0bqtKB6MuRfMzwxO5Dj3iKQzJgY/view?usp=sharing"}, {"type": "photo", "media": "https://drive.google.com/file/d/1bsjPW2M75yCgeokn3j6_PixQY_hsMUUc/view?usp=sharing"}] }
И добавим его в настройки компонента:
Не забудьте сохраниться.
Теперь при активации компонента бот пришлет сразу три изображения.
Из-за ограничений Telegram, изображения могут обрезаться по горизонтальному формату.
Перешлем сообщение в исходном виде из канала/группы с помощью метода forwardMessage в Нативном запросе.
Таким методом можно воспользоваться, если нужно прислать изображение и текст одним блоком.
В пересылаемом сообщении может быть только одно изображение. Если изображений будет больше — в бот придет только первое.
1. Добавим в группу/канал бота, откуда будет отправляться запрос, администратором со всеми правами.
2. Добавим тело запроса:
{ "chat_id": {{this_user.platform_id}}, "from_chat_id": "@имя_канала", "message_id": "23" }
Где:
Узнать ID сообщения можно, нажав правой клавишей мыши по пересылаемому сообщению в канале/группе и выбрав Копировать ссылку на сообщение.
Получится ссылка вида https://t.me/название канала/23.
23 — это и есть ID сообщения. Добавим это ID в Тело запроса, остальная часть ссылки не нужна.
3. Оформим Нативный запрос в конструкторе.
4. Сделаем сохранение и протестируем бота. Сообщение из группы/канала в бот придет в таком виде:
Если нужно, чтобы сообщение пришло без названия канала, можно воспользоваться методом copyMessage.
Тело запроса для этого метода будет таким же, как в прошлом примере, меняется только Метод запроса.
Теперь в бот придет придет сообщение без отсылки к каналу или группе, откуда сообщение пересылалось.
Пришлем пользователю стикер с помощью метода SendSticker в Нативном запросе.
Таким методом можно воспользоваться, если нужно прислать пользователю стикер сообщением от бота.
1. В компоненте Нативный запрос выберем из выпадающего списка метод запроса SendSticker.
2. Добавим Тело запроса:
{ "chat_id": "{{this_user.platform_id}}", "sticker": "54321" }
Где 54321 — ID отправляемого стикера. Узнать ID любого стикера поможет бот Sticker ID
Такую кнопку можно сделать с помощью метода sendMessage в Нативном запросе.
1. Добавим в Нативный запрос Тело запроса:
{ "platformId":"{{this_user.platform_id}}", "chat_id":"{{this_user.platform_id}}", "text":"Нажмите на кнопку что бы перейти в веб-бота", "reply_markup":{ "inline_keyboard":[ [ { "text":"Перейти", "web_app":{ "url": "https://docs.botmother.ru/article/41067" } } ] ] } }
Где:
reply_markup — настройки кнопки, где:
3. Сделаем сохранение и протестируем бота.
Сообщение из группы/канала в бот придет в таком виде:
Можно добавить в массив объектов еще один объект для второй или третьей кнопки.
Тело запроса для двух кнопок будет выглядеть так:
{ "platformId":"{{this_user.platform_id}}", "chat_id":"{{this_user.platform_id}}", "text":"Нажмите на кнопку что бы перейти в веб-бота", "reply_markup":{ "inline_keyboard":[ [ { "text":"EN", "web_app":{ "url": "https://docs.botmother.com/" } }, { "text":"RU", "web_app":{ "url": "https://docs.botmother.ru/" } } ] ] } }
В качестве URL, который откроется при раскрытии web app, можно использовать ссылку виджета для перехода в поддержку вашего сервиса.
Например, для сервиса Сhatra ссылка будет примерно такой:
https://chat.chatra.io/?isModern=true#hostId=12345&mode=widget&langOverride=ru&lang=ru
Значит, тело запроса будет таким:
{ "platformId":"{{this_user.platform_id}}", "chat_id":"{{this_user.platform_id}}", "text":"Нажмите на кнопку", "reply_markup":{ "inline_keyboard":[ [ { "text":"Поддержка", "web_app":{ "url": "https://chat.chatra.io/?isModern=true#hostId=12345&mode=widget&langOverride=ru&lang=ru" } } ] ] } }
Такой метод поможет и с виджетами других аналогичных сервисов.
Закрепим сообщение вверху чата с помощью метода PinChatMessage в Нативном запросе.
1. В компоненте Нативный запрос выберем из выпадающего списка метод запроса PinChatMessage.
2. Добавим такое Тело запроса, если нужно закрепить сообщение от пользователя:
{ "chat_id": "{{this_user.platform_id}}", "message_id": "{{lastUpdate.update.message_id}}" }
Такое тело запроса подойдет, если нужно закрепить сообщение от бота.
{ "chat_id": "{{this_user.platform_id}}", "message_id": "{{last_telegram_message_id}}" }