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

+29
5.62K
Приветствую,

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

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

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

В комплект входят два поля
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


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

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

1. необходимо добавить события на странице Компоненты -> Управление событиями.
2. Добавить два хука (события) в файлы. Нужные строки выделены жирным.
В файле
/system/controllers/users/model.php

~#448 строка
public function getUserNotifyTypes($only_default_values = false) {

$notify_types = cmsEventsManager::hookAll('user_notify_types');
$notify_types = cmsEventsManager::hook('update_user_notify_types',$notify_types); //добавить эту строку

В файле
/system/controllers/messages/frontend.php
~#145 строка

public function sendNoticeEmail($letter_name, $notice = array(), $notice_type = false){

cmsEventsManager::hook('before_send_email_notice', array($this->recipients, $notice, $notice_type,$letter_name)); //добавить эту строку



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

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

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

Обновление для SmartChat с поддержкой чата групп будет на этой неделе. Та версия, что есть сейчас поддерживает выгрузку в Телеграм канал из виджета SmartChat и публикацию в чат сообщений из Телеграм канала.
Олег Васильевич я Олег Васильевич я 6 лет назад #
Комментарий удален
0
Александр Александр 6 лет назад #
Замечательно, спасибо за такие хорошие и полезные разработки, куплю.

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

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

Это даст очень удобную навигацию и поиск в чате по различным тематическим обновлениям различных разделов сайта
0
Dorimen Dorimen 6 лет назад #
Установил и настроил по инструкции, но в профиле пользователя не появилась вкладка "Телеграмм", и в настройках уведомлений не появилась опция отправки в Телеграмм.



+2
Dorimen Dorimen 6 лет назад #
И неплохо бы еще как-то научиться делать тоже самое, что с Телеграммом, но для Вайбера (естественно, в пределах возможностей групп Вайбера).
0
SmartControl SmartControl 6 лет назад #
По поводу вкладки -
1. Нужно проверить события в компоненты-> управление событиями
2. Почистить кэш

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

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

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

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

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

А вот обновиться SmartChat Pro до 1.0.8 не понял как, так как в архиве только http://take.ms/W9qBX тогда как 1.0.7 так - http://take.ms/FzNC7
0
SmartControl SmartControl 6 лет назад #
обновиться как обычно - должно помочь. Все нормально. На днях все-равно будет новая версия - с чатом групп и вторым дизайном
0
Dorimen Dorimen 6 лет назад #
тогда я подожду. мне чат важен именно если там будет чат для групп. телеграмм работает, но тоже немного не ясно как. расскажу. У меня сейчас так: http://take.ms/8AULt и он нормально отправляет когда что-то в ленте активности добавляется: http://take.ms/cEYIk. А когда снимаю галочку отправлять ленту активности, то он вроде и не отправляет при добавлении нового в соответствующих типах контента.
0
Dorimen Dorimen 6 лет назад #
И, кстати, почему нет возможности выгружать в Телеграмм ещё и новые комментарии?
0
SmartControl SmartControl 6 лет назад #
в Телеграм улетают любые события, которые есть. Если "добавление комментария" у вас попадает в Ленту активности, то и это событие должно улетать в Телеграм.

Но если речь про поддержку каких-то других компонентов (например компонента Комментарии), то сейчас Телеграм поддерживает Группы (Активность и чат группы), Ленту активности (общую) и SmartChat. Пока это весь список.
0
Dorimen Dorimen 6 лет назад #
А я не про ленту событи сейчас говорю, а про чекбоксы
0
SmartControl SmartControl 6 лет назад #
С флажком отправляет, без флажка не отправляет - все же логично?) - это своя лента активности, в канал который в профиле.

А общая выгружается отдельно, настройки чуть ниже - там канал указывается прямо в админке
0
Dorimen Dorimen 6 лет назад #
Вот как оно работает... Кстати, не ясно почему новые комментарии не добавляются в ленту активности (в настройках базового компонента движка)
+2
SmartControl SmartControl 6 лет назад #

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

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

0
Dorimen Dorimen 6 лет назад #
По какой-то причине дважды идет постинг в Телеграмм одной новости:

http://take.ms/vHTup

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

http://take.ms/LdGgtu

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

http://take.ms/Bs4NZ

Версия компонента: 1.0.7
0
lakomet lakomet 6 лет назад #
Dorimen:
По какой-то причине дважды идет постинг в Телеграмм одной новости:
У вас в поле в профиле какой канал указан? @orehovod ? И лента выгружается в @orehovod, нужно, чтоб были разные каналы. И обновите компонент, текущая версия 1.0.9
0
Dorimen Dorimen 6 лет назад #
Это возможно. Спасибо. Не знал, что уже 1.0.9.
0
Dorimen Dorimen 6 лет назад #
Установил до 1.0.11:
1. Слетело меню в группах: https://monosnap.com/file/Cj6NQZppXuvI06a5ixB4dAT5ODa9PO
2. И по прежнему в настройках профиля нет возможности выбрать отправку уведомлений в Телеграмм: http://take.ms/Bs4NZ
0
Dorimen Dorimen 6 лет назад #
Точнее установил 1.0.9 (1.0.11 - это версия SmartChat).
0
lakomet lakomet 6 лет назад #
Автор быстрее ответит эдесь
0
Shuma Shuma 6 лет назад #
Потому что пункт Уведомлять в телеграмме появляется только после авторизации через QR-код во вкладке профиля.
0
Shuma Shuma 6 лет назад #
В админке выдает ошибку поле Канал для выгрузки событий, пишет неверный формат
В чем может быть проблема?
0
SmartControl SmartControl 6 лет назад #
Обновитесь, пожалуйста. Тип поля поправил, ошибки не будет. Главное не забывайте указывать "@" в начале канала.
+1
Dorimen Dorimen 6 лет назад #
http://take.ms/69JFQ - Telegram API не хочет сохранять в настройках название канала чата, хотя именно в Телеграмме оно такое...
+1
Shuma Shuma 6 лет назад #
Проблема решается, если прописать значение данного поля через phpmyadmin в таблице cms_controllers
0
Dorimen Dorimen 6 лет назад #
Спасибо
0
Dorimen Dorimen 6 лет назад #
Сохранил в настройках без названия канала, а в БД все равно пишется как http://take.ms/kJ8TD (хотя тут вот настройки-то есть http://take.ms/MYbOu)
0
Shuma Shuma 6 лет назад #
в базе напротив строки activity_on: 1, а напротив строки telegram_channel: @name_your_channel
0
Dorimen Dorimen 6 лет назад #
Спасибо. Получилось. А Вы SmartChat используете?
0
Shuma Shuma 6 лет назад #
Нет, не приобретал его
0
SmartControl SmartControl 6 лет назад #
Проблема в символе "_" - я подготовил новую версию, там убран фильтр. И можно сохранить название канала как обычно в админке, без правок БД.
0
Сергей Сергей 6 лет назад #
Всем доброго времечка. Может кто на 2.8.2 имеет данное Telegram API, вопрос как полёт? На 2.9.0 у меня не завелось. scratch
0
ravilwild ravilwild 6 месяцев назад #

Смотрю последние комментарии 5 лет назад. За это время компонент не обновлялся? Хотелось бы попробовать на последней версии instantcms. Будет работать?

Еще думаю было бы неплохо добавить в бот возможность поиска пользователей на сайте

0
fincheck fincheck 6 месяцев назад #

Смотрю вы не так давно на форуме. Данный разработчик появился как гром среди ясного неба и как начал клепать годные компоненты — Smart Slider, визуальный редактор и многое другое, а и мобильное приложение анонсировал, я даже купил. Но потом пропал так же, как и появился. 

0
ravilwild ravilwild 5 месяцев назад #

Да, действительно недавно. Ни чьих заслуг не умаляю. Лишь сожалению, что нет обновлений

Еще от автора

Stylik - визуальный редактор CSS стилей
Всем привет, Это первый компонент из серии (Шаблон + Лендинг + Редактор). Он позволяет кастомизицировать любой шаблон под InstantCMS 2.
Smart Шаблон на Bootstrap 4, Первое знакомство
Приветствую. В этом шаблоне нет привычной заранее заданной схемы позиций. Любая схема создается вручную за пару минут.
Загрузка с Google Images и Релевантные видео Youtube
Приветствую, В этом посте расскажу сразу про две доработки.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.