Telegram API - компонент для работы с мессенджером Telegram 2.X

808
Приветствую,

Компонент позволяет подружить InstantCMS и мессенджер Telegram и упростить пользователям мессенджера использование сайта.

Возможности компонента:

1. Отправка любых уведомлений в мессенджер Телеграм (настраивается пользователем)
2. Выгрузка в заданный админом канал Ленты событий сайта (можно настроить типы выгружаемых событий)
3. Выгрузка в заданный владельцем группы канал событий Группы (можно настроить типы выгружаемых событий)
4. Поддержка компонента SmartChat — транслирование сообщений в Телеграм канал (заданный в виджете или в настройке группы если это чат Группы)
5. Массовая или выборочная отправка сообщений пользователям в мессенджер Телеграм.
6. Выгрузка событий друзей в приват пользователю (реализуется с помощью дополнительного бесплатного компонента)
Telegram API - компонент для работы с мессенджером Telegram

В комплект входят два поля
1. «URL канала Telegram», которое можно добавить в профиль или типы контента.
2. «Число подписчиков на telegram канале'»

Видео презентация


Важно! В этой версии обязательное условие для работы компонента — ssl сертификат. Это необходимое требование для того, чтобы бот мог получать и обрабатывать новые сообщения. Без этого бот не сможет авторизовать пользователей (и соответственно не сможет слать им уведомления) и не сможет выводить в чат сообщения из Телеграм. Будет работать только выгрузка сообщения компонента SmartChat (из виджета или группы) в Телеграм и вывод Ленты событий в Телеграм.

Настройка компонента в админке

1. нужно создать специального бота для сайта (если сайтов у вас много, то для каждого создаем отдельного бота)
2. создаем новый Телеграм канал (например, для выгрузки Ленты событий или чата). И добавляем в него нашего бота в качестве Администратора — чтобы он мог писать в канал новые сообщения. Делаем канал публичным и заполняем публичную ссылку, которая пригодится для заполнения на сайте. После этого если нужно — можно сделать канал приватным (чтобы посторонние не смогли его найти и читать сообщения).
3. Заполняем настройки для работы с Лентой активности и Группами.
4. Включить флаг вывода закладки в профиле. Для подключения Телеграм пользователями сайта.

Инструкция по созданию бота

Создается новый бот при помощи еще одного бота: @BotFather, Далее нужно

1. ввести команду /newbot – создание нового бота. Затем BotFather попросит придумать новое уникальное имя для этого бота. Оно обязательно должно заканчиваться на «bot»;
2. можно также добавить аватар для бота и его описание;
3. далее BotFather присылает уникальный токен API, который нужно будет указать в админке вместо с именем бота

Что нужно сделать пользователю для подключения уведомлений:

1. Открыть вкладку Телеграм в своем профиле и считать QR код (или кликнуть на него) — открыть ссылку в приложении Telegram
2. Нажать Start в чате с ботом, бот должен ответить «НикнеймПользователя, вы успешно авторизовались.»
3. Настроить уведомления в редактировании профиля (вкладка «Уведомления»)


Работу компонента можно посмотреть на демо сайте.

t1@t1.ru
........
t10@t10.ru

пароль у всех 123123


Код открыт. Компонент можно установить на все свои сайты.

После установки компонента

Спойлер
Канал демо сайта, в который выгружается Лента активности сайта и чат - https://t.me/instantchat.
Канал группы, в который выгружает чат группы и Лента активности группы https://t.me/instantchata1.

Уведомления пользователю отправляет бот, с которым можно установить контакт на странице своего профиля на вкладке "Telegram".

PS Дальнейшие шаги по развитию компонента пока в стадии обдумывания. Если будут конкретные идеи - пишите. Можно реализовать постинг в тип контента (что-то вроде твитов, с картинками), поиск по сайту. Рассылку новостей. Изменение статуса заказа (для интернет магазинов) и тд.. Ограничивает только фантазия.

Обновление для SmartChat с поддержкой чата групп будет на этой неделе. Та версия, что есть сейчас поддерживает выгрузку в Телеграм канал из виджета SmartChat и публикацию в чат сообщений из Телеграм канала.
Генератор QR-кодов | SmartChat - обновление
Комментарии (38)
Олег Васильевич я 25 октября 2017 в 11:09 0
small user social cms
Спасибо!
Александр 25 октября 2017 в 13:06 0
small user social cms
Замечательно, спасибо за такие хорошие и полезные разработки, куплю.

Подумалось, а возможно добавить в пункт 6 (Выгрузка событий друзей в приват пользователю) вариант "на сайте + телеграм" ?
lakomet 25 октября 2017 в 13:30 0
small user social cms
Если не установлен чат, то получаем ошибку
Код PHP:
  1. Ошибка в запросе БД:
  2. Неизвестный столбец 'telegram_chat' в 'where clause'
  3.  
  4. SELECT i.*
  5. FROM cms_users i
  6. WHERE (telegram_chat>0)
  7. LIMIT 1000
  8. Последние вызовы:
  9.  
  10. cmsModel->get() @ /system/controllers/sc_telegram/backend/forms/form_sendmessages.php : 18
  11. formScTelegramSendmessages->{closure}() @ /system/fields/list.php : 91
  12. fieldList->getListItems() @ /system/fields/list.php : 143
  13. fieldList->getInput() @ /templates/default/assets/ui/form.tpl.php : 137
  14. include() @ /system/core/template.php : 1414
  15. cmsTemplate->renderForm() @ /templates/default/controllers/sc_telegram/backend/sendmessages.tpl.php : 7
  16. include() @ /system/core/template.php : 1340
  17. cmsTemplate->processRender() @ /system/core/template.php : 1316
  18. cmsTemplate->render() @ /system/controllers/sc_telegram/backend/actions/sendmessages.php : 21
  19. actionScTelegramSendmessages->run()
  20. call_user_func_array() @ /system/core/controller.php : 453
@SmartControl 25 октября 2017 в 14:01 0
small user social cms
lakomet, Дело не в чате, но я понял проблему. Кинул обновление (в чат и телеграм), которое добавит поле.
И здесь повторю ссылку
Спойлер
Александр, спамить так спамить)) Да, можно. Но уже в обновлении. Конечно, лучше переписать всю схему уведомлений, добавить в нее флажки. То есть чтобы не добавлять кучу пунктов типа "на сайте и в телеграм", "на сайте и в электронку", "в телеграм и электронку". А с добавлением Viber или SMS еще кучу пунктов и тд.. А сделать чтобы в каждом уведомлении можно было вручную отметить флажками куда его отправлять.
Александр 25 октября 2017 в 14:41 0
small user social cms
@SmartControl дело не в спаме, как я понял пользователь сам выбирает куда ему приходят уведомление, поэтому это скорее удобство для пользователя. На данный момент наверно достаточно "телеграмм и на сайте", т к помоему на email пользователю автоматически приходит уведомление об обновлении, хотя могу ошибаться, тогда конечно вариант с флажками актуален.
Опять же с уведомлениями на Email надо быть аккуратнее, если много пользователей, а ещё хуже если много событий отправлять на почту то легко получить бан за спам от почтовиков, поэтому вариант с почтой если и нужен, то с "разрешения админа"
vikont 25 октября 2017 в 14:30 0
small user social cms
Как всегда, неожиданно и мощно! +
AndroS 25 октября 2017 в 18:17 +1
small user social cms
Крутая и очень актуальная штука! Евгений, спасибо вам за нужные вещи для инстанта!
Есть пожелание: в общий чат когда отправляются новые записи, то проставлять им хеш-теги с именем типа контента и родителем (если запись дочерняя).

К примеру, у нас есть тип контента Продавцы и их Акции (скидки). Соответственно, пользователи в чате получат сообщение типа
#Акции #Продавец №1 в мире
и дальше заголовок и текст

Это даст очень удобную навигацию и поиск в чате по различным тематическим обновлениям различных разделов сайта
Dorimen 25 октября 2017 в 22:59 0
no avatar
Установил и настроил по инструкции, но в профиле пользователя не появилась вкладка "Телеграмм", и в настройках уведомлений не появилась опция отправки в Телеграмм.



Dorimen 25 октября 2017 в 23:28 +2
no avatar
И неплохо бы еще как-то научиться делать тоже самое, что с Телеграммом, но для Вайбера (естественно, в пределах возможностей групп Вайбера).
@SmartControl 26 октября 2017 в 18:28 0
small user social cms
По поводу вкладки -
1. Нужно проверить события в компоненты-> управление событиями
2. Почистить кэш

Я обновил архив - на странице товара(которая после покупки была) обновилась ссылка.
Dorimen 26 октября 2017 в 19:46 0
no avatar
1. Все события обновлены и добавлены: http://take.ms/VHCBT
2. Кеш почистил.
3. Во все файлы по инструкции внес правки
4. Компонент до 1.0.6 обновил

А все равно не показывает в профиле: http://take.ms/q83Jn

И еще при обновлении SmartChat до Pro, получаю http://take.ms/01uTS
@SmartControl 26 октября 2017 в 22:17 0
small user social cms
И еще раз, пожалуйста, обновитесь (кинул так же. версия 1.0.7) - заодно решится проблема с отложенными публикациями. Со вкладкой понятно..

Но в последней версии можно и без нее (даже в той, что у вас). Лучше добавить в профиль новое поле "QR-код для авторизации в Телеграм" - оно будет видно только владельцу и не нужно будет делать отдельную вкладку. Тем более, что на ней кроме этого QR кода и нет ничего..

А для чата попробуйте обновить по ссылке - http://v28.smartcontrol.today/goods/smartchat108.zip
Dorimen 26 октября 2017 в 22:25 0
no avatar
После обновления Telegram API до 1.0.7 вкладка начала выводиться. Но прекрасно, что теперь можно просто поле сделать.

А вот обновиться SmartChat Pro до 1.0.8 не понял как, так как в архиве только http://take.ms/W9qBX тогда как 1.0.7 так - http://take.ms/FzNC7
@SmartControl 26 октября 2017 в 23:47 0
small user social cms
обновиться как обычно - должно помочь. Все нормально. На днях все-равно будет новая версия - с чатом групп и вторым дизайном
Dorimen 26 октября 2017 в 23:54 0
no avatar
тогда я подожду. мне чат важен именно если там будет чат для групп. телеграмм работает, но тоже немного не ясно как. расскажу. У меня сейчас так: http://take.ms/8AULt и он нормально отправляет когда что-то в ленте активности добавляется: http://take.ms/cEYIk. А когда снимаю галочку отправлять ленту активности, то он вроде и не отправляет при добавлении нового в соответствующих типах контента.
Dorimen 27 октября 2017 в 11:13 0
no avatar
И, кстати, почему нет возможности выгружать в Телеграмм ещё и новые комментарии?
@SmartControl 27 октября 2017 в 11:36 0
small user social cms
в Телеграм улетают любые события, которые есть. Если "добавление комментария" у вас попадает в Ленту активности, то и это событие должно улетать в Телеграм.

Но если речь про поддержку каких-то других компонентов (например компонента Комментарии), то сейчас Телеграм поддерживает Группы (Активность и чат группы), Ленту активности (общую) и SmartChat. Пока это весь список.
Dorimen 27 октября 2017 в 11:38 0
no avatar
А я не про ленту событи сейчас говорю, а про чекбоксы
@SmartControl 27 октября 2017 в 11:39 0
small user social cms
С флажком отправляет, без флажка не отправляет - все же логично?) - это своя лента активности, в канал который в профиле.

А общая выгружается отдельно, настройки чуть ниже - там канал указывается прямо в админке
Dorimen 27 октября 2017 в 11:42 0
no avatar
Вот как оно работает... Кстати, не ясно почему новые комментарии не добавляются в ленту активности (в настройках базового компонента движка)
@SmartControl 26 октября 2017 в 18:38 +2
small user social cms

Последнее обновление

1. Добавлены иллюстрации при постинге событий о создании записей в типах контента в Телеграм
2. Добавлены хештеги для записей типов контента
3. Добавлена возможность выгрузки Своей ленты в свой канал( пользователь сам может указать свой канал)
4. Добавлено поле для профиля для авторизации пользователя ботом - выводится только в своём профиле
5. Поддержка коротких ссылок от goo.gl (для этого написан отдельный компонент)

Dorimen 31 октября 2017 в 11:32 0
no avatar
По какой-то причине дважды идет постинг в Телеграмм одной новости:

http://take.ms/vHTup

при этом настройки на сайте следующие:

http://take.ms/LdGgtu

И по прежнему в настройках профиля нет возможности выбрать отправку уведомлений в Телеграмм:

http://take.ms/Bs4NZ

Версия компонента: 1.0.7
lakomet 31 октября 2017 в 11:59 0
small user social cms
Dorimen:
По какой-то причине дважды идет постинг в Телеграмм одной новости:
У вас в поле в профиле какой канал указан? @orehovod ? И лента выгружается в @orehovod, нужно, чтоб были разные каналы. И обновите компонент, текущая версия 1.0.9
Dorimen 31 октября 2017 в 12:03 0
no avatar
Это возможно. Спасибо. Не знал, что уже 1.0.9.
Dorimen 31 октября 2017 в 12:59 0
no avatar
Установил до 1.0.11:
1. Слетело меню в группах: https://monosnap.com/file/Cj6NQZppXuvI06a5ixB4dAT5ODa9PO
2. И по прежнему в настройках профиля нет возможности выбрать отправку уведомлений в Телеграмм: http://take.ms/Bs4NZ
Dorimen 31 октября 2017 в 12:59 0
no avatar
Точнее установил 1.0.9 (1.0.11 - это версия SmartChat).
lakomet 31 октября 2017 в 13:05 0
small user social cms
Автор быстрее ответит эдесь
Shuma 15 ноября 2017 в 17:13 0
small user social cms
Потому что пункт Уведомлять в телеграмме появляется только после авторизации через QR-код во вкладке профиля.
Shuma 15 ноября 2017 в 09:36 0
small user social cms
В админке выдает ошибку поле Канал для выгрузки событий, пишет неверный формат
В чем может быть проблема?
@SmartControl 16 ноября 2017 в 13:17 0
small user social cms
Обновитесь, пожалуйста. Тип поля поправил, ошибки не будет. Главное не забывайте указывать "@" в начале канала.
Dorimen 15 ноября 2017 в 16:42 +1
no avatar
http://take.ms/69JFQ - Telegram API не хочет сохранять в настройках название канала чата, хотя именно в Телеграмме оно такое...
Shuma 15 ноября 2017 в 18:49 +1
small user social cms
Проблема решается, если прописать значение данного поля через phpmyadmin в таблице cms_controllers
Dorimen 15 ноября 2017 в 20:29 0
no avatar
Спасибо
Dorimen 15 ноября 2017 в 20:45 0
no avatar
Сохранил в настройках без названия канала, а в БД все равно пишется как http://take.ms/kJ8TD (хотя тут вот настройки-то есть http://take.ms/MYbOu)
Shuma 15 ноября 2017 в 21:09 0
small user social cms
в базе напротив строки activity_on: 1, а напротив строки telegram_channel: @name_your_channel
Dorimen 15 ноября 2017 в 22:22 0
no avatar
Спасибо. Получилось. А Вы SmartChat используете?
Shuma 15 ноября 2017 в 22:39 0
small user social cms
Нет, не приобретал его
@SmartControl 16 ноября 2017 в 13:16 0
small user social cms
Проблема в символе "_" - я подготовил новую версию, там убран фильтр. И можно сохранить название канала как обычно в админке, без правок БД.