Сообщения в Telegram: відмінності між версіями

Матеріал з NoDeny
Перейти до навігації Перейти до пошуку
Немає опису редагування
 
(Не показані 22 проміжні версії цього користувача)
Рядок 1: Рядок 1:
==Описание==
==Описание==
Сообщения от абонентов будут дублироваться в Telegram техподдержки. Настраивается шаблон какие данные и как будут показаны в Telegram. Если абонент прикрепляет изображение - оно покажется. Для работы необходим модуль тикетов и модуль тикетов от пользователя.
Модуль добавляет возможность автоматических уведомлений в телеграм для:
* модуля тикетов
* модуля «Тикеты от пользователя»
 
В модуле тикетов при изменении тикета исполнителю посылается уведомление, что он добавлен как исполнитель, время старта задания такое-то. Либо сообщение, что время старта задания изменилось. А также другие детали тикета
 
==Тикеты от пользователя==
Модуль «Тикеты от пользователя» заменяет стандартный модуль обмена сообщениями абонента с техподдержкой. На каждое сообщение от клиента создается тикет, который можно привязать к исполнителю и т.д. При этом текущий модуль (Сообщения в Telegram) будет дублировать сообщения в Telegram техподдержки. Настраивается шаблон какие данные и как будут показаны в Telegram. Если абонент прикрепляет изображение - оно покажется.
<br><br>
<br><br>
[[Файл:TelegramTickets.png|1062px]]
[[Файл:TelegramTickets.png|1062px]]
<br><br>
<br><br>
==Настройка==
===Настройка===
* Создайте Телеграмм бота
* Создайте Телеграмм бота
** Найдите в Телеграме учетку: @BotFather
** Найдите в Телеграме учетку: @BotFather
Рядок 13: Рядок 20:
** Напишите: https://ваш_сайт
** Напишите: https://ваш_сайт
* Напишите любое сообщение вашему боту в Телеграме
* Напишите любое сообщение вашему боту в Телеграме
* Откройте в браузере урл: ''https://api.telegram.org/botВАШ_ТОКЕН/getUpdates'' (например: https://api.telegram.org/bot123456789:jbd78sadvbdy63d37gda37bd8/getUpdates)
* Откройте в браузере урл: https://api.telegram.org/botВАШ_ТОКЕН/getUpdates (например: <nowiki>https://api.telegram.org/bot123456789:jbd78sadvbdy63d37gda37bd8/getUpdates</nowiki>)
** В ответе найдите <pre>..."chat":{"id": число ...</pre>. Число - это ваш chat id, внесите его в настройки
** В ответе найдите <pre>..."chat":{"id": число ...</pre>. Число - это ваш chat id, внесите его в настройки
 
* В разделе Настройки →‎ Модули →‎ 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>
&lt;b>bold&lt;/b>, &lt;strong>bold&lt;/strong>
&lt;i>italic&lt;/i>, &lt;em>italic&lt;/em>
&lt;u>underline&lt;/u>, &lt;ins>underline&lt;/ins>
&lt;s>strikethrough&lt;/s>, &lt;strike>strikethrough&lt;/strike>, &lt;del>strikethrough&lt;/del>
&lt;a href="http://www.example.com/">inline URL&lt;/a>
&lt;code>inline fixed-width code&lt;/code>
&lt;pre>pre-formatted fixed-width code block&lt;/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}}:
&lt;pre>
{{comment}}
&lt;/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 %}

Уведомление будет выслано лишь один раз в момент добавления исполнителя.