Шлем заявки с сайтов на Ruby в Telegram-чаты
Письма идут долго — до 7 минут. СМСки стоят по 2–5 руб. за штуку. Подключать CRM — иногда перебор. Выход? Бот на руби, отправляющий заявки в телеграм-чат менеджерам.
Как настроить? Читайте в статье.
UPD 25/08/2017: Поправил код в примерах.
Создаем чат в телеграме
Для создания нужно выбрать хотя бы одного участника кроме вас. Можете выбрать любого из знакомых, создать чат и удалить знакомого. Далее:
- Конвертируем чат в супергруппу;
- Добавляем бота @get_id_bot;
- Пишем в чат
/my_id
; - Читаем сообщение от бота, находим в нем ID чата, сохраняем ID;
- Удаляем бота.
Создаем бота для отправки заявок
Создаем через @botfather. Как — описано здесь .
Один такой бот может обслуживать много чатов с разных проектов. Имя и аватар выберите по вкусу, у меня бот такой:
Добавляем бота в созданный чат
Давать боту права администратора не нужно. Никаких дополнительных прав — тоже.
Устанавливаем телеграм-клиент на сервер
Суть такая:
- На сервере живет нативный телеграм-клиент;
- В руби проекте — тонкий руби гем;
- Командуем в руби проекте гему отправить сообщение — он дает команду телеграм-клиенту, а тот — отправляет сообщение в чат через бота.
Инструкция по установке: https://github.com/atipugin/telegram-bot-ruby
Копируем в проект ключи
TELEGRAM_BOT_TOKEN: '123123123123123123123'
TELEGRAM_CHAT_ID: '-123123123'
Копируем туда же, где у вас лежат все credentials. В ENV-переменные, например. Я использую figaro.
Где брать значения ключей:
TELEGRAM_BOT_TOKEN
- токен бота с шага 2 (получаем через @botfather);TELEGRAM_CHAT_ID
- ID чата с шага 1.
Формируем нотификаторы в проекте
На самом деле вы уже можете отправлять сообщения командами на руби. Но чтобы делать удобной отправку заявок (с форматируемым текстом, DRY) — мы напишем пару классов. Пример учитывает, что у вас — Ruby on Rails, но не обязывает сидеть на нем. Если у вас не RoR — адаптируйте решение под ваш фреймворк.
Базовый класс. Обращается к телеграм-гему и просит отправить сообщение. Какое именно — за это отвечает метод render_message
. Кладем файл в папку app/notifiers
, и рельса подгружает его автоматически.
Пример нотификатора по заявкам с сайта (модель SiteRequest
). Наследуемся от TelegramNotifier
. При создании передаем внутрь запись модели. В render_message
— рендерим сообщение. В итоге в телеграм-чат придет подобное сообщение:
Заявка на сайте
masha_malasha@mail.ru
Знаете, чем дополнить статью?
Пишите в комментариях, или у нас в чате. И подписывайтесь на канал в телеграме, чтобы быть в курсе новых статей.