Сообщения в Telegram
Описание
Модуль добавляет возможность автоматических уведомлений в телеграм для:
- модуля тикетов
- модуля «Тикеты от пользователя»
В модуле тикетов при изменении тикета исполнителю посылается уведомление, что он добавлен как исполнитель, время старта задания такое-то. Либо сообщение, что время старта задания изменилось. А также другие детали тикета
Тикеты от пользователя
Модуль «Тикеты от пользователя» заменяет стандартный модуль обмена сообщениями абонента с техподдержкой. На каждое сообщение от клиента создается тикет, который можно привязать к исполнителю и т.д. При этом текущий модуль (Сообщения в Telegram) будет дублировать сообщения в Telegram техподдержки. Настраивается шаблон какие данные и как будут показаны в Telegram. Если абонент прикрепляет изображение - оно покажется.
Настройка
- Создайте Телеграмм бота
- Найдите в Телеграме учетку: @BotFather
- Напишите ему: /newbot
- Далее: /setname NoDenyИмяВашейСети
- В ответ получите ключ в виде XXXXXXX:XXXXXXXXXXXXXXXXXXXXX. Внесите этот ключ в раздел Настройки → Модули → Telegram Tickets в поле «Token Telegram бота»
- Далее в Телеграме: /setdomain
- Напишите: https://ваш_сайт
- Напишите любое сообщение вашему боту в Телеграме
- Откройте в браузере урл: https://api.telegram.org/botВАШ_ТОКЕН/getUpdates (например: https://api.telegram.org/bot123456789:jbd78sadvbdy63d37gda37bd8/getUpdates)
- В ответе найдите
..."chat":{"id": число ...
. Число - это ваш chat id, внесите его в настройки
- В ответе найдите
- В разделе Настройки → Модули → Telegram Tickets параметр «Включить модуль» установите в «Да»
- Установите необходимые модули:
sudo cpan install WWW::Telegram::BotAPI sudo cpan install EV
Телеграм разрешает использовать не все html-теги
На данный момент разрешено:
<b>bold</b>, <strong>bold</strong> <i>italic</i>, <em>italic</em> <u>underline</u>, <ins>underline</ins> <s>strikethrough</s>, <strike>strikethrough</strike>, <del>strikethrough</del> <a href="http://www.example.com/">inline URL</a> <code>inline fixed-width code</code> <pre>pre-formatted fixed-width code block</pre>
Модуль тикетов
Есть возможность отправки данных создаваемого/изменяемого тикета в Telegram исполнителя(ей), указанного в тикете. Например, при создании наряда на подключение, монтажнику будет выслано уведомление в его личный Telegram.
Необходимо:
- Создать дополнительное поле (точно такое как в модуле Авторизация через Telegram):
- Имя поля : Телеграм id (можно дать другое имя)
- Имя поля в бд : _telegram_id (менять нельзя)
- Тип поля : одна строка
- Галки: убирать все пробелы, уникальное
- Галка на группе сотрудников
- В Настройки → Модули → Telegram Tickets в поле «Шаблон сообщения исполнителю тикета» ввести шаблон
В шаблоне допустимы следующие переменные:
ticket_url : url тикета id : id тикета subject : тема comment : текст тикета state : состояние client_info : данные клиента, с которым связан тикет performer_info : данные исполнителя, которому отсылается уведомление new_performer : 1 - если исполнитель, которому отсылается уведомление, только что добавлен del_performer : 1 - если исполнитель, которому отсылается уведомление, только что удален operation : insert - создание тикета update - обновление тикета add_msg - добавление комментария/сообщения сотрудником start_time_msg : время старта тикета start_time_changed : 1 - если время старта тикета изменилось
К примеру:
{% if del_performer %} Вы убраны из исполнителей в тикете <a href="{{ticket_url}}">{{id}} ({{subject}})</a> {% elif new_performer || start_time_changed || start_time_removed %} {% if operation eq 'insert' %}Создан{% else %}Изменен{% endif %} тикет <a href="{{ticket_url}}">{{id}} ({{subject}})</a> {% if start_time_changed %}Время начала задания {{start_time_msg}} изменилось! {% elif start_time_removed %}Время начала задания удалено {% else %}Время начала задания {% if start_time_msg %}{{start_time_msg}}{% else %}не установлено{% endif %} {% endif %} {% endif %}
Что будет происходить по данному шаблону:
- При создании нового тикета, если сразу указан исполнитель: Создан тикет ХХХ. Время начала задания 04.04.2023 12:00
- При при изменении тикета, если добавляется исполнитель: Изменен тикет ХХХ. Время начала задания 04.04.2023 12:00
- При при изменении тикета, если время задания изменилось: Изменен тикет ХХХ. Время начала задания 04.04.2023 13:00 изменилось!
- Если исполнитель удален из тикета: Вы убраны из исполнителей в тикете ХХХ
У сотрудника необходимо:
- В его учетке внесите реальный Telegram-номер в поле «Телеграм id»
- В самом Telegram добавьте бота, которого вы создали (см. инструкцию выше для Тикетов от пользователя). Учтите, что телеграм в принципе не отправляет сообщение ни на какие номера, которые не добавят бота
- Создайте тикет и в качестве исполнителя укажите учетку сотрудника с указанным «Телеграм id». Учтите, что эта учетка не должна быть связана с вашей административной записью т.к сообщения не отправляются тому, кто изменяет тикет (зачем ему сообщать о том, что он только что сделал?)
- Напоминаем, что в NoDeny имеется возможность связать административную запись с обычной учеткой. Это делается на странице редактирования данных админа. Необходимость связываения заключается в том, что обычные учетки гибко настраиваются в плане добавления любых типов полей
- После создания тикета вы должны получить сообщение в телеграм
В шаблоне вы можете видеть конструкцию вида {% if operation eq 'insert' %} - это команда шаблонизатора, которая в случае равенства переменной operation строке insert, вставит в отсылаемое сообщение слово «Создан», в противном случае «Изменен». Таким образом, при создании тикета придет сообщение:
Создан тикет #123 ...
Возможно, сотрудники не захотят получать сообщения о каждом изменении тикета. А только о его создании. Тогда вы можете создать такой шаблон:
{% if operation eq 'insert' %} Создан тикет. id: {{id}} тема: {{subject}} {% endif %}
Однако это не лучший вариант т.к. в момент создания тикета исполнитель(ли) могут не быть указаны. И тогда после их добавления, они не получат уведомления. В этом случае можно поступить так:
{% if new_performer %} {% if operation eq 'insert' %}Создан{% else %}Изменен{% endif %} тикет #{{id}} "{{subject}}: <pre> {{comment}} </pre> {% endif %}
Уведомление будет выслано лишь один раз в момент добавления исполнителя.