Боты SMeet · Bot API v1
Ваш бот отвечает в SMeet, а работает на вашем сервере.
Создайте бота в SMeet BotFather, подключите программу на Python, Node.js или любом другом языке, и она будет общаться с людьми в личных чатах: текстом, кнопками, фото и документами. Переписку и доставку берёт на себя SMeet, а что ответить, решает ваш код.
«Создать бота» открывает раздел «Мои боты» в веб-приложении SMeet, поэтому сначала войдите в аккаунт. Документация открыта всем.
/start
Здравствуйте! Это справочная Acme. Выберите вопрос:
Заказы отправляем в течение двух рабочих дней. Когда ваш заказ покинет склад, придёт сообщение.
А заказ A-1042?
A-1042 уехал со склада утром. Курьер приедет сегодня, 14:00-16:00.
Зачем нужен бот
Вопросы, на которые команда отвечает по десять раз в день.
Бот хорош там, где ответ подчиняется правилу или лежит в одной из ваших систем. Люди спрашивают в чате, который у них и так открыт, а отвечает ваша программа.
Поддержка
Бот сразу отвечает на типовые вопросы, узнаёт номер заказа или текст ошибки и передаёт остальное вашей команде, когда всё уже записано.
Статус заявки
Человек один раз нажимает «Сообщать мне», и бот пишет, когда заявка или заказ меняет статус. Без нажатия никаких уведомлений.
Частые вопросы с кнопками
Темы кнопками под сообщением. Нажатие сразу даёт ответ или уточняет вопрос, и гадать, что написать, не приходится.
Внутренние сервисы
Бот, которого видят только коллеги: график дежурств, поиск в вашей CRM, статус заказа. Он живёт в пространстве организации и больше нигде.
Заявка за пару вопросов
Бот задаёт вопросы по одному и передаёт в вашу систему готовую заявку: обращение в ИТ, заявление на отпуск, адрес доставки.
Документы в обе стороны
Принять скан или фото, прислать в ответ PDF: счета, чеки, договоры. Каждый файл проходит антивирусную проверку, прежде чем его получит другая сторона.
От нуля до первого ответа
Пять шагов, и бот отвечает.
Никто не проверяет каждого нового бота вручную, и SDK ставить не нужно. Понадобятся аккаунт SMeet с подтверждённым e-mail и компьютер с Python 3.9+ или Node.js 22.13+.
- Создайте бота в SMeet BotFatherОткройте «Мои боты» в веб-приложении или чат с
@smeet_botfather. Отправьте/newbot, имя для людей и адрес, который заканчивается на_bot. - Получите токенНажмите «Получить токен». Откроется защищённый экран, и токен будет показан один раз; в чат BotFather его не присылает.
- Запустите примерЗапишите токен в переменную
SMEET_BOT_TOKENи запустите эхо-бота из быстрого старта на Python или Node.js.$ python echo_bot.py Running as @acme_help_bot, delivery mode polling - Нажмите «Начать»Откройте своего бота в SMeet и нажмите «Начать». Бот получит
/startи ответит, а любой текст вернёт обратно. - Перенесите бота на серверБот отвечает, только пока работает его программа. Для long polling нужен лишь исходящий HTTPS, поэтому подойдёт любой сервер, даже за NAT. Хотите, чтобы события присылал сам SMeet? Переключитесь на webhook.
/newbot
Как назвать бота? Это имя увидят люди, например «Помощник поддержки».
Справочная Acme
Теперь адрес бота: латинские буквы, цифры и _, в конце обязательно _bot. Например: support_helper_bot.
acme_help_bot
Готово: бот @acme_help_bot создан. Статус: не подключён.
Дальше получите токен в защищённом экране и запустите пример из быстрого старта. Токен я в переписку не присылаю.
Версия 1
Что умеет первый выпуск и чего в нём нет.
Личные чаты в публичном пространстве и в организациях, со всем, что нужно поддержке или внутреннему сервису. Группы, каналы и платежи в него не входят.
В чате
Личные чаты
Один человек и ваш бот, после того как человек нажал «Начать». Первым бот не пишет.
Текст, ответы и правки
Сообщения до 4096 символов, ответы на сообщения и правка собственных сообщений бота вместе с кнопками.
Меню команд
Список, который человек видит, когда набирает «/». Задаётся в BotFather или из программы.
Кнопки под сообщением
Callback-кнопка, на которую отвечает бот, или ссылка https, которая откроется в браузере.
Фото и документы
Фото до 10 МиБ и документы до 20 МиБ в обе стороны, каждый файл проходит антивирусную проверку.
Для вашей программы
Bot API по HTTPS
https://messenger.scrile.com/bot-api/v1/<method>, JSON и токен в заголовке Authorization в виде Bearer.Два способа получать события
Long polling через getUpdates или webhook на ваш HTTPS-адрес. Работает один режим, переключает его владелец в «Моих ботах».
Очередь, которая ждёт
Недоставленные события хранятся до 7 суток, а Idempotency-Key не даёт повторному вызову отправить сообщение дважды.
Рабочие примеры
Python и Node.js: эхо-бот, ответы на вопросы с кнопками, уведомления о статусе, файлы и webhook с проверкой подписи.
Открытый контракт
Весь API в файле openapi.json: по нему можно сгенерировать клиент или проверять тесты.
Где работает
Публичное пространство и организации
Бот живёт ровно в одном пространстве: в публичном или в одной организации.
Веб, iOS и macOS
Веб-приложение SMeet и SMeet для iOS и macOS показывают ботов с кнопками и файлами.
Android позже
Поддержка Android появится в одном из следующих выпусков. Пока другие приложения показывают сообщения ботов обычным текстом.
Не входит в версию 1
Группы и каналы, платежи, конструктор без программирования и боты, которые пишут первыми.
Для организаций
Бот организации остаётся внутри организации.
Каждый бот принадлежит ровно одному пространству. Бота организации видят только её участники, а его токен не дотянется до чатов, людей и файлов за её пределами.
- Два отдельных переключателя для владельцев и администраторов организации: создание ботов и работа ботов. Оба выключены, пока организация их не включит.
- Выключенное создание запрещает только новых ботов. Выключенная работа сразу останавливает всех ботов организации и отменяет события, которые их ещё ждали.
- Если владелец бота уходит из организации, бот останавливается. Если уходит участник, его чаты с ботами организации прекращаются.
- Пожаловаться на бота можно из его профиля. Жалобы рассматривают администраторы SMeet: они могут приостановить бота или отозвать его токен.
Боты в «Acme»
Так это видят владельцы и администраторы организации в веб-приложении. Подписи взяты из самого приложения.
Безопасность
Бот получает то, что ему нужно, и ничего больше.
Сервер проверяет доступ при каждом вызове. Ничего не держится на честном слове бота, а последнее слово остаётся за человеком.
Как устроена подпись webhook- Токен показывается один разSMeet хранит только его хэш. Потеряли токен или он утёк? Отзовите его или выпустите новый, и старый сразу перестанет работать.
- Подписанные webhookСобытия уходят только на публичные HTTPS-адреса, и каждый запрос подписан HMAC-SHA256 в заголовке X-SMeet-Signature.
- Антивирус для каждого файлаНи бот, ни человек не получат файл до чистой проверки. Файлы лежат в закрытом хранилище без публичных ссылок, а права проверяются при каждом скачивании.
- Ограничения частотыОдно сообщение в секунду на чат и десять в секунду на бота, с короткими всплесками. Сверх лимита API подскажет, когда повторить.
- Никаких чужих чатовБот видит только свои чаты с людьми, которые нажали «Начать». Он не получает их e-mail, телефон, контакты и другие переписки.
- Решает человек«Остановить» и «Заблокировать» работают на стороне платформы. Код бота не может их отменить, а начать разговор первым бот не может.
Документация
Всё для разработчика на русском и английском.
Руководства, справочник API и рабочие примеры. Читать можно без аккаунта. Удобнее по-английски? Documentation in English.
Вопросы и ответы
О чём спрашивают, прежде чем сделать своего бота.
Где работает код бота?
На вашей стороне: на сервере, в контейнере или в облачной функции. SMeet ведёт переписку и доставляет события, но код ботов не выполняет. Для long polling нужен только исходящий HTTPS, для webhook нужен публичный HTTPS-адрес.
На каком языке можно написать бота?
На любом, который умеет отправлять HTTPS-запросы и читать JSON. В документации есть готовые примеры на Python и Node.js, а контракт опубликован в файле openapi.json.
Совместим ли SMeet Bot API с Telegram?
Нет. Это собственный API SMeet, библиотеки для Telegram с ним не работают. Но многое покажется знакомым: бот-помощник для настройки, команды и кнопки.
Может ли бот написать первым?
Нет. Бот пишет только после того, как человек нажал «Начать», и только в личный чат с этим человеком. «Остановить» или «Заблокировать» сразу это прекращают, и код бота не может их отменить.
Можно ли добавить бота в группу или канал?
В первом выпуске нельзя. Боты работают в личных чатах, в публичном пространстве и внутри организаций.
Что бот узнаёт о людях, с которыми общается?
Отображаемое имя и публичный адрес, сообщения и файлы, которые человек отправляет в чат с ботом, и нажатия кнопок. E-mail, номер телефона, контакты и другие чаты бот не получает никогда.
Сколько ботов можно создать?
До 5 на одного человека. Нужны подтверждённый e-mail и разрешение на создание ботов в пространстве, где вы открыли SMeet BotFather.
Что делать, если токен утёк?
Выпустите новый токен в разделе «Мои боты», и старый сразу перестанет работать; команда /revoke в SMeet BotFather отзывает токен без замены. Если мог утечь и секрет webhook, экстренный сброс заменит оба за один шаг.
В каких приложениях работают боты?
В веб-приложении SMeet и в SMeet для iOS и macOS, с кнопками и файлами. Поддержка Android появится в одном из следующих выпусков, а пока другие приложения показывают сообщения ботов обычным текстом.
До первого ответа несколько минут.
BotFather, токен, пример на Python или Node.js и кнопка «Начать». Быстрый старт проведёт по каждому шагу.
«Создать бота» открывает «Мои боты» в веб-приложении SMeet. Сначала войдите в аккаунт, дальше поможет SMeet BotFather.