dartTelegram - отправка заказов, форм и сообщений в Telegram

dartTelegram – компонент для отправки сообщений в Telegram. Данный компонент имеет многоуровневую систему уведомлений. Скачать компонент вы можете в репозитории modstore.pro. То есть можно настроить сообщения так, чтобы, например, критические ошибки или уведомления падали разработчику, заявки менеджеру и так далее. По умолчанию, в компоненте есть следующие уровни уведомлений:

Ключ Наименование

FATAL

Фатальные ошибки

ERROR

Ошибки

WARN

Предупреждения

INFO

Информационные

DEBUG

Отладка

Для каждого уровня уведомлений можно задать своего бота и свой набор чатов для отправки сообщений. Уровень уведомления содержит следующие поля:

Ключ Наименование Описание

ID

Идентификатор

 

name

Наименование

 

chats

Список чатов

Список чатов через запятую

token

Токен

Токен чат бота

description

Описание

 

active

Активность

 

В комплекте с компонентом идет плагин dartTelegram, который срабатывает на событие msOnCreateOrder и отправляет данные по заказу в чат, указанный в уровне уведомлений из системноу настройки darttelegram_order_level. Если вам необходимо задействовать дополнительные события, то, во избежание перезаписи кода при обновлении, необходимо создать дополнительный плагин использовав дефолтный, как основу для кода.

Пример сообщения о новом заказе:

dartTelegram

dartTelegramHook

Также компонент содержит сниппет dartTelegramHook, который мы можем использовать в вызовах formIt и ajaxForm. Сниппет лучше вызывать до хука email, тогда, если email не отправит письмо, то сообщение в Telegram с вероятностью 99% будет доставлено. Сниппет получает следующие параметры:

Параметр Наименование Значение по умолчанию Пример заполнения

dtLevel

Уровень уведомлений

INFO

 

dtFields

Поля для сообщения, если не указано, то в сообщении придет массив POST.

[]

[
'name' => 'Имя',
'phone' => 'Телефон',
'text' => 'Комментарий',
]

formName

Наименование формы

   

Пример вызова на fenom:

        {$_modx->runSnippet("!AjaxForm", [
        	'snippet' => 'FormIt',
        	'form' => '@FILE chunks/form_callback.tpl',
        	'hooks' => 'nospam,FormItSaveForm,dartTelegramHook,email',
        	'emailTpl' => '@FILE chunks/email_email.tpl',
        	'emailSubject' => 'Заказ звонка',
        	'emailTo' => $_modx->getPlaceholder("+conf_to_email"),
        	'emailFrom' => $_modx->config.emailsender,
        	'formName' => 'Заказ звонка',
        	'validate' => 'page:required,name:required,phone:required,username:blank',
        	'dtLevel' => 'FATAL',
        	'dtFields' => [
        		'name' => 'Имя',
        		'phone' => 'Телефон',
        		'text' => 'Комментарий',
        	]
        ])}
    

Обратите внимание на корректный порядок вызова хуков:

  1. Проверка на спам хуком nospam
  2. Сохранение формы в панели администратора хуком FormItSaveForm
  3. Отправка сообщение в телеграм хуком dartTelegramHook
  4. Отправка на почту хуком email

Даже, если сбойнет и телеграм и почта, то форма точно сохранится в панели администратора и лид не пропадет.

Пример сообщения об успешно заполненной форме:

dartTelegram

Системные настройки

Ключ Наименование Описание

darttelegram_api_url

URL API

URL для запросов к Telegram API

darttelegram_bot_token

Токен бота

Токен бота, который получили у @BotFather

darttelegram_log

Лог запросов

Включение/Отключение лога запросов

darttelegram_order_chunk

Чанк сообщения о заказе

Лучше оставить дефолтный чанк (tpl.dartTelegram.order), как эталонный вариант. Обратите внимание, что символом переноса строки является «FF»

darttelegram_order_level

Уровень уведомлений о заказе

Убедитесь, что он создан и активен

darttelegram_parse_mode

Режим парсинга сообщений

Доступны «HTML», «MarkdownV2» и «Markdown»

По умолчанию, если в уровне уведомлений не указан токен бота, будет использоваться бот, который указан в системных настройках.

Создание Telegram бота

Для начала находим контакт @BotFather. Обратите внимание, у него справа от имени есть подтверждающая галочка.

dartTelegram

Потом нажимаем Start и пишем контакту @BotFather сообщение "/newbot":

dartTelegram

Далее нужно будет написать имя бота:

dartTelegram

Далее пишем username бота, который обязательно должен заканчиваться на “_bot”:

dartTelegram

По итогу нам @BotFather выдаст ключ для API запросов, который мы сможем использовать в нашем компоненте. Пишем сначала нашему боту (можно кликнуть по ссылке в сообщении с API ключом и нажать кнопку “Запустить”) что-нибудь, например, “прием”:

dartTelegram

Бот у нас молчаливый, но наша задача стоит в том, чтобы заставить его говорить. Теперь переходим в панель администратора, открываем системные настройки и указываем API ключ нашего бота в настройке darttelegram_bot_token:

dartTelegram

Далее идем в Пакеты->dartTelegram и кликаем на кнопку “Проверка обновлений бота”:

dartTelegram

Как к нам придет ответ, там будет ID чата, который мы сможем указать для уровня уведомлений. Также можно добавить бота в групповой чат и также после добавления что-то в него написать. Обратите внимание: ID групповых чатов начинается с символа “-”.

dartTelegram

Если вдруг, результат пришел пустой, напишите в чат еще что-нибудь и снова нажмите кнопку “Проверить”. Далее, заполнив в нужный уровень уведомлений список чатов мы можем протестировать работу нашего бота с помощью компонента modalConsole, выполнив следующий код (обратите внимание на уровень уведомлений):

        <?php
            if(is_dir($modx->getOption('core_path').'components/darttelegram/model/')) {
            	$corePath = $modx->getOption('darttelegram_core_path', array(), $modx->getOption('core_path') . 'components/darttelegram/');
            	$darttelegram = $modx->getService('dartTelegram', 'dartTelegram', $corePath . 'model/', array());
            }
            
            if($darttelegram){
               	$result = $darttelegram->sendMessage("INFO", "Приветики!");
            	print_r($result);
            }
    

Если все прошло успешно, то увидим вот это:

dartTelegram

dartTelegram - отправка заказов, форм и сообщений в Telegram

0 Число голосов: 1
5
5
1
1

Комментарии ()

  1. Евгений 04 мая 2024, 18:01 # 0
    ДОброго дня!Делаю все по инструкции, но проверку не проходит. Точнее после нажатия кнопки «проверить» ничего не происходитЧто не так делаю?
    1. Андрей 04 мая 2024, 19:05 # 0
      Добрый день, воспользуйтесь этой ссылкойapi.telegram.org/bot/getUpdates
      1. Андрей 04 мая 2024, 19:06 # 0
        Добрый день, воспользуйтесь этой ссылкой:
        api.telegram.org/bot*TOKEN*/getUpdates
      2. Евгений 04 мая 2024, 18:01 # 0
        Доброго дня!После нажатия кнопки проверить ничего не проиходит.Что не так делаю?
        1. Евгений Андреевич Куценко 19 августа 2024, 22:20 # 0
          Что-то не тоже не работает. Ссылкой пользовался с токеном, но ничего не меняется. Ее надо в настройках указывать? В проверке?
          1. Петропавловский Артем 20 августа 2024, 09:36 # 0
            Добрый день! Воспользуйтесь ссылкой вида: api.telegram.org/bot*TOKEN*/getUpdates, где *TOKEN* — токен бота
            1. Евгений Андреевич Куценко 20 августа 2024, 12:06 # 0
              Разобрался ссылку в браузере можно запустить и глянуть. Работает. Жалко конечно что в самом плагине что-то не получается.Немного доработал плагин, чтобы можно было отправлять в топики (темы) чатов, хук чтобы понимал массивы и дату выводил красиво.
              1. Петропавловский Артем 20 августа 2024, 12:10 # 0
                Можете поделиться наработками, если хотите, в следующее обновление внесу их с указанием вашего авторства в Changelog.

            Наши клиенты

            Многие компании уже доверяют нам. Будьте в их числе!

            Хотите реализовать проект?

            Контакты

            Напишите нам - мы расскажем вам много интересного!


            Пермь, шоссе Космонавтов 252, офис 218