Сообщения в Telegram: відмінності між версіями
Sv (обговорення | внесок) Немає опису редагування |
Sv (обговорення | внесок) |
||
(Не показано 15 проміжних версій цього користувача) | |||
Рядок 1: | Рядок 1: | ||
==Описание== | ==Описание== | ||
Сообщения | Модуль добавляет возможность автоматических уведомлений в телеграм для: | ||
* модуля тикетов | |||
* модуля «Тикеты от пользователя» | |||
В модуле тикетов при изменении тикета исполнителю посылается уведомление, что он добавлен как исполнитель, время старта задания такое-то. Либо сообщение, что время старта задания изменилось. А также другие детали тикета | |||
==Тикеты от пользователя== | |||
Модуль «Тикеты от пользователя» заменяет стандартный модуль обмена сообщениями абонента с техподдержкой. На каждое сообщение от клиента создается тикет, который можно привязать к исполнителю и т.д. При этом текущий модуль (Сообщения в Telegram) будет дублировать сообщения в Telegram техподдержки. Настраивается шаблон какие данные и как будут показаны в Telegram. Если абонент прикрепляет изображение - оно покажется. | |||
<br><br> | <br><br> | ||
[[Файл:TelegramTickets.png|1062px]] | [[Файл:TelegramTickets.png|1062px]] | ||
<br><br> | <br><br> | ||
==Настройка== | ===Настройка=== | ||
* Создайте Телеграмм бота | * Создайте Телеграмм бота | ||
** Найдите в Телеграме учетку: @BotFather | ** Найдите в Телеграме учетку: @BotFather | ||
Рядок 16: | Рядок 23: | ||
** В ответе найдите <pre>..."chat":{"id": число ...</pre>. Число - это ваш chat id, внесите его в настройки | ** В ответе найдите <pre>..."chat":{"id": число ...</pre>. Число - это ваш chat id, внесите его в настройки | ||
* В разделе Настройки → Модули → Telegram Tickets параметр «Включить модуль» установите в «Да» | * В разделе Настройки → Модули → Telegram Tickets параметр «Включить модуль» установите в «Да» | ||
* Установите необходимые модули: <pre> | * Установите необходимые модули: | ||
<pre> | |||
sudo cpan install WWW::Telegram::BotAPI | sudo cpan install WWW::Telegram::BotAPI | ||
sudo cpan install EV | sudo cpan install EV | ||
</pre> | </pre> | ||
===Телеграм разрешает использовать не все html-теги=== | |||
На данный момент разрешено: | |||
<pre> | |||
<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> | |||
</pre> | |||
==Модуль тикетов== | |||
Есть возможность отправки данных создаваемого/изменяемого тикета в Telegram исполнителя(ей), указанного в тикете. Например, при создании наряда на подключение, монтажнику будет выслано уведомление в его личный Telegram. | |||
Необходимо: | |||
* Создать дополнительное поле (точно такое как в модуле [[Авторизация через Telegram]]): | |||
** Имя поля : Телеграм id (можно дать другое имя) | |||
** Имя поля в бд : _telegram_id (менять нельзя) | |||
** Тип поля : одна строка | |||
** Галки: убирать все пробелы, уникальное | |||
** Галка на группе сотрудников | |||
* В Настройки → Модули → Telegram Tickets в поле «Шаблон сообщения исполнителю тикета» ввести шаблон | |||
В шаблоне допустимы следующие переменные: | |||
<pre> | |||
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 - если время старта тикета изменилось | |||
</pre> | |||
К примеру: | |||
<pre> | |||
{% 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 %} | |||
</pre> | |||
Что будет происходить по данному шаблону: | |||
* При создании нового тикета, если сразу указан исполнитель: Создан тикет ХХХ. Время начала задания 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, вставит в отсылаемое сообщение слово «Создан», в противном случае «Изменен». Таким образом, при создании тикета придет сообщение: | |||
<pre> | |||
Создан тикет #123 ... | |||
</pre> | |||
Возможно, сотрудники не захотят получать сообщения о каждом изменении тикета. А только о его создании. Тогда вы можете создать такой шаблон: | |||
<pre> | |||
{% if operation eq 'insert' %} | |||
Создан тикет. | |||
id: {{id}} | |||
тема: {{subject}} | |||
{% endif %} | |||
</pre> | |||
Однако это не лучший вариант т.к. в момент создания тикета исполнитель(ли) могут не быть указаны. И тогда после их добавления, они не получат уведомления. В этом случае можно поступить так: | |||
<pre> | |||
{% if new_performer %} | |||
{% if operation eq 'insert' %}Создан{% else %}Изменен{% endif %} тикет #{{id}} "{{subject}}: | |||
<pre> | |||
{{comment}} | |||
</pre> | |||
{% endif %} | |||
</pre> | |||
Уведомление будет выслано лишь один раз в момент добавления исполнителя. |
Поточна версія на 07:15, 5 серпня 2023
Описание
Модуль добавляет возможность автоматических уведомлений в телеграм для:
- модуля тикетов
- модуля «Тикеты от пользователя»
В модуле тикетов при изменении тикета исполнителю посылается уведомление, что он добавлен как исполнитель, время старта задания такое-то. Либо сообщение, что время старта задания изменилось. А также другие детали тикета
Тикеты от пользователя
Модуль «Тикеты от пользователя» заменяет стандартный модуль обмена сообщениями абонента с техподдержкой. На каждое сообщение от клиента создается тикет, который можно привязать к исполнителю и т.д. При этом текущий модуль (Сообщения в 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 %}
Уведомление будет выслано лишь один раз в момент добавления исполнителя.