Обновления Telegram-бота для технической поддержки: API для внешних источников и новые возможности
Всем привет! Вы просили - я сделал! Я выпустил релиз №3 для бота технической поддержки на GitHub.
Прошло уже несколько месяцев с последнего обновления, и бот за это время получил вдвое больше звёзд на GitHub, что очень мотивирует продолжать развитие и поддержку проекта.
За последний месяц ко мне поступило несколько запросов расширить функционал бота за счёт подключения новых источников трафика. Изначально я думал добавить интеграции с популярными мессенджерами, такими как WhatsApp или Viber. Но в итоге решил, что в первую очередь стоит реализовать API, чтобы вы сами могли подключать любые свои источники.
В этой статье расскажу о новом API для подключения внешних источников — живых чатов, CRM и других систем, а также о других важных обновлениях и планах на будущее.
Предисловие
Для тех, кто не знаком с проектом: TG Support Bot — это бот на Laravel, который объединяет клиентов и менеджеров через Telegram и ВКонтакте, скрывая личные аккаунты и маршрутизируя общение через темы в Telegram-группе.
Пользователь пишет боту, сообщение автоматически пересылается в выделенную тему для менеджеров, а их ответы возвращаются обратно от имени бота — так сохраняется приватность и удобство общения.
Буду благодарен, если вы поддержите мой проект ⭐ на GitHub!
Руководство по установки
Я записал видео-инструкцию для установки данного решения на VPS с предустановленным Docker Compose.
Youtube - https://youtu.be/yNiNtFWOF2w
ВК Видео - https://vkvideo.ru/video-141526561_456239132
Обратная связь
Для улучшения коммуникации с пользователями, я создал группу в Telegram, в которой вы можете задавать свои вопросы и писать предложения по расширению функционала.
Также сюда будут публиковаться новости по выпуску обновлений.
API — не альтернатива мессенджерам, а универсальный инструмент
Хочу сразу уточнить: разработка API не заменяет расширение списка поддерживаемых мессенджеров и соцсетей. Я продолжаю работать над интеграциями с ними и буду добавлять новые источники трафика.
Однако API необходим для подключения кастомных источников — живых чатов, CRM-систем, форм на сайте и других нестандартных каналов.
Что входит в первую версию API?
В API реализованы базовые маршруты для работы с сообщениями:
GET api/external/messages — получение списка сообщений с возможностью фильтрации
GET api/external/messages/{id_message} — получение конкретного сообщения по ID
POST api/external/messages — отправка нового сообщения
PUT api/external/messages — изменение существующего сообщения
DELETE api/external/messages — удаление сообщения
Для работы с API необходимо создать пользователя и сгенерировать для него API-токен. Рекомендую создавать отдельного пользователя под каждый источник.
Создать пользователя и токен можно командой:
php artisan app:generate-token {название_источника}
Также нужно прикрепить к источнику ресурс, куда будут поступать сообщения от обработчика.
Как это работает?
Процесс довольно простой:
На вашей стороне генерируется уникальный ID пользователя — это может быть хэш ключ или любой уникальный идентификатор.
При отправке сообщения в тело запроса передаются: ID пользователя, код источника, текст сообщения и, при необходимости, файлы.
Система идентифицирует пользователя или создаёт новую запись, если это первое сообщение от него.
Сообщение из вашего источника направляется в Telegram-группу поддержки.
Менеджеры в группе, как и раньше, могут отвечать любыми типами сообщений. Текст отправляется как текст, остальные — конвертируются в файлы. В названии темы указывается ID клиента и источник сообщения.
Таким образом, вы легко сможете подключить практически любой внешний источник к вашему боту.
Подробная инструкция по работе с API уже есть в разделе wiki на GitHub.
Добавлены новые консольные команды
Я добавил несколько полезных консольных команд.
php artisan telegram:set-webhook
Artisan команда, которая производит подключения хука бота к вашему проекту. Ранее это делалось через отправку запроса в telegram или по специальной ссылке, а теперь это можно сделать запустив команду в консоле.
php artisan app:generate-token
Команда, которая генерирует токен для подключения к API вашего бота. Вы можете подключить неограниченное количество источников графика и для каждого создать уникальный токен.
Swagger для API
Для API был разработан генератор swagger документа.
Ранее я хотел использовать готовое решение для генерации swagger документации, но большинство решений очень сильно нагромождают код. Поэтому я решил написать собственный генератор, который собирает документацию.
Принцип прост! Вы описываете документацию по частям в resources/swagger. Важно граматно подходить к именованию файлов и компонентов.
После создания структуры, вы запускаете artisan команду и документация собирается в единый документ.
php artisan swagger:generate
На выходе вы получаете 2 версии документации
В формате json, которую можно использовать для нейросетей или программ
В формате Swagger-ui для просмотра в браузере
Мелкие доработки
Улучшено логирование ошибок — все логи теперь доступны в Grafana;
Исправил баги, о которых вы писали в Issues;
Добавил контейнер redisinsight для просмотра Redis данных через WEB интерфейс;
Переписал инструкции для подключения и настройки бота;
Спасибо всем за поддержку и обратную связь! Продолжаю работать над улучшениями и буду рад новым предложениям и вопросам.
Если нужно, могу помочь с примерами использования API или подсказать, как правильно настроить интеграцию.
Есть простой путь в настоящее программирование, но не в профессиональное
Бывают инди-разработчики у которых нет цели работать в профессиональной индустрии. Им не нужно соответствовать стандартам индустрии.
Язык ЖивоСкрипт это визуальный блочный скриптовый язык программирования который транслируется в JS и PHP. Достаточно знать один язык ЖС чтобы писать код для клиента и сервера.
Язык ЖС разработан специально для детей 12+, но его могут использовать взрослые программисты-любители которым нужен простой инструмент.
Ответ l.smirnov в «Пояснительная бригада: получаем банан»2
Поздравляю, вы написали хуевый код на Джаве )
Никогда такого не было пиздеж, каждый первый спициалист с скиллбокса не даст соврать и вот опять!
Ну все, Джава мертва, старый унылый кусок говна, пора выкидывать, ведь тупой рандом написал на ней говно...
Но давайте, раз уж мы тут ниибать специалисты, подумаем еще 2 минуточки, над этим ниибически ахуительным тезисом "ахахха язык_название_1 полнае гавно".
Попробуем так сказать в анализ, логику, экстраполяцию даже, не побоюсь этого сложного слова.
Можно ли написать говно на ЛЮБОМ языке?
Отвечает эксперт(я): ага, ващще изи. Ну тоесть гдето сложновато, так как некоторые языки и их инструментарий будут упорно препятствовать, но бля - была бы цель!
Хммммм, а можно ли написать красиво на ЛЮБОМ языке?
Опять отвечает иксперт(я): ну, это конечто блять уметь надо, но вообще - да!
Все языки существуют для решения определённых проблем.
Некоторые узкоспециализированны, и красивые решения там требуют таки навыков, понимания области применения, и опыта.
Но - сделать красиво, и местами элегантно - можно на любом языке. Даже (прости госпади) на Руби.
Я уже устал расписывать что тот же JavaScript (над которым ржут тупорылые неумехи более десятка лет, и который конечно нонче более ускоспециализирован чем его, хммм, скажем для простоты терминов "старший брат" TypeScript) можно и "типизировать", и писать надежно, модульно, и даже красиво. БЫЛО БЫ УМЕНИЕ, ДА ЖЕЛАНИЕ. Да и php, второй по цитируемости в шуточкаж долбаебами язык - уже давно умеет и в типизацию, и вообще во все на свете. И позволяет создавать реально красивый код.
Но - поток идиотиков, сравнивающих вот эти пальцы (рдни языки) с жопами (другие языки), не разбирающихся ни в отм ни в другом - он блять неисчерпаем...
А по поводу конкретного примера из поста, на который я отвечаю - мне уже даже лень расписывать НАСКОЛЬКО чувак нихуя не понял ни в Джаве, ни в конкретно этой, простой в принципе иерархии классов, ни блять даже в самом ООП...
К чему я все это (ДА НЕ ПЕЧЕТ У МЕНЯ!11!!)?
Господа "шутники".
Имейте ввиду, что вы создаете негативный окрас языкам, в которых ничего не смыслите. Люди "снаружи" индустрии, да и просто те кто не очень разбирается - они же ж по этим шуточкам составят мнение, и понесут его в массы...
Вам не стыдно?
Ответ на пост «Пояснительная бригада: получаем банан»2
PHP и Java
PHP, сравни жопу с пальцем!
PHP: жопа это не палец.
Java, сравни жопу с пальцем!
Java: я не знаю, что такое жопа, и что такое палец. Подключите библиотеки классов жопа и палец.
Ок, подключаю!
Java: не могу подключить классы жопа и палец, они наследуют свойства и методы класса "тело", а этот класс не подключен.
Ок, подключаю!
Java: не могу создать классы жопа и палец, подключенный класс "тело" имеет версию эволюции 13.5.3, и не поддерживает классы жопа и палец.
Гуглю, пытаясь понять, чем различаются верси тела 20.3.8 и 20.3.9, и в чем различие женского и мужского тела. Ок, подключаю новую версию класса тело!
Java: чтобы сравнить, создайте объект тело с объектами жопа и палец. Не хватает классов "голова, руки, ноги"!
Гуглю, подключаю голову, руки, ноги.
Java: жопа это палец!
Почему!???!
Java: жопа = объект, палец = объект, соответственно жопа = палец!
Концепция одного рабочего чата в телеграм вместо десятка – телеграм-бот 7v24 плюс браузер. Продолжение... Спустя 2 года
Прошло 2 года интенсивной работы там, где я интенсивно работаю… не программистом. А 2 года прошло с того времени, как я писал первую и последнюю статью на хабр, о том, что же я своими руками сделал. Публикую скриншоты из той статьи (если интересно – гуглится по одноименному названию сайта запросу).





С тех пор телеграм-ботом пользуюсь с переменным успехом, то есть было время – совсем не использовал, в последний год – наоборот, но за работоспособностью следил всегда. Таким образом за все время использования 7v24 помог мне выполнить (ну или проконтролировать и не забыть) 1034 задачи! При этом пока печатаю текст в выполнении висит 87 задач (в том числе и по улучшению) телеграм-бота.
И каждый раз вносятся и вносятся какие-то изменения, где-то что-то нахожу, подсматриваю, но ладно… про ту самую концепцию.
О групповой работе
Вот, представьте, вы ставите много задач в 7v24, у вас много объектов, вы используете для них теги. Для каждого объекта у вас есть тег, с одноименным названием. У каждого объекта есть люди и свой очередной телеграм-, ватсап- канал. Но вы такие говорите: «Эврика! Круто! Нам больше не нужно столько всяких каналов. Мы будем вести всю переписку в одном телеграм-боте, у меня есть теги в 7v24 для каждого из каналов, я вам пришлю ссылку». Людям для того, чтобы присоединиться к групповому тегу по ссылке приглашенному пользователю нужно:
1) Активировать бота;
2) Войти под предложенными ботом данным на сайт https://7v24.ru;
3) А затем просто перейти по ссылке-приглашению. Пользователь станет участником группового тега;
Далее, вы как администратор создаете задачу, со сроками или без, назначаете ей тег (который принадлежит группе). У всех участников этого группового тега в телеграм-бот 7v24 приходит уведомление о том, что создана новая задача, с подробным описанием и ссылкой на неё. Для того, чтобы провзаимодействовать с задачей – пользователям нужно:
1) Либо перейти на сайт – откроется широкое, но ограниченное, поле взаимодействия на задачу;
2) Либо, если нужно просто прокомментировать, то можно ответом на сообщение бота, про новую задачу, либо иное упоминание от бота о задаче – отправить ваше сообщение-комментарий. Этот комментарий мгновенно отобразится у всех участников группового тега в телеграм-боте, а также будет записан в журнал задачи, который ведется по любому изменению состоянию задачи и является неизменяемым для всех, даже для администратора. Журнал задачи исчезает только вместе с удалением задачи, и используется в том числе и для формирования отчетов. Таким образом – вам в телеграм-бот 7v24 сыпятся комментарии, и уведомления, напоминания о всех ваших задачах. Вы также можете их комментировать, не покидая телеграм-бот, а ваши комментарии могут видеть ваши коллеги и наоборот. Также можно назначать определенного ответственного по одной из задач. И отслеживать количество решаемых, решенных сотрудником задач (пока делаю).
Об общих изменениях и текущих функциях 7v24
Смотрю на скриншоты из предыдущей статьи и понимаю, что с того времени очень много всего изменилось: добавил значительно больше функций, полностью изменил внешний вид сайта.
На текущий момент выполнены следующие возможности:
Мгновенные задачи, заметки; (было ранее, стало удобнее – возможность ставить даты без вычисления их по калькулятору, а также обходить сортировку, указывая теги в задачах) + можно прикреплять к заданию картинку, скриншот



Второй и третий слайд о сокращениях времени на расчеты времени =)
Сортировка задач по тегам; (было ранее, стало удобнее – есть групповой просмотр тега на графике, есть групповые действия к тегу, то есть можно одной кнопкой – скрыть, удалить, отметить выполненными и пр. функции для задач с определенным тегом);
Формирование отчета по задачам (было ранее, но стало функциональнее – теперь можно подготовить и отправить на Emailы отчет за определенные даты по выполненным задачам, ранее только по открытым задачам и без дат. В телеграм-боте тоже появилось две версии отчета (краткий и полный));
Отображение задач на календаре; (было ранее);
Напоминание о завтрашних задачах в телеграм в 20:00 (не было ранее. Можно включить и отключить);


Построение графика выполнения задач с отслеживанием запланированного времени выполнения и фактического (было ранее, улучшено - можно быстро создавать график по тегу, делиться им с незарегистрированными пользователями);
Создание заметок(мертвая фигня, не пользуюсь, но работает);Ведение протокола совещания через телеграм-бот (было ранее, улучшено – каждый пункт протокола, при вашем желании может добавляться и в задачи);
Очистка истории (было ранее);
Экспорт и импорт задач (новое);
Групповые теги с коллегами (активно развиваю, ранее совсем не было);
Журнал задачи (было ранее как комментарии, теперь же полноценный журнал, с комментариями и историей изменений задачи);
Возможность выбора отображения задач: карточками или таблицей (ранее не было);
Быстрые клавиши в браузере для работы с задачами (alt + (1-7) ,ctrl+enter) и быстрое меню - набор тегов, который всегда в близости одного клика
справка (писалось и писалось)
О планировщиках времени, задач, жизни, всего...
На подобные работы вроде 7v24 уже натыкался.. Платные и не такие( Нашел пока две подобных простеньких программы: Ok, bob и utasks, может еще есть какие-то. Работают через телеграм, основная фишка у обоих: добавить их бота в общий рабочий чат и обращениями к нему, и упоминанием пользователя вешать на него задачу + напоминания. Задача, с временем!, то есть часами и минутами - идеально для мелких задач
Программирование
Весь 7v24 написан на личном энтузиазме по чуть-чуть. Когда есть настроение - изменяется ого-го. Когда нет, долго ничего не меняется, а просто пользуется. Сколько времени потратил - наверное с самой первой версии не сосчитать, да и не надо - хобби. Денег - исключительно на сервер.
Использованные языки программирования: php, javascript(jQuery), разметка - html, css(bootstrap), БД - MYSQLI
Следующей статьей планирую выполнить сравнение функций трех таск-менеджеров 7v24, utasks, и ok, bob(больше пока не нашел, подскажите, может есть еще что-то подобное, с телеграмом?), думается будет интересно..
Как добавить Telegram-бота на рабочий стол телефона: быстрый доступ без поиска в чатах
Знакомая ситуация?
Вы часто пользуетесь каким-то Telegram-ботом, но потом не можете вспомнить его название. Приходится листать бесконечные переписки или искать вручную — неудобно и отнимает время. Особенно если бот важный, например, для оплаты подписок или переводов.
Решение простое — создайте ярлык бота на главном экране!
Теперь не нужно запоминать названия или хранить их в заметках. Достаточно один раз добавить иконку, и бот будет под рукой, как обычное приложение.
Как это работает?
1️⃣ Запустите бота @HotlinkRobot
2️⃣ Перешлите ему любое сообщение из нужного чата, канала или от бота
3️⃣ Получите ссылку и откройте её в браузере
4️⃣ Добавьте ярлык на рабочий стол (на iOS может понадобиться ручное действие через меню «Поделиться»)
Дополнительно: можно изменить иконку и название, чтобы было удобнее.
Почему это удобно?
✔ Не нужно искать бота в списке чатов — он всегда на главном экране
✔ Работает на iOS и Android
✔ Безопасно — это просто веб-ярлык, никаких особых разрешений не требуется
✔ Подходит не только для ботов, но и для чатов, каналов и даже диалогов
Попробуйте — и вам больше не придётся тратить время на поиски нужного бота! 🚀