Как написать Telegram-бота на Python — Tproger
В этой иструкции разберем процесс создания простого бота-ремайндера, единственная задача которого — напоминать пользователю о важных делах. Это базовая конструкция, которую можно усложнять и менять под свои потребности.
Инструкция подойдет для новичков, которые знают Python на базовом уровне, пробовали писать код и установили на компьютер редактор кода.
Первый этап: подготовка проекта и развертывание окружения
Найдем в поиске Telegram BotFather — официального бота мессенджера, который создает другие боты и управляет ими. В интерфейсе выбираем /start, затем — /newbot, и следом задаем имя и адрес. В этой иструкции это будут Elbrus Reminder и elbrus_reminder_bot соответственно.
После этого BotFather пришлет сообщение с токеном и ссылкой на бот:
Токен нужно хранить в безопасном месте — он дает контроль над ботом. и, как следствие, позволяет получить доступ к данным пользователей.
На время закроем Telegram и создадим на компьютере папку с именем проекта: например, reminder_bot. Откроем папку в среде разработки и создадим рабочий файл с понятным названием — bot.py.
Откроем терминал редактора кода и создадим для проекта новое окружение. В среде разработки с помощью команды python -m venv .venv
создадим папку с окружением .venv
.
Если окружение не активировалось автоматически, можно сделать это вручную, прописав путь к файлу активации в формате source .venv/bin/activate
, где source
— команда языка программирования Bash. Другой вариант — перезапустить среду разработки. Он работает для Visual Studio Code, но нужно предварительно принять предложение редактора привязать среду к папке проекта сразу после создания окружения.
Практика создания нового окружения под каждый проект позволяет повыстить безопасности и стабильность проекта — в окружении вы можете использовать только те библиотеки и их версии, которые требуются в проекте. Если в проекте появятся дополнительные функции, все изменения будут храниться в этом окружении. При этом оно будет изолировано от других окружений и проектов — это повысит безопасность проекта.
Второй этап: подключаем библиотеки
Проект создан и окружение готово: пора переходить к написанию кода. По правилам хорошего тона в первую очередь через import
добавляем несколько предустановленных библиотек Python. При создании бота нам пригодятся logging
и time
, которые отвечают за определение времени и логирование сообщений.
import time import logging
Затем добавим асинхронную библиотеку aiogram, на основе которой будет работать бот. Она, например, определяет, какое сообщение пришло, как его нужно обработать и какие порты нужны. Сначала устанавливаем ее через терминал командой pip install aiogram
, а в редакторе кода пишем следующее:
from aiogram import Bot, Dispatcher, executor, types
Из этой библиотеки нам нужны только отдельные модули и классы — все ее возможности для создания базовой версии бота не пригодятся. Поэтому вместо одиночного import использована команда
.
Когда библиотеки импортированы, создадим переменные с токеном бота и сообщением, которое он будет отправлять пользователю. Вы можете заменить это сообщение на любое другое, которое вам необходимо. Это статические переменные, поэтому их имена написаны капслоком:
TOKEN = "здесьбудетваштокенот от BotFather" MSG = "Программировал ли ты сегодня, {}?"
Токены, ключи и прочие данные для настройки проекта лучше загружать более безопасным способом (например, создавать переменные окружения или файлы конфигурации). Но в данном случае сделаем все в одном файле для наглядности, а примеры более безопасной работы с такими переменными разберем в следующих постах.
Теперь создадим экземпляр класса Bot
, передав ему в качестве аргумента наш токен, и экземпляр класса Dispatcher (dp), который в качестве аргумента получит bot
. В результате получаем связку объекта класса bot
с ключем, который привязан к боту, и диспетчера, который привязан к этому боту:
bot = Bot(token=TOKEN) dp = Dispatcher(bot=bot)
Следующим шагом добавим конструкцию под названием декоратор (massage_handler
) — она помогает получить из диспетчера нужный функционал. В качестве аргумента прописываем команды, которые обрабатывает декоратор — в данном случае это команда /start
, которая запускает бот.
@dp.message_handler(commands=['start'])
Под декоратором прописываем функцию, которая будет обрабатывать команду /start
и определяет логику, в соответствии с которой будет работать бот. Поскольку мы работаем с асинхронной библиотекой, функция тоже должна быть асинхронной. Для этого перед указанием def
добавим ключевое слово async
:
async def start_handler(message: types.Message):
Функция приветствует пользователя и обрабатывает сообщение, которое он отправляет в ответ. Из сообщения можно получить информацию о пользователе, который его прислал, время отправки и его ID.
Создаем переменную и сохраняем в ней user id
:
user_id = message.from_user.id
Затем получаем из сообщения короткое и полное имя пользователя:
user_name = message. from_user.first_name user_full_name = message.from_user.full_name
Для того, чтобы в логах отображалась информация о пользователе, передаем в виде текста ID и полное имя, а также используем возможности библиотеки time
, чтобы определить время, когда писал пользователь:
logging.info(f'{user_id} {user_full_name} {time.asctime()}')
Здесь отойдем в сторону и проверим корректность работы модуля time
. Сделать это можно в терминале: для этого напишем import time
, а затем — time.asctime
Вернемся к коду. Поскольку функция, которую мы используем, асинхронна, вместо обычного для функций return
используем await
:
await message.reply(f"Привет, {user_full_name}!")
Ответить пользователю в боте можно несколькими способами — в данном случае используем reply.
Выше в переменной MSG
мы задали стандартное сообщение: «Программировал ли ты сегодня, {}?». Зададим частоту напоминаний: семь раз каждые семь суток (60х60х24 — количество секунд в одних сутках) с момента отправки команды /start боту от пользователя:
for i in range(7): await asyncio.sleep(60*60*24)
Затем настроим отправку сообщения с указанием имени пользователя в этом же цикле:
await bot.send_message(user_id, MSG.format(user_name))
Третий этап: финал
Переходим к финальной части: в конце скрипта напишем несколько строк. Они могут показаться странными для новичка, но это общепринятая практика, к которой многие программисты прибегают при разработке. В этой строке мы проверяем, равна ли переменная __name__
строке "__main__"
. Это условие всегда будет True, если мы запускаем этот файл как python-скрипт через терминал:
if __name__ == '__main__':
Теперь делаем нашего бота доступным в сети:
executor.start_polling(dp)
Сохраняем файл. Запускаем бота в терминале, открытом в папке проекта, с помощью команды python bot. py
.
Вернемся в BotFather и перейдем по ссылке, которую получили вместе с токеном. Нажимаем «Начать» — готово, бот, написанный меньше, чем в 30 строк, работает.
Так выглядит его код целиком:
import time import logging import asyncio from aiogram import Bot, Dispatcher, executor, types TOKEN = "здесьбудетваштокенот@BotFather" MSG = "Программировал ли ты сегодня, {}?" logging.basicConfig(level=logging.INFO) bot = Bot(token=TOKEN) dp = Dispatcher(bot=bot) @dp.message_handler(commands=["start"]) async def start_handler(message: types.Message): user_id = message.from_user.id user_name = message.from_user.first_name user_full_name = message.from_user.full_name logging.info(f'{user_id} {user_full_name} {time.asctime()}') await message.reply(f"Привет, {user_full_name}!") for i in range(7): await asyncio.sleep(60*60*24) await bot.send_message(user_id, MSG.format(user_name)) if __name__ == "__main__": executor.start_polling(dp)
В следующий раз подробно расскажем, как написать подобный бот на языке программирования JavaScript. Подписывайтесь, чтобы не пропустить инструкцию.
Как создать телеграм-бота на Python: инструкция
Наверняка вам уже приходилось сталкиваться с ботами в Telegram. Боты помогают автоматизировать рутинные задачи как для обычных пользователей (например, боты-планировщики или боты для учета финансов), так и для компаний. Последние могут использовать ботов-рекламщиков, которые занимаются рассылками по клиентской базе, ботов-ассистентов, которые выполняют роль технической поддержки, и так далее.
В этой инструкции опишем процесс создания бота в Telegram на Python. В качестве примера создадим Telegram-бот компании Timeweb Cloud, который будет приветствовать пользователя и предлагать ему перейти на сайт компании.
Как создать бота в Telegram на Python пошаговоШаг 1.
Регистрация бота в BotFatherВ первую очередь зарегистрируйте бота в Telegram. Для этого введите в поисковой строке мессенджера @BotFather и перейдите к нему, как это показано на картинке ниже.
После нажмите кнопку «Запустить» в нижней части окна и выберите в открывшемся списке команду /newbot
. Бот предложит указать имя создаваемого бота. В нашем случае укажем TimewebCloudBot, и его же продублируем в качестве короткого имени.
После этого бот будет создан.
Надежно сохраните токен бота — в будущем он понадобится для авторизации и работы с ботом.
Шаг 2. Подготовка необходимых компонентов
Переходим к подготовке необходимых компонентов. На вашем компьютере должен быть установлен Python и среда разработки (в нашем случае это PyCharm).
В качестве библиотеки мы будем использовать pyTelegramBotAPI. Установить ее можно, с помощью следующей команды:
pip install pyTelegramBotAPI
Все необходимые компоненты установлены. Переходим к следующему шагу.
Шаг 3. Написание кода
В первую очередь подключите установленную библиотеку и уникальный токен, о котором мы говорили выше, а также импортируйте типы, которые потребуются для работы кнопок (о них расскажем немного позже).
import telebotbotTimeWeb = telebot.TeleBot('Уникальный токен')
from telebot import types
Вместо ‘Уникальный токен’
укажите токен, который вы получили при регистрации бота.
Теперь реализуем так называемые обработчики сообщений. Они отвечают за фильтрацию входящих сообщений бота и вызов указанной функции для этих сообщений.
С помощью кода ниже реализуйте команду /start
, которая будет отвечать за запуск бота:
@botTimeWeb.message_handler(commands=['start'])
def startBot(message):
first_mess = f"<b>{message.from_user.first_name} {message.from_user.last_name}</b>, привет!\nХочешь расскажу немного о нашей компании?"
markup = types. InlineKeyboardMarkup()
button_yes = types.InlineKeyboardButton(text = 'Да', callback_data='yes')
markup.add(button_yes)
botTimeWeb.send_message(message.chat.id, first_mess, parse_mode='html', reply_markup=markup)
Разберем написанный выше код по порядку.
Первые две строчки объявляют метод обработки входящих сообщений. В нашем случае в качестве параметра передается команда /start
.
Далее объявляется переменная first_mess
, хранящая указанную строку. Она будет отображаться пользователю после вызова команды /start
. Здесь также используется объект
, необходимый для определения имени (first_name
) и фамилии (last_name
) пользователя.
Далее следуют 3 строчки кода, отвечающие за добавление кнопки, которая в будущем будет перенаправлять пользователя на следующее сообщение. Тип данной кнопки — Inline. Это значит, что такая кнопка будет отображаться прямо под сообщением. Для ее создания необходимо использовать метод InlineKeyboardButton
. Параметр text
отвечает за имя кнопки, а callback_data
— за возвращаемую строку при нажатии. Второй параметр понадобится для реализации функционала кнопки.
И наконец, добавляется метод send_message
, необходимый для отправки сообщения пользователю. У него указаны 4 параметра:
message.chat.id
отвечает за синхронизацию сообщения с чатом бота;-
first_mess
передает ранее указанное сообщение; parse_mode
необходим для указания режима разметки сообщений;reply_markup
отвечает за добавление созданной кнопки.
Сейчас кнопка создана, но при ее нажатии ничего не происходит. Необходимо реализовать её функционал. Для этого используем следующий фрагмент кода:
@botTimeWeb.callback_query_handler(func=lambda call:True)
def response(function_call):
if function_call.message:
if function_call. data == "yes":
second_mess = "Мы облачная платформа для разработчиков и бизнеса. Более детально можешь ознакомиться с нами на нашем сайте!"
markup = types.InlineKeyboardMarkup()
markup.add(types.InlineKeyboardButton("Перейти на сайт", url="https://timeweb.cloud/"))
botTimeWeb.send_message(function_call.message.chat.id, second_mess, reply_markup=markup)botTimeWeb.answer_callback_query(function_call.id)
В начале объявляется метод для обработки запросов обратного вызова. Выполняется проверка на соответствие строки, указанной после ==
и возвращенной после нажатия кнопки. Так как ранее мы указали значение параметра callback_data = 'yes'
, то проверка пройдет успешно.
После проверки реализован функционал кнопки. Переменная second_mess
хранит текст ответного сообщения. А далее описана реализация кнопки, которая хранит ссылку на сайт компании Timeweb Cloud.
Последним шагом будет указать боту на то, что обработка команды закончена. Для этого указываем команду answer_callback_query
.
После всех методов необходимо добавить последнюю строчку, которая отвечает за непрерывное продолжение работы бота:
botTimeWeb.infinity_polling()
Бот создан. Сохраните файл с кодом и переходите к его запуску.
Шаг 4. Запуск бота
Откройте терминал и выполните запуск проекта:
python main.py
Теперь бот запущен, можно переходить в Telegram и тестировать его.
Для дополнительной безопасности и стабильности рекомендуется запускать бота на виртуальном сервере. Арендовать надежный облачный сервер можно на Timeweb Cloud.
Шаг 5. Тестирование бота
Откроем Telegram и перейдем к созданному боту, используя поиск и короткое имя, которое указывалось на первом шаге.
Для начала работы нажмем «Запустить» внизу экрана.
Бот обработает команду и выведет приветственное сообщение.
Для продолжения работы с ботом нажмем кнопку под сообщением.
Бот среагирует на нажатие кнопки и выведет следующее сообщение. Под ним также отображается кнопка, которая содержит ссылку на сайт компании. Проверим ее работоспособность.
В ответ на нажатие кнопки бот предложит перейти по ссылке. Нажимаем «Перейти» и переходим на сайт компании.
Заключение
Мы рассмотрели, как создать бота в Telegram на Python пошагово — от его регистрации до запуска. Вы можете не останавливаться на достигнутом, а подробно изучить возможности используемой библиотеки и продолжить наполнять свой первый бот необходимым функционалом.
бесплатных чат-ботов Telegram с конструктором чат-ботов
Наши клиенты любят нас
Как подключить чат-бота Telegram
Создайте нового бота с помощью @BotFather, отправив команду /newbot . Если у вас уже есть бот, получите его токен командой /token . Скопируйте этот токен и добавьте в свой аккаунт SendPulse.
Подробнее →Теперь вы готовы! Ваш Telegram-бот подключен. Пришло время настроить автоответы.
Отправляйте массовые сообщения своим подписчикам Telegram
Добавляйте текст, изображения, файлы и кнопки в свои сообщения. Когда кампания будет готова, вы можете запланировать ее отправку на определенный день и время. После отправки система показывает количество отправленных и открытых сообщений и перенаправляет на ваш сайт.
Принимайте платежи
Подключите искусственный интеллект к вашему чат-боту
Используя прямую интеграцию с языковой моделью ChatGPT от OpenAI, ваш бот может общаться с подписчиками как человек.
ПодробнееСегментация и управление вашей аудиторией
Запустите кампанию чат-бота для всего списка или только для выбранных групп подписчиков. Наша функция сегментации с тегами и переменными поможет вам отправить правильное сообщение нужной аудитории.
Управляйте чат-ботами на своем смартфоне
Установите приложение и отправляйте быстрые ответы своим подписчикам чат-бота в Instagram, WhatsApp, Telegram и Facebook, работайте с данными подписчиков и анализируйте статистику чат-бота.
Виджеты подписки
Создайте список подписчиков Telegram на своем сайте
Разместите виджет на своем сайте, чтобы помочь посетителям подписаться на вашего бота, не покидая страницу. Если у вас есть чат-боты в нескольких мессенджерах, вы можете создать для них один виджет подписки. Этот виджет позволяет пользователям выбирать предпочитаемый канал связи: Instagram, WhatsApp, Facebook или Telegram.
Узнать больше →Зачем нужен Telegram-бот?
Часто задаваемые вопросы
🤖 Что такое чат-бот Telegram?
Это полезный инструмент для любого бизнеса и маркетолога. Его цель — предоставить пользователям гибкие ответы на их вопросы через Telegram. Чем больше запросов сможет обработать ваш чат-бот, тем живее и эффективнее будет ваша беседа.
❓ Зачем мне создавать чат-бота?
Он помогает автоматизировать обычные задачи, собирать данные о ваших клиентах и увеличивать ваше присутствие в Интернете. Клиентам часто нужна ваша помощь в нерабочее время, и чат-боту пора выполнять тяжелую работу. Он может отвечать на часто задаваемые вопросы, помогать клиентам с размещением заказов и даже организовывать встречу с врачом.
⚙️ Как работает чат-бот Telegram?
Вам необходимо создать список частых вопросов, которые пользователи смогут задавать вашему боту. Чем больше команд вы зададите, тем умнее будет ваш бот. После того, как пользователь взаимодействует с вашим чат-ботом, он общается с ним в соответствии с заранее определенным сценарием, основанным на настроенных вами триггерах и ключевых словах.
📲 Как создать чат-бота в Telegram?
Создайте бота с помощью @BotFather, скопируйте значение токена и вставьте его в свой аккаунт SendPulse.
✔️ Как составить список подписчиков Telegram?
Вы можете разместить виджет подписки на своем сайте, добавить прямую ссылку на своего чат-бота Telegram или поделиться им в социальных сетях.
💸 Сколько стоит создать чат-бота?
Вы можете нанять разработчика для создания своего чат-бота, начиная с 200 долларов, но помните, что его «интеллект» влияет на общую стоимость и время, необходимое для его создания. С помощью SendPulse вы можете создать интеллектуального бота для Telegram без какой-либо технической подготовки и бесплатно.
✉️ Сколько сообщений я могу отправить бесплатно?
Вы можете бесплатно отправлять своим подписчикам до 10 000 сообщений в месяц. Нужно больше? Выберите платный план, начиная с $ 9,85 в месяц.
🛠️ Как мне включить чат-бота Telegram в свою многоканальную стратегию?
Просто выберите любой способ. Поощряйте получателей электронной почты подписываться на вашего чат-бота Telegram, чтобы первыми узнавать о горячих предложениях. При общении с клиентом через мессенджер попросите его оставить свой номер телефона для отправки трек-номера или деталей бронирования. Если вы выступаете на конференции, отобразите имя своего чат-бота, чтобы упростить контакт клиента с вашим брендом. С помощью SendPulse вы можете использовать Telegram, электронную почту, SMS, веб-push-уведомления, Instagram, Whatsapp и Facebook Messenger для взаимодействия со своей аудиторией.
Узнайте больше о чат-ботах Telegram
Подробнее →
Подробнее →
Подробнее →
Создайте чат-бота в Telegram бесплатно!
Вы можете отправлять до 10 000 бесплатных сообщений в месяц своим подписчикам с помощью SendPulse
ЗарегистрироватьсяКак создать автоматизированный поток для чат-бота Telegram
Построитель потока — это основной инструмент для настройки вашего бота, который будет приветствовать новых подписчиков, помогать пользователям, продавать товары и уведомлять менеджера о вопросах пользователей в чат-боте. Кроме того, чат-бот может собирать информацию и отправлять ее в вашу систему для дальнейшего использования.
Все, что вам нужно, это создать ключевые слова, спроектировать структуру бота и перетащить элементы в конструктор потоков SendPulse.
Ниже вы можете найти подробное оглавление. Используйте его как карту для удобной навигации, чтобы найти все возможные триггеры и элементы, чтобы начать добавлять их в поток вашего бота.
Выбор триггера для вашего потока
По умолчанию есть потоки «Приветствие», «Стандартный ответ» и «Отписаться от бота». И вы можете создавать свои собственные новые триггеры, чтобы получить больше функциональности.
Выберите своего бота. Перейдите на вкладку «Структура бота» и выберите триггер.
Потоки приветственных сообщений
Поток запускается после того, как пользователь подпишется на вашего чат-бота, т.е. после нажатия кнопки «Старт».
Пользователи могут подписаться, перейдя по ссылке на вашего бота https://t. me/username, найдя бота в приложении Telegram по его @username или используя виджет веб-сайта.
Этот поток знакомит пользователей с вашим ботом. Здесь вы можете написать о своем боте и его особенностях — чем бот может быть полезен, какую информацию может предоставить бот, как часто бот будет отправлять сообщения и содержание этих сообщений.
Стандартный ответ
Поток будет запускаться в ответ на любой вопрос пользователя, выходящий за рамки сценария вашего бота, или путем отправки изображения боту. Здесь вы можете добавить сообщение с информацией, с которым менеджер свяжется в рабочее время и ответит пользователю.
Вы можете установить интервал охлаждения для запуска потока от 1 минуты до 24 часов, чтобы ваш бот не запускался во второй раз в течение указанного интервала.
Отписка от бота
Это поток с одним элементом сообщения, который запускается после того, как пользователь отпишется с помощью команды /stop
или /unsubscribe
.
Триггерный поток
Вы можете добавить ключевые слова — триггеры, на которые ваш бот будет реагировать и запускать ваш поток.
Нажмите «Создать новый триггер». Напишите свою команду, используя одно или несколько слов. Например, вы можете использовать слова «Заказ», «Билеты», «Цена» или «Доставка».
Если пользователь вводит часть ключевого слова, связанного с вашей командой, ваш бот предложит подсказки, такие как кнопка с названием вашего триггера. Когда пользователь нажимает кнопку, поток запускается.
Чтобы отключить эту функцию, перейдите в настройки чат-бота и выберите параметр «Отключить предложения бота, когда введенные сообщения не соответствуют ключевому слову».
Создайте свой поток
Важно тщательно продумать архитектуру и логическую структуру вашего бота. Хорошо спроектированный бот позволит пользователям легко получить ответ на свой вопрос или успешно оформить заказ, предоставив необходимую информацию.
Сформулируйте задачи бота, разделите его функции на секции, продумайте, как вы будете соединять элементы, и начните создавать поток вашего бота с помощью нашего конструктора перетаскивания.
Все элементы, доступные в построителе, являются необязательными, вы даже можете остановить построение после первого элемента сообщения.
Мы рекомендуем ознакомиться с различными видами чат-ботов и стратегиями их создания в нашем блоге.
Старт
Вы можете выбрать первый элемент, запускающий поток: «Сообщение», «Фильтр», «Рандомизатор» и «Запрос API».
Например, с помощью элементов «Фильтр» и «Запрос API» вы можете проверить данные абонента и персонализировать свое общение, запустив свой поток только для тех пользователей, у которых есть или не имеют запрашиваемые данные или разветвить свой поток и отправить разные Сообщения. С помощью элемента «Рандомизатор» вы можете разнообразить автоответы вашего чат-бота или создать A/B-тест.
Чтобы сделать элемент начальным, подключите нужный элемент к элементу «Старт».
Чтобы увидеть, какой триггер запускает ваш поток, нажмите на кнопку «Старт».
Элемент «Сообщение»
С помощью элемента «Сообщение» вы можете создать сообщение любого типа и добавить в него различные блоки: текст, видео, галерею, кнопки, запрос пользовательских данных и так далее.
Вы можете добавить элемент «Сообщение» в любую часть потока. Например, в последнем блоке вашего потока вы можете поблагодарить своих пользователей, подтвердить их заказ и отправить информацию из собранных вами переменных, спросив, верна ли информация.
Текст
В элементе «Сообщение» выберите тип текстового элемента и добавьте текст вашего сообщения. Кроме того, вы можете добавлять эмодзи и переменные, чтобы персонализировать свои сообщения.
Чтобы добавить переменную, нажмите {} в правом углу текстового блока и выберите переменную, которую хотите добавить, из раскрывающегося меню. Если у вас есть значение этой переменной в контактной информации пользователя, он получит сообщение с заполненным значением.
Вы можете добавить следующие типы переменных:
- Пользовательские переменные для контактов . Вы можете передавать переменные, когда пользователь подписывается на вашего чат-бота. Установите и обновите переменные вручную в разделе «Аудитория». Задавайте и обновляйте переменные автоматически в потоке с помощью элементов «Действие — установить переменную», «Ввод пользователя» и «Запрос API».
- Системные переменные . Вы можете вставить текст последнего сообщения от вашего подписчика с помощью кнопки
last_message
переменная. Вы также можете добавить идентификатор подписчика, используяcontact_id
, и идентификатор подписчика Telegram, используяtelegram_id
. - Глобальные переменные . Вы можете создавать свои собственные переменные в настройках вашего бота и использовать сообщения с предопределенными значениями, которые будут доступны всем вашим подписчикам. По умолчанию доступны
$bot_name
,$bot_id,
и$current_date
.
Вы также можете отформатировать текст, чтобы лучше визуализировать и выделить информацию.
Кнопки
Вам нужно добавить кнопку или элемент пользовательского ввода в элемент сообщения, если вы хотите соединить его с другими элементами в вашем потоке. Это один из самых важных элементов для общения с вашими пользователями — кнопки привлекают пользователей и позволяют им выбрать направление для вашего бота, чтобы перевести их к следующей части вашего потока.
Чтобы добавить кнопку, нажмите + Добавить кнопку . Выберите тип кнопки: «Продолжить поток», «Ссылка» или «Оплата».
Назовите вашу кнопку в первом поле. Обратите внимание, вы ограничены 20 символами. Кроме того, вы можете добавить эмодзи в текст кнопки.
Текст на кнопке должен быть легко читаемым — пользователям важно понимать, что произойдет, когда они нажмут на кнопку, и знать, что конкретно им нужно выбрать. Убедитесь, что следующий элемент в вашем потоке соответствует тому, что кнопка говорит, что он будет делать, чтобы поддерживать логику вашего бота.
К кнопке с типом «URL» также можно прикрепить ссылку на сторонний ресурс.
Чтобы пользователь мог продолжить разговор, нажав на кнопку ссылки, необходимо активировать опцию «Отслеживание ссылок» в настройках чат-бота на вкладке «Общие».
Также для типа кнопки «URL» можно добавить ссылку на веб-приложение, например, одностраничный интернет-магазин. Установите флажок «Открыть во всплывающем окне веб-приложения», чтобы открыть всплывающее окно с указанной ссылкой на приложение.
Вы можете создать интернет-магазин с товарами, корзиной и формой сбора данных и добавить ссылки на кнопки Telegram. Пользователи могут нажимать на них и совершать покупки в отдельном окне.
Вы можете установить JS-код Telegram на свою страницу — он работает с данными, передаваемыми из мессенджера, включая информацию о подписчиках.
Вы можете добавить до 13 кнопок, а для типа «Продолжить поток» и выбрать наиболее удобную раскладку — от 1 до 4 в ряд.
Для пользователя кнопки будут выглядеть так (ниже вы увидите «1 подряд» и «2 подряд»):
Мы рекомендуем добавлять кнопки «Назад» и «Вернуться к основному» после всей информации, которую вы добавляете, чтобы пользователи могли изменить свой выбор и выбрать другой путь в вашем потоке. Это предотвращает попадание в ловушку или нарушение логики вашего бота одним сообщением.
Быстрые ответы (ответ с клавиатуры)
Вы также можете добавить другой тип кнопок — «Быстрые ответы» (предустановленные ответы для пользователей чат-бота), которые не сохраняют пользовательские данные (как они сохраняются в функции «Пользовательский ввод»), но вы можете использовать их для расширения количества кнопок и свяжите каждую кнопку со следующей ветвью вашего сценария.
При включении переключателя «Ждать ответа абонента» кнопки быстрого ответа, не привязанные к пользовательскому вводу, будут отключены. Кнопки быстрого ответа можно использовать только один раз — как быстрые ответы на ввод пользователя или как кнопки ответа с клавиатуры.
Аналогичным образом, вы можете использовать кнопки в качестве дополнительного меню и улучшить навигацию для своего чат-бота.
Чтобы добавить кнопки быстрого ответа, нажмите «Быстрые ответы» в панели редактирования элемента «Сообщение» и введите название кнопки: эмодзи или текст до 20 символов. Чтобы заменить динамические значения, вставьте имя переменной, хранящейся в аудитории, как {{your_variable}}
. Нажмите «Enter», чтобы сохранить кнопку.
Кнопки быстрого ответа отображаются пользователю сразу под полем ввода текста. Пользователи могут скрывать кнопки и показывать их, щелкая в поле ввода текста по соответствующему значку, расположенному справа.
Для пользователя кнопки будут отображаться следующим образом:
Вы можете комбинировать кнопки «Быстрый ответ» и обычные кнопки, но в этом случае пользователи получат дополнительное смайл-сообщение.
После отправки следующего сообщения быстрые ответы исчезают. Для быстрого получения сообщения с этими кнопками рекомендуем создать триггер и поток на этот триггер. Затем поместите поток в меню, которое всегда показывается пользователю и расширяется при нажатии значка «/»
Изображения
Разнообразьте свои сообщения, используя визуальный контент, связанный с вашим текстом.
Нажмите кнопку Выберите файл , чтобы загрузить изображение с вашего компьютера или устройства, или перетащите файл в поле загрузки.
Ограничений на размер изображения нет, но учтите, что разрешение изображения для Telegram будет 500 пикселей по ширине и 200 пикселей по высоте.
Чтобы загрузить изображение по ссылке, выберите в выпадающем меню пункт «Загрузить изображение по URL» и укажите ссылку на изображение в поле.
Вы также можете указать динамический путь к образу. Например, с помощью элемента «Запрос API» или из события а360, запуская поток через API, можно отправить картинку товара и использовать эту переменную в следующем сообщении, выводя клиенту данные о заказе.
Для этого выберите переменную или укажите путь в формате JSON в поле и передайте путь к изображению в значении переменной. Таким образом, каждый клиент получит изображение согласно своему заказу.
Вы также можете добавить подпись и отправить информацию пользователю в одной карточке сообщения. Подпись не может быть длиннее 1024 символов. Вы также можете разбить его на несколько строк и добавить эмодзи, ссылки и переменные.
Карусель
Доступно в тарифном плане Pro и выше
В элементе «Сообщение» нажмите Добавить и выберите «Карусель». К каждой карточке можно добавить изображение, до 3 кнопок, название карточки (до 32 символов) и краткое описание (до 80 символов).
Чтобы добавить новую карточку в карусель, нажмите значок «+». К одному сообщению можно добавить до 10 карточек.
Telegram не имеет стандартного функционала карусели. Ваша карусель будет отображаться как одно сообщение с правой и левой кнопками, которые пользователи должны нажать, чтобы увидеть все ваши карточки.
Файл
Вы можете добавлять файлы любого формата, кроме исполняемых файлов размером до 20 МБ. Прикрепите билеты, карты, чек-листы, инструкции или другие дополнительные материалы.
Щелкните Выберите «Файл », чтобы загрузить файл с компьютера или устройства, или перетащите файл в поле загрузки.
Чтобы загрузить файл по ссылке, выберите в раскрывающемся меню «Загрузить файл по URL» и укажите ссылку на файл в поле.
Вы также можете указать динамический путь к файлу. Например, если вы используете элемент Запрос API или запускаете поток из события A360 или через запрос API, вы можете отправить файл и использовать эту переменную в следующем сообщении при отображении данных заказа клиенту.
Для этого выберите переменную или укажите путь JSON в поле и передайте путь к файлу в значении переменной. Таким образом, каждый клиент получит файл, связанный с его заказом.
Медиа: «Аудио» и «Видео»
Доступно в тарифном плане Pro и выше
Вы также можете добавить аудио- и видеосообщения в свой сценарий потока. Максимальный размер загружаемого файла — 20 МБ.
Таким образом, вы можете прикреплять видеолекции и голосовые консультации прямо в боте, не отправляя пользователя на сторонние ресурсы.
Задержка
Разделяйте длинные тексты на абзацы до 4 строк с помощью элемента «Задержка». Этот элемент будет имитировать набор текста, показывая анимацию набора текста, и даст вашему пользователю отдохнуть перед следующим сообщением.
Нажмите кнопку «Добавить» и выберите элемент «Задержка». Введите значение в секундах — от 1 до 5.
Пользовательский ввод
Вы можете собирать информацию от пользователей и сохранять ее в переменной для использования в будущем. Пользователи могут вводить любое значение, и вам нужно только настроить тип проверки для этого значения, например, строка (для текстовых значений), число, дата, номер телефона, адрес электронной почты, URL-адрес, регулярное выражение, геолокация или изображение или документ.
Активировать «Ждать ответа абонента». Выберите тип проверки, добавьте предупреждающее сообщение для пользователей, которые вводят неправильное значение, и выберите переменную, в которой вы хотите хранить информацию.
Геолокация работает только в мобильном приложении Telegram.
Полученный адрес электронной почты, номер телефона и другие данные пользователя сохраняются в автоматически сгенерированном списке рассылки нашей службы электронной почты.
Вы также можете выбрать период ожидания ответа от пользователя. Если пользователь не отвечает в течение выбранного времени, срок ожидания ответа от пользователя истекает, и чат-бот больше не будет проверять введенные данные на достоверность, чтобы записать ответ пользователя.
Кроме того, под сообщением можно добавить кнопки быстрого ответа, чтобы пользователи могли выбирать из предопределенных ответов вместо того, чтобы вводить свои собственные.
Для этого нажмите на кнопку «Быстрые ответы» в окне элемента «Ввод пользователя» и введите значения для кнопок. Быстрые ответы исчезают, когда пользователь или бот отправляет следующее сообщение.
Подвижные элементы
По умолчанию каждый добавляемый элемент помещается в конец элемента сообщения, над которым вы работаете. Наведите курсор на элемент, который хотите переместить вверх или вниз, и нажмите соответствующую кнопку.
Продолжая поток
Вы можете подключить следующий элемент после элемента «Сообщение» с помощью кнопки или функции «Ввод». Вы также можете продолжить свой поток, не дожидаясь ответа пользователя. Мы рекомендуем использовать его с элементом «Пауза», чтобы проверить, взаимодействовал ли подписчик с потоком и отправить сообщение через определенное время.
При планировании сценария потока имейте в виду, что вы не можете одновременно продолжить поток с помощью соединителя «Продолжить» и использовать быстрые ответы.
Соединительные элементы
Перетащите линию от синей капли одного элемента к другому элементу, чтобы соединить их.
Дважды щелкните по строке, и вы увидите кнопку для удаления соединения.
Отсоединенные элементы будут выделены желтым цветом, помните, что вам нужно связать его с другим элементом.
Элементы с пустыми полями будут выделены красным цветом, напоминая о необходимости заполнения полей. Например — если вы добавили кнопку, но не ввели для нее текст или использовали элемент ссылки, но не ввели URL. Вы не сможете сохранить поток, пока не заполните эти поля.
Элемент «Действие»
Элемент Action виден только вам. Выберите элемент на панели слева и перетащите его после отслеживаемого блока.
Затем выберите действие, которое вы хотите создать:
Открыть чат | Открыть чат с абонентом в разделе «Беседы» |
Отписаться от бота | Отписать пользователя от массовых и автоматических сообщений |
Добавить или Удалить теги | Присвоить тег подписчику, удалить тег, присвоенный пользователю |
Добавить переменную | Установить значение переменной, которое будет присвоено подписчику или обновлено. Вы также можете создать новую переменную |
Отправить веб-перехватчик | Отправить запрос POST с данными пользователя на ваш URL |
Создать сделку | Создать сделку в CRM при выполнении определенного действия, например, при нажатии кнопки «Купить» |
Блокировка или разблокировка в группе или канале | Заблокировать или разблокировать абонента в выбранной группе или канале |
Уведомить меня | Отправить сообщение от имени вашего чат-бота в системный чат-бот или группу Telegram |
Элемент «поток»
Вы можете упростить структуру своего бота и переместить своего пользователя в другой поток.
Для этого добавьте элемент, затем выберите элемент «Поток» и выберите поток, который хотите связать, из раскрывающегося списка.
Элемент «Поток» будет последним элементом в этой ветке существующего потока. Вы не можете связать его с другим элементом, чтобы продолжить исходный поток.
Элемент «Фильтр»
Сегментация клиентов на основе их личных данных и предыдущих полученных сообщений. Выберите элемент на левой боковой панели и перетащите его после элемента, который запустит ветвление вашего скрипта.
Затем выберите само условие. Комбинируйте условия, добавляя операторы «любой» или «все», или добавляйте независимые дополнительные условия.
Читайте также: Как использовать элемент «Фильтр» в конструкторе чат-ботов.
После добавления условий добавьте дополнительные элементы потока к каждому из параметров элемента фильтра, если условие выполняется (зеленая точка) или не выполняется (красная точка).
Элемент «Пауза»
Это период, в течение которого абоненту не отправляются автоматические сообщения. Пауза может быть установлена в минутах, часах или днях.
Вы можете сделать паузу между ними, используя опцию «Период времени», или до определенного времени, используя опцию «До даты» или «До времени».
Выберите опцию «Период времени» и установите паузу между отправкой элементов потока от 1 минуты до 24 часов. Используйте его в потоке, например, чтобы разогреть клиента. Через указанное время будет отправлено следующее сообщение.
При выборе паузы более 1 дня между элементами можно установить время, в которое будет отправлено сообщение. Система считает на следующий день любое время после 00:00 по часовому поясу, установленному в настройках личного кабинета.
Также вы можете выбрать «До даты» или «До времени» и установить отсрочку до определенного времени. Например, вы можете использовать эту опцию, чтобы указать рабочие часы или рекламные часы.
Также с помощью элемента «Пауза» можно задать условие выполнения следующего элемента потока: всегда или при неактивности подписчика.
Элемент «Запрос API»
Доступно в тарифном плане Pro и выше
Отправка запросов на сторонний сервер для создания объектов или получения данных. Получайте данные и используйте их в сообщениях чат-бота.
Полученные данные можно сохранить в переменную или добавить в сообщение как JSONPath.
Перетащите элемент «Запрос API» в рабочую область, подключите его к элементу, после чего хотите получить данные. Выберите тип запроса и введите URL-адрес для отправки запроса.
После проверки запроса и получения успешного ответа настройте параметры сопоставления. Если вам нужно сохранить значение из ответа на переменную, выберите ключ из полученного запроса и переменную для сохранения. Если вы хотите использовать полученное значение один раз, не сохраняя его в переменную, скопируйте {{$ ['somekey'] ['nestedkey']}}
и используйте его в следующем элементе сообщения.
Подробнее: Как отправлять и получать данные из внешних источников
Элемент «Случайный выбор»
Случайным образом отправляйте элементы из сценария чат-бота для A/B-тестирования, создания викторин и многого другого. Вы можете настроить размер группы получателей для каждого параметра, отправлять случайную информацию и тестировать различные сценарии чат-ботов.
Перетащите элемент «Случайный выбор» в рабочую область, соедините его с элементом, от которого начинается ответвление скрипта.
Подробнее: Как использовать элемент «Рандомизатор».
Сохраните и запустите свой поток
Когда вы закончите создание своего потока и просмотрите все элементы, сохраните свой поток перед выходом. Нажмите Сохранить и отправьте себе , чтобы протестировать поток и проверить, все ли работает правильно.
Вы также можете сохранить обновленную версию потока, оставив текущую версию без изменений. Для этого нажмите Сохранить как новый поток . Новый поток будет сохранен в разделе «Потоки».
Примечание. В вашем потоке должен быть хотя бы один элемент «Сообщение» или «Действие».
После этого вы можете выйти из потока, нажав Сохранить и выйти .