Инструкция
🔹 Введение
Telesend — это инструмент для создания кастомных рассылок в Telegram-ботах, который:
- Позволяет отправлять сообщения не только всем подряд, но и определённым сегментам пользователей.
- Работает через Telegram-бота с интеграцией SDK по API.
🟦 Шаг 1. Создание проекта
- Перейдите на сайт Telesend и зарегистрируйтесь или войдите в аккаунт.
- Нажмите кнопку “Создать проект”.
- Укажите:
- Название проекта (например: “Мой обучающий бот”)
🟦 Шаг 2. Подключение SDK к проекту
🟦 Шаг 2.1. Установка SDK и получения API ключа
- Найдите кнопку “Редактировать” и скопируйте ваш API ключ в открытом проекте
- Открываем консоль и переходим в директорию с проектом
- Установка SDK: Пишем команду ниже в консоли директории с проектом
npm i telesend-server-sdkpnpm add telesend-server-sdkyarn add telesend-server-sdkpip install telesend-server-sdk- Инициализируйте SDK:
import { TelesendClient, composeMessage } from 'telesend-server-sdk';
const client = new TelesendClient({ apiKey: 'your-api-key', // Ваш API ключ callbackHookSendMessage: async () => { // TODO: Расскажем позднее }});from telesend.client import TelesendClient, compose_messagefrom telesend.types import TelesendClientConfig, MessageQueueItem
# Функция для отправки сообщения в Telegramasync def send_telegram_message(message_data: MessageQueueItem): print('TODO: Расскажем позднее')
# Создаем конфигурацию клиентаconfig = TelesendClientConfig( api_key="ваш_api_ключ", callback_hook_send_message=send_telegram_message)
# Инициализируем клиентclient = TelesendClient(config)🟦 Шаг 2.2. Идентификация пользователей
- Идентификация новых пользователей
Если в вашем сервисе появляется новый пользователь или нужно обновить его данные (например, изменился язык или имя), система Telesend должна об этом узнать. Для этого в вашем коде используется команда
client.identify().
await client.identify({ id: '123456789', username: 'username', firstName: 'Имя', lastName: 'Фамилия', isPremium: false});from telesend.types import UserDetails
# Идентификация пользователяclient.identify(UserDetails( id="123456789", username="username", first_name="Имя", last_name="Фамилия", is_premium=False))Как это работает
- Вы передаете в
client.identify()информацию о пользователе:- Идентификатор (уникальный номер/логин из вашей системы)
- Имя, контакты, другие данные (например, подписки)
- Telesend запоминает эти данные и связывает их с вашим ботом.
Зачем это нужно:
- Чтобы отправлять сообщения конкретному человеку.
- Чтобы обновлять информацию, если пользователь сменил данные.
Подробнее: Документация по идентификации
-
Миграция пользователей
Telesend не знает про пользователей которые проявили активность до интеграции сервиса, поэтому существует механизм миграции пользователей через выгрузку пользователей в CSV-файлы.
Формат CSV:
— Это таблица, где каждая строка — это данные одного пользователя, а колонки — поля (например, имя, ID и т.д.).
— Обязательная колонка:
telegramId(уникальный ID пользователя в Telegram).— Дополнительные колонки:
username,firstName,lastName,isPremium,createdAt.Пример CSV-файла:
telegramId,username,firstName,lastName,isPremium,createdAt1234567890,testuser,Test,User,true,2025-06-011234567891,testuser2,Test,User2,false,2025-06-02Пояснение:
isPremium— указывает, есть ли у пользователя подписка Telegram Premium (true/false).createdAt— дата регистрации пользователя в вашей системе (в форматеГГГГ-ММ-ДД).
Что можно делать с CSV:
- Импорт: Загрузить файл в Telesend, чтобы добавить или обновить данные пользователей.
- Экспорт: Скачать CSV-файл с текущими данными пользователей для резервного копирования или анализа.
🟦 Шаг 2.3. Механизм рассылки (Интеграция с Telegram)
Чтобы ваш бот мог рассылать сообщения через Telegram, нужно добавить в код специальную инструкцию — функцию callbackHookSendMessage.
Как это сделать:
- В вашем коде есть объект (набор настроек) для работы с Telesend — его называют «клиент».
- В этот объект нужно добавить метод
callbackHookSendMessage, который будет отправлять сообщения через Telegram.
Что это значит:
- Telesend не отправляет сообщения сам. Он передает их вашему боту, а бот — пользователям.
callbackHookSendMessage— это «мост» между TeleSend и Telegram. В нем вы прописываете, как именно бот должен отправлять сообщения (например, через API Telegram).
Пример реализации колбэка для отправки сообщений:
async function sendTelegramMessage(payload: MessageQueueItem) { const { type, body } = composeMessage(payload)
const response = await fetch(`https://api.telegram.org/bot${BOT_TOKEN}/${type}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body) })
if (!response.ok) { const errorData = await response.json() throw new Error(JSON.stringify(errorData)) }}import requestsimport jsonfrom telesend.client import TelesendClient, compose_messagefrom telesend.types import TelesendClientConfig, MessageQueueItem
# Функция для отправки сообщения в Telegramdef send_telegram_message(message_data: MessageQueueItem): message_format = compose_message(message_data)
method = message_format["type"] body = message_format["body"]
response = requests.post( f"https://api.telegram.org/bot{BOT_TOKEN}/{method}", json=body )
if not response.ok: error_data = response.json() raise Exception(json.dumps(error_data))🟦 Шаг 3. Базовая рассылка на всех пользователей
Если вы хотите быстро сделать рассылку без настройки сегментов:
- Перейдите в проект.
- Нажмите “Создать рассылку”.
- Укажите:
- Заголовок (например: “Добро пожаловать!”)
- Текст сообщения
- (По желанию) Добавьте кнопки
- Настройте время отправки:
- Сразу (Также можно указать время отправки рассылки, задать её повторяемость или установить триггер, например, для отправки новым пользователям.)
- Нажмите “Запустить рассылку”.
✅ Готово! Сообщение получат все пользователи, у которых активен бот.
🟦 Шаг 4. Сегментация пользователей
Если вам нужно более точное таргетирование:
- Перейдите в проект.
- Нажмите “Создать рассылку”.
- Укажите:
- Заголовок (например: “Сегментация пользователей!”)
- Текст сообщения
- (По желанию) Добавьте кнопки
- Название (например: “Хорошо”)
- Ссылка (например: “https://t.me/telesend_bot”)
- Настройте время отправки:
- Сразу (Также можно указать время отправки рассылки, задать её повторяемость или установить триггер, например, для отправки новым пользователям.)
- Напишите в поле “настройка фильтров”:
Отправь рассылку всем пользователям с first name “Maksim” , у которых нету telegram premium
- Нажмите “Запустить рассылку”.
✅ Готово! Сообщение получат все пользователи которые вошли в сегмент и у которых активен бот.
🟦 Шаг 4.1 Сегментация пользователей по поведению через кастомные аналитические события
🧩 Пункт 1: Создание аналитического события
- Перейдите на сайт: https://app.telesend.io/
- Откройте ваш проект.
- Нажмите справа на вкладку “Аналитические события”.
- Нажмите кнопку “Создать событие”.
- Заполните нужное поле - “Имя события”
- Нажмите кнопку “Создать”.
- Найдите созданное событие в списке.
- Нажмите “Редактировать” напротив события.
- Заполните описание события.
- Нажмите кнопку “Сохранить”.
Зачем это нужно?
Это нужно для использования этого события в фильтрах, а также автоматического генерирования фильтров (сегментов пользователей) с помощью ИИ, описывая все обычным языком.
Когда вы собираете данные о пользователях (через импорт CSV или события track), Telesend может автоматически создавать фильтры — это “умные” группы пользователей, объединённые по общим признакам. А с помощью ИИ это работает ещё проще — вы описываете, кого хотите найти, обычными словами.
Как это работает:
1. Фильтры = группы пользователей по правилам
Примеры правил:
- «Пользователи, которые нажали кнопку “Купить”» → фильтр по событию
button_click - «Подписчики с Telegram Premium» → фильтр по полю
isPremium: true - «Активные за последний месяц» → фильтр по дате
createdAt
2. Автоматическое создание фильтров через ИИ
Просто опишите, кого ищете:
«Покажи пользователей из Москвы, которые открывали страницу /sale и не покупали»
ИИ Telesend:
- Поймёт запрос на обычном языке.
- Проверит ваши данные (события, поля из CSV).
- Создаст фильтр и группу пользователей.
📬 Пункт 2: Отправка события через track()
Чтобы ваш бот мог присылать анилитические события вам нужно вызывать у клиента соответствующий метод track .
Что нужно передать в метод track():
- ID пользователя в Telegram — уникальный номер, который Telegram присваивает каждому пользователю.
- Название события — придумайте короткое название, например,
button_click(нажатие кнопки). - Данные события — дополнительная информация о действии.
Обязательные данные:
startParameter— параметр, с которого началось взаимодействие (если его нет, укажите пустую строку'').params— любые данные в формате «ключ: значение» (например,buttonId: 'start').
Необязательные данные (можно не указывать):
path— страница, где произошло событие (например,/start).language— язык пользователя (например,ru).device— устройство пользователя (например,mobile).
Пример:
await client.track('123456789', 'button_click', { startParameter: '', path: '/start', params: { buttonId: 'start', }, language: 'ru', device: 'mobile',})from telesend.types import Event
# Отправка аналитического событияclient.track( "123456789", "button_click", Event( start_parameter="", path="/start", params={ "buttonId": "start" }, language="ru", device="mobile" ))Пояснение:
123456789— ID пользователя в Telegram.button_click— название события.params: { buttonId: 'start' }— какая именно кнопка была нажата.