Интеграция OTRS -> Telegram (1)

Только для готовых решений! Пожалуйста, не используйте для вопросов и обсуждений!

Модератор: ykolesnikov

samd
OTRS Новобранец
Сообщения: 15
Зарегистрирован: 10 сен 2014, 10:41
Откуда: ООО "РДП Инновации"
Благодарил (а): 2 раза
Поблагодарили: 7 раз
Контактная информация:

Интеграция OTRS -> Telegram (1)

Сообщение samd » 01 май 2020, 18:55

Пример интеграции OTRS и Telegram основан на примере интеграции OTRS и Slack:
viewtopic.php?f=2&t=927&p=25053#p25053

Основная цель интеграции - получение уведомлений в Telegram о появлении новых или изменении статусов уже открытых тикетов в OTRS. Штатным средством уведомления агентов в OTRS является почта. Получение уведомлений почтой не всегда удобно. Особенно, когда тикетов не так много.
Чтобы дифференцировать тикеты мы будем использовать разные очереди OTRS. За каждой очередью у нас следит отдельная группа инженеров. Таким образом, мы должны будем создать несколько групп в Telegram и подписать на группы отдельных инженеров.

Интеграция протестирована на OTRS версий 5 и 6.
В OTRS 5 для доступа к Telegram Bot API используются настройки Proxy Server для системного UserAgent OTRS, который может использоваться для работы других API. Это может быть критично, в случае наличия последних. Будьте внимательны.
Последний раз редактировалось samd 01 май 2020, 19:09, всего редактировалось 1 раз.
С уважением Дмитрий.
OTRS 5.0.21 CentOS 7 x64 Linux with MySQL 5.7

samd
OTRS Новобранец
Сообщения: 15
Зарегистрирован: 10 сен 2014, 10:41
Откуда: ООО "РДП Инновации"
Благодарил (а): 2 раза
Поблагодарили: 7 раз
Контактная информация:

Интеграция OTRS -> Telegram (2)

Сообщение samd » 01 май 2020, 18:59

Настройка Telegram Bot

Настройка Telegram Bot осуществляется через специального Bot'a c именем BotFather - крестного отца всех ботов. Просто напишите BotFather команду newbot и следуйте инструкциям.
Подробнее можно почитать тут: https://tlgrm.ru/docs/bots
После создания бота нужно скопировать его BOTToken вида:

Код: Выделить всё

12356789:A2HdqTcvCH1vGWJxfSeofSAs0K5PALDsaw 
Далее нам необходимо создать несколько групп в Telegram с участием созданного бота. Инженеров можете добавить сразу или после отладки.
После создания групп нужно выяснить их ID. ID группы - это отрицательное целое число. Выяснить его можно сформировав http get запрос на API вашего бота:

Код: Выделить всё

https://api.telegram.org/bot<BOTToken>/getUpdates
Основная проблема это недоступность данного адреса из российского сегмента Интернет (в 2020 году это уже не актуально). Поэтому тут могут пригодиться различные http прокси в браузере или командная строка linux сервера за рубежом.
Отправьте любое сообщение в группу. Затем либо в браузере с настроенным прокси наберите в адресной строке:
https://api.telegram.org/bot<BOTToken>/getUpdates
, либо в консоли вашего сервера:

Код: Выделить всё

curl -i -X POST https://api.telegram.org/bot<BOTToken>/getUpdates
В ответе сервера Telegram есть объект "chat". Его "id" и есть искомое число (в примере -1111111):

Код: Выделить всё

{"update_id":8393,"message":{"message_id":3,"from":{"id":7474,"first_name":"AAA"},"chat":{"id":-1111111,"title":""},"date":25497,"new_chat_participant":{"id":71,"first_name":"NAME","username":"YOUR_BOT_NAME"}}}
В 2020 году можно воспользоваться специальным Ботом: t.me/ShowJsonBot
Последний раз редактировалось samd 02 окт 2020, 12:56, всего редактировалось 4 раза.
С уважением Дмитрий.
OTRS 5.0.21 CentOS 7 x64 Linux with MySQL 5.7

samd
OTRS Новобранец
Сообщения: 15
Зарегистрирован: 10 сен 2014, 10:41
Откуда: ООО "РДП Инновации"
Благодарил (а): 2 раза
Поблагодарили: 7 раз
Контактная информация:

Интеграция OTRS -> Telegram (3)

Сообщение samd » 01 май 2020, 19:02

Настройка OTRS

[*]Добавление файлов Web Service
В файловую систему OTRS сервера нужно добавить файл:
- TelegramTxt.pm (файл с Invoker модулем, который будет готовить данные для POST-запроса в Telegram:

В приложении архив с необходимым фалом. Скопируйте его на сервер с OTRS.
Создайте директорию, извлеките из архива скопируйте файл:

Код: Выделить всё

mkdir -p /opt/otrs/Custom/Kernel/GenericInterface/Invoker/Telegram
tar xvfz ./GenericInterface.tar.gz
cp ./GenericInterface/Invoker/Telegram/TelegramTxt.pm /opt/otrs/Custom/Kernel/GenericInterface/Invoker/Telegram/
Не забываем о правах. Все файлы каталоги в каталоге OTRS должны принадлежать пользователю, от имени которого выполняется OTRS:

Код: Выделить всё

cd /opt/otrs/Custom/Kernel/
sudo chown -R otrs:apache ./GenericInterface
sudo /opt/otrs/bin/otrs.SetPermissions.pl --otrs-user='otrs' --web-group='apache'
, где
otrs - имя пользователя, от имени которого запущен OTRS,
apache - группа пользователя, от имени которого запущен OTRS.
Вложения
GenericInterface.tar.gz
(9.66 КБ) 1313 скачиваний
Последний раз редактировалось samd 01 май 2020, 19:29, всего редактировалось 5 раз.
С уважением Дмитрий.
OTRS 5.0.21 CentOS 7 x64 Linux with MySQL 5.7

samd
OTRS Новобранец
Сообщения: 15
Зарегистрирован: 10 сен 2014, 10:41
Откуда: ООО "РДП Инновации"
Благодарил (а): 2 раза
Поблагодарили: 7 раз
Контактная информация:

Интеграция OTRS -> Telegram (4)

Сообщение samd » 01 май 2020, 19:05

Регистрация нового WEB Service в OTRS

Для начала необходимо зарегистрировать новый WEB Service. Делается это модификацией файла GenericInterface.xml

Для OTRS версии 5:
Этот файл находится:

Код: Выделить всё

/opt/otrs/Kernel/Config/Files/GenericInterface.xml
Cохраним оригинальный файл:

Код: Выделить всё

cd /opt/otrs/Kernel/Config/Files/
cp -p ./GenericInterface.xml ./GenericInterface.xml.orig
В файл /opt/otrs/Kernel/Config/Files/GenericInterface.xml добавим строки:

Код: Выделить всё

    <ConfigItem Name="GenericInterface::Invoker::Module###Telegram::TelegramTxt" Required="0" Valid="0">
        <Description Translatable="1">GenericInterface module registration for the invoker layer.</Description>
        <Group>GenericInterface</Group>
        <SubGroup>GenericInterface::Invoker::ModuleRegistration</SubGroup>
        <Setting>
            <Hash>
                <Item Key="Name">TelegramTxt</Item>
                <Item Key="Controller">Telegram</Item>
                <Item Key="ConfigDialog">AdminGenericInterfaceInvokerDefault</Item>
            </Hash>
        </Setting>
    </ConfigItem>

Для OTRS версии 6:
Этот файл находится:

Код: Выделить всё

/opt/otrs/Kernel/Config/Files/XML/GenericInterface.xml
Cохраним оригинальный файл:

Код: Выделить всё

cd /opt/otrs/Kernel/Config/Files/XML/
cp -p ./GenericInterface.xml ./GenericInterface.xml.orig
В файл /opt/otrs/Kernel/Config/Files/XML/GenericInterface.xml добавим строки:

Код: Выделить всё

    <Setting Name="GenericInterface::Invoker::Module###Telegram::TelegramTxt" Required="0" Valid="0">
        <Description Translatable="1">GenericInterface module registration for the invoker layer.</Description>
        <Navigation>GenericInterface::Invoker::ModuleRegistration</Navigation>
        <Value>
            <Hash>
                <Item Key="Name">TelegramTxt</Item>
                <Item Key="Controller">Telegram</Item>
                <Item Key="ConfigDialog">AdminGenericInterfaceInvokerDefault</Item>
            </Hash>
        </Value>
    </Setting>
Я ориентировался на преконфигурированный Web Service с именем TestSimple. Он есть в штатной поставке OTRS.
В OTRS 6 для импорта сделанных настроек нужно выполнить:

Код: Выделить всё

sudo -u otrs /opt/otrs/bin/otrs.Console.pl Maint::Config::Rebuild
Делаем "restart httpd":

Код: Выделить всё

systemctl restart httpd
Теперь необходимо включить наш модуль в OTRS, чтобы иметь возможность выбрать его в веб-сервисах.
Для этого необходимо зайти в Администрирование/Конф.системы/GenericInterface --> GenericInterface::Invoker::ModuleRegistration
И поставить галочку напротив сконфигурированного сервиса TelegramTxt.
Последний раз редактировалось samd 13 ноя 2020, 00:23, всего редактировалось 6 раз.
С уважением Дмитрий.
OTRS 5.0.21 CentOS 7 x64 Linux with MySQL 5.7

samd
OTRS Новобранец
Сообщения: 15
Зарегистрирован: 10 сен 2014, 10:41
Откуда: ООО "РДП Инновации"
Благодарил (а): 2 раза
Поблагодарили: 7 раз
Контактная информация:

Интеграция OTRS -> Telegram (5)

Сообщение samd » 01 май 2020, 19:08

Настройка Web Service в OTRS

В административной панели OTRS необходимо создать новый сервис:
Admin --> Web Service Management --> Add Web Service
С параметрами:

Код: Выделить всё

General:
    Name: Telegram
    Debug threshold: Debug
OTRS as requester:
    Settings:
        Network transport: HTTP::REST
    Invokers: 
        Name: Telegram
        CONTROLLER: Telegram::TelegramTxt
Далее необходимо сконфигурировать Network transport и Invoker. Кнопки Configure появятся сразу после сохранения выбранных параметров.

Network transport
Здесь важно выдержать параметры в точности, как описано.
Главное:
1) Telegram API работает только через https.
2) Telegram API не доступен в российском сегменте Интернет и поэтому нужно использовать http-прокси.
3) REST-Api OTRS далек от совершенства и не работает без указания пользователя и пароля для Basic Auth в адресе прокси-сервера (хотя должен).

Параметры для OTRS 6:

Код: Выделить всё

Type: HTTP::REST
Endpoint: https://api.telegram.org/bot<BOTToken>
Authentication:
Use Proxy Options: Yes
Proxy Server: http://user:password@ip_address:port
Proxy User:
Proxy Password:
Skip Proxy: No
Use SSL Options: No
Controller mapping for Invoker 'Telegram': sendMessage
Valid request command for Invoker 'Telegram': POST
Default command: POST
Параметры для OTRS 5:

Код: Выделить всё

Type: HTTP::REST
Endpoint: https://api.telegram.org/bot<BOTToken>
Authentication:
Use SSL Options: No
Controller mapping for Invoker 'Telegram': sendMessage
Valid request command for Invoker 'Telegram': POST
Default command: POST
Параметры Proxy Server используются из глобального конфига(Core::WebUserAgent):

Код: Выделить всё

Timeout: 15
Proxy: http://user:password@ip_address:port
DisableSSLVerification: No

Invoker

Код: Выделить всё

Name: Telegram
Invoker backend: Telegram::TelegramTxt
Mapping for outgoing request data: Simple
Mapping for incoming request data: Simple
Event Triggers: 
    EVENT: TicketCreate
    ASYNCHRONOUS: Yes
    CONDITION: No
Simple Mapping for Data
Если вы планируете отправлять сообщения в несколько разных групп Telegram, то здесь нужно сконфигурировать соответствие имен полей и их значений между OTRS и Telegram.
Дело в том, что по умолчанию POST-запрос в теле содержит словарь {ключ: значение}. В нашем случае это будет словарь подобный следующему:

Код: Выделить всё

{
    "text" :    "#2020033007000174
                Customer: ИмяКастомера
                Queue: queue1
                Priority: 3 normal
                State: new
                Owner: root@localhost
                Responsible: root@localhost
                Changed : 2020-03-30 17:50:44

                http://otrs.hostname/otrs/index.pl?Action=AgentTicketZoom;TicketID=73",
    "queue" :   "queue1"
}
Для тех кто не знаком с темой полезно будет протестировать обмен запросами с помощью curl или Postman (предварительно замените адрес запроса на полученный в Mattermost Incoming Webhook:

Код: Выделить всё

curl -i -X POST -H 'Content-Type: application/json' -d '{"text": "[inline URL](http://yandex.ru)", "chat_id": "-100500"}' https://api.telegram.org/bot<BOTToken>/sendMessage
Последняя пара ключ-значение содержит имя очереди нового тикета. Мы будем её мапить (отображать) в нужную нам группу Telegram.
В моём случае разные очереди в OTRS обслуживаются разными группами агентов (инженеров). Таким образом, каждая из групп агентов будет читать свою группу Telegram.
Чтобы настроить отображение очереди OTRS в группу Telegram нужно настроить Mapping for Outgoing Data в сконфигурированном Invoker'е.

Код: Выделить всё

Default rule for unmapped keys: Keep (leave unchanged)
Default rule for unmapped values: Keep (leave unchanged)

Mapping for Key channel*
    Key mapping:
        Map key: queue
        matching the: Exact value(s)
        to new key: chat_id

    Value mapping:
        Map value: queue1
        matching the: Exact value(s)
        to new value: -333333333

        Map value: queue2
        matching the: Exact value(s)
        to new value: -222222222

        Map value: [\w\W]*
        matching the: Regular expression
        to new value: -111111111
Вы можете настроить свою логику.

Так же необходимо настроить мапинг ответов на наши POST-запросы. Telegram API в случае успешного приема POST-запроса отвечает JSON-сериализоваными данными. Статус как обычно в заголовке и в поле "OK", значение которого 1 или 0.

Настроим маппинг ответов на запросы:

Default rule for unmapped keys: Keep (leave unchanged)
Default rule for unmapped values: Keep (leave unchanged)

Код: Выделить всё

Mapping For Key text*
    Key mapping: 
        map key: ok
        matching the: Exact value(s)
        to new key: text

    Value mapping:
        Map value: 1
        matching the: Exact value(s)
        to new value: ok
    Value mapping:
        Map value: 0
        matching the: Exact value(s)
        to new value: error
Debugging
В интерфейсе настройки Web Service слева нижняя кнопка "Debugger". При нажатии на нее вы можете посмотреть как обрабатывается POST-запрос после появления нового тикета.
Здесь виден и сам сформированный запрос и его отображение в процессе маппинга и ответ на запрос.
Последний раз редактировалось samd 07 сен 2020, 18:42, всего редактировалось 1 раз.
С уважением Дмитрий.
OTRS 5.0.21 CentOS 7 x64 Linux with MySQL 5.7

psina
OTRS Новобранец
Сообщения: 16
Зарегистрирован: 02 фев 2013, 20:05
Поблагодарили: 1 раз

Re: Интеграция OTRS -> Telegram (1)

Сообщение psina » 03 июн 2020, 18:36

Огромный респект за проделанную работу и пост. То - чего не хватало

У меня все взлетело

Одна правка:
Опечатка cd /opt/otrs/Kernel/Config/Files/, заменить на cd /opt/otrs/Kernel/Config/Files/XML
Prod: OTRS ITSM 5.0.22 on CentOS 6.9 x64 Linux with MySQL

Screwie
OTRS Новобранец
Сообщения: 22
Зарегистрирован: 01 июл 2019, 12:50
Благодарил (а): 4 раза
Поблагодарили: 4 раза

Re: Интеграция OTRS -> Telegram (1)

Сообщение Screwie » 03 июл 2020, 14:36

Просто супер гайд! Все взлетело, коллегам в отпусках прям нужно. Только на новые тикеты по их очередям поставил, отсекает весь ненужный хлам с уведомлениями в почте.
Респект, спасибо.
OTRS 6.0.19

darkimos
OTRS Новобранец
Сообщения: 7
Зарегистрирован: 13 фев 2020, 18:09

Re: Интеграция OTRS -> Telegram (1)

Сообщение darkimos » 29 июл 2020, 09:22

не могу понять куда это:

Параметры для OTRS 6:
КОД: ВЫДЕЛИТЬ ВСЁ

Type: HTTP::REST
Endpoint: https://api.telegram.org/bot<BOTToken>
Authentication:
Use Proxy Options: Yes
Proxy Server: http://user:password@ip_address:port
Proxy User:
Proxy Password:
Skip Proxy: No
Use SSL Options: No
Controller mapping for Invoker 'Telegram': sendMessage
Valid request command for Invoker 'Telegram': POST
Default command: POST

darkimos
OTRS Новобранец
Сообщения: 7
Зарегистрирован: 13 фев 2020, 18:09

Re: Интеграция OTRS -> Telegram (1)

Сообщение darkimos » 29 июл 2020, 13:10

и сейчас же без прокси можно ведь

samd
OTRS Новобранец
Сообщения: 15
Зарегистрирован: 10 сен 2014, 10:41
Откуда: ООО "РДП Инновации"
Благодарил (а): 2 раза
Поблагодарили: 7 раз
Контактная информация:

Re: Интеграция OTRS -> Telegram (1)

Сообщение samd » 07 сен 2020, 18:47

Это настройки Admin->Web-Services->Ваш_Сервис

И Да! Теперь можно без прокси.
С уважением Дмитрий.
OTRS 5.0.21 CentOS 7 x64 Linux with MySQL 5.7

walerjahn
OTRS Новобранец
Сообщения: 1
Зарегистрирован: 09 сен 2020, 23:36

Re: Интеграция OTRS -> Telegram (1)

Сообщение walerjahn » 10 сен 2020, 03:19

http://prntscr.com/uel9vq

А вот так вот должно быть?

spike3run
OTRS Новобранец
Сообщения: 2
Зарегистрирован: 10 сен 2020, 10:29

Re: Интеграция OTRS -> Telegram (1)

Сообщение spike3run » 10 сен 2020, 12:08

Я что-то плыву.. Вроде все сделал по инструкции, но бот отправляет мне запрос в стиле : Поступила новая заявка/sendMessage, ито это после настроек в Network Transport https://api.telegram.org/bot<token>/sen ... =Поступила новая заявка

а в Controller mapping for Invoker 'Telegram': я написал sendMessage, его и передает, как слово) Где-то в инвокере недонастроил или не пойму что. просто первый раз поднял отрс, и сейчас развлекаюсь с уведомлениями в телеграмме. прошу прощения за мою тупость.

spike3run
OTRS Новобранец
Сообщения: 2
Зарегистрирован: 10 сен 2020, 10:29

Re: Интеграция OTRS -> Telegram (1)

Сообщение spike3run » 10 сен 2020, 16:40

walerjahn писал(а):
10 сен 2020, 03:19
http://prntscr.com/uel9vq

А вот так вот должно быть?
по идее да, я тоже так настроил

samd
OTRS Новобранец
Сообщения: 15
Зарегистрирован: 10 сен 2014, 10:41
Откуда: ООО "РДП Инновации"
Благодарил (а): 2 раза
Поблагодарили: 7 раз
Контактная информация:

Re: Интеграция OTRS -> Telegram (1)

Сообщение samd » 02 окт 2020, 12:12

walerjahn писал(а):
10 сен 2020, 03:19
http://prntscr.com/uel9vq

А вот так вот должно быть?
Можно и так.
С уважением Дмитрий.
OTRS 5.0.21 CentOS 7 x64 Linux with MySQL 5.7

samd
OTRS Новобранец
Сообщения: 15
Зарегистрирован: 10 сен 2014, 10:41
Откуда: ООО "РДП Инновации"
Благодарил (а): 2 раза
Поблагодарили: 7 раз
Контактная информация:

Re: Интеграция OTRS -> Telegram (1)

Сообщение samd » 02 окт 2020, 12:17

spike3run писал(а):
10 сен 2020, 12:08
Я что-то плыву.. Вроде все сделал по инструкции, но бот отправляет мне запрос в стиле : Поступила новая заявка/sendMessage, ито это после настроек в Network Transport https://api.telegram.org/bot<token>/sen ... =Поступила новая заявка

а в Controller mapping for Invoker 'Telegram': я написал sendMessage, его и передает, как слово) Где-то в инвокере недонастроил или не пойму что. просто первый раз поднял отрс, и сейчас развлекаюсь с уведомлениями в телеграмме. прошу прощения за мою тупость.
Очевидно, что транспорт не должен содержать слово sendMessage. То есть должен иметь вид:

Код: Выделить всё

https://api.telegram.org:443/bot435435456:dfredfvcxd-qt0-drfgtredfrtgfdsedfrt
В то же время Controller mapping for Invoker 'Telegram' должен быть:

Код: Выделить всё

sendMessage
С уважением Дмитрий.
OTRS 5.0.21 CentOS 7 x64 Linux with MySQL 5.7

alexandr.kv
OTRS Новобранец
Сообщения: 17
Зарегистрирован: 29 мар 2020, 13:08

Re: Интеграция OTRS -> Telegram (1)

Сообщение alexandr.kv » 14 янв 2021, 22:04

Доброго вечера!
Подскажите, как можно добавить в оповещении больше информации о заявке?
Штатно выводится вот так:
Customer: $CustomerCompany{CustomerCompanyName}
Queue: $Ticket{Queue}
Priority: $Ticket{Priority}
State: $Ticket{State}
Owner: $Ticket{Owner}
Responsible: $Ticket{Responsible}
Changed : $Ticket{Changed}

Хотелось бы добавить инициатора заявки (OTRS_CUSTOMER_REALNAME) и описание задания (OTRS_CUSTOMER_BODY[30] )
Это возможно?
OTRS 6 on Ubuntu 18.04.4 with MySQL 5.7

alexus
OTRS Гуру
Сообщения: 5208
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 94 раза
Поблагодарили: 84 раза

Re: Интеграция OTRS -> Telegram (1)

Сообщение alexus » 19 янв 2021, 13:56

alexandr.kv писал(а):
14 янв 2021, 22:04
Хотелось бы добавить инициатора заявки (OTRS_CUSTOMER_REALNAME) и описание задания (OTRS_CUSTOMER_BODY[30] )
Это возможно?
Эти тэги не являются стандартными атрибутами тикета. В уведомлениях для них реализована специальная обработка. Так что тут нужна доработка
С уважением,
Алексей Юсов

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

Screwie
OTRS Новобранец
Сообщения: 22
Зарегистрирован: 01 июл 2019, 12:50
Благодарил (а): 4 раза
Поблагодарили: 4 раза

Re: Интеграция OTRS -> Telegram (1)

Сообщение Screwie » 09 мар 2021, 12:05

alexus писал(а):
19 янв 2021, 13:56
alexandr.kv писал(а):
14 янв 2021, 22:04
Хотелось бы добавить инициатора заявки (OTRS_CUSTOMER_REALNAME) и описание задания (OTRS_CUSTOMER_BODY[30] )
Это возможно?
Эти тэги не являются стандартными атрибутами тикета. В уведомлениях для них реализована специальная обработка. Так что тут нужна доработка
А чтобы хотябы email отправителя добавить, какой прописать код?
OTRS 6.0.19

dorger
OTRS Новобранец
Сообщения: 3
Зарегистрирован: 09 апр 2021, 16:07
Благодарил (а): 1 раз

Re: Интеграция OTRS -> Telegram (1)

Сообщение dorger » 21 апр 2021, 18:10

Screwie писал(а):
09 мар 2021, 12:05
alexus писал(а):
19 янв 2021, 13:56
alexandr.kv писал(а):
14 янв 2021, 22:04
Хотелось бы добавить инициатора заявки (OTRS_CUSTOMER_REALNAME) и описание задания (OTRS_CUSTOMER_BODY[30] )
Это возможно?
Эти тэги не являются стандартными атрибутами тикета. В уведомлениях для них реализована специальная обработка. Так что тут нужна доработка
А чтобы хотябы email отправителя добавить, какой прописать код?
Для этого нужно дописать TelegramTxt.pl.

До формирования ($TeleText{Data}->{text}=qq{ необходимо из OTRS получить CustomerUser, сделать это можно следующим образом:

Код: Выделить всё

my %CustomerUser = $CustomerUserObject->CustomerUserDataGet(
        User => $Ticket{CustomerUserID} ,
            );
Далее уже в формировании сообщения обращаемся к данному объекту, что бы получить нужные параметры. Например, для имени и фамилии заявителя

Код: Выделить всё

Person: $CustomerUser{UserFirstname} $CustomerUser{UserLastname}
Полный пример формирования текста:

Код: Выделить всё

my %CustomerUser = $CustomerUserObject->CustomerUserDataGet(
        User => $Ticket{CustomerUserID} ,
            );
            
($TeleText{Data}->{text}=qq{
    NEW: #$Ticket{TicketNumber}
    Department: $Ticket{CustomerID}
    Person ID: $Ticket{CustomerUserID}
    Person: $CustomerUser{UserFirstname} $CustomerUser{UserLastname}
    Title: $Ticket{Title}
    Type: $Ticket{Type}
    Changed : $Ticket{Changed}
    }) =~ s/^[\t ]*//mg;

cheba
OTRS Новобранец
Сообщения: 9
Зарегистрирован: 20 май 2021, 13:59
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Re: Интеграция OTRS -> Telegram (1)

Сообщение cheba » 20 май 2021, 16:46

Доброго времени суток. А можно как-то вытащить текст заявки? Не титул, а сам текст? И ещё, можно: Department, Person ID, Person, Title передавать в телегу кириллицей?

alex.t
OTRS Новобранец
Сообщения: 30
Зарегистрирован: 29 апр 2018, 09:26
Благодарил (а): 1 раз
Поблагодарили: 9 раз

Re: Интеграция OTRS -> Telegram (1)

Сообщение alex.t » 30 июл 2021, 10:16

Для добавления в сообщение текста, надо в файл TelegramTxt.pm добавить:

Код: Выделить всё

# Получаем текст первого артикла
    my $ArticleObject = $Kernel::OM->Get('Kernel::System::Ticket::Article');

    my @ArticleList = $ArticleObject->ArticleList(
        TicketID  => $Param{Data}->{TicketID},
        OnlyFirst => 1
    );
    my %Article = $ArticleObject->BackendForArticle( %{$ArticleList[0]} )->ArticleGet( %{$ArticleList[0]} );

До вот этого блока:
    ($TeleText{Data}->{text}=qq{
        #$Ticket{TicketNumber}
	Customer: $CustomerCompany{CustomerCompanyName}
	Queue: $Ticket{Queue}
	Priority: $Ticket{Priority}
	State: $Ticket{State}
	Owner: $Ticket{Owner}

Тут вставляем полученный текст в сообщение:
    Text: $Article{Body}

	Responsible: $Ticket{Responsible}
	Changed : $Ticket{Changed}

        $Host/otrs/index.pl?Action=AgentTicketZoom;TicketID=$Param{Data}->{TicketID}
	}) =~ s/^[\t ]*//mg;

    $TeleText{Data}->{queue}=$Ticket{Queue};
    

littledpurple
OTRS Новобранец
Сообщения: 4
Зарегистрирован: 20 мар 2020, 14:24
Поблагодарили: 2 раза

Re: Интеграция OTRS -> Telegram (1)

Сообщение littledpurple » 11 авг 2021, 13:49

Здравствуйте! На GitHub есть ещё один скрипт для уведомления в телеге и там есть классная штука, что ссылка на тикет ОТРС сделана кнопкой. Можно ли так сделать и в вашем скрипте? Я пытался добавить параметр после $TeleText{Data}->{text}, но ничего хорошего не получилось :D

littledpurple
OTRS Новобранец
Сообщения: 4
Зарегистрирован: 20 мар 2020, 14:24
Поблагодарили: 2 раза

Re: Интеграция OTRS -> Telegram (1)

Сообщение littledpurple » 12 авг 2021, 17:31

Оказалось легче, чем я думал. Если кому-то ещё интересно, надо добавить вот это

Код: Выделить всё

$TeleText{Data}->{reply_markup}="{\"inline_keyboard\":[[{\"text\": \"Open Ticket\", \"url\": \"$Host/otrs/index.pl?Action=AgentTicketZoom;TicketID=$Param{Data}->{TicketID}\"}]]}";
После вот этого

Код: Выделить всё

    ($TeleText{Data}->{text}=qq{
        #$Ticket{TicketNumber}
	Customer: $CustomerCompany{CustomerCompanyName}
	Queue: $Ticket{Queue}
	Priority: $Ticket{Priority}
	State: $Ticket{State}
	Owner: $Ticket{Owner}
	Responsible: $Ticket{Responsible}
	Changed : $Ticket{Changed}

        $Host/otrs/index.pl?Action=AgentTicketZoom;TicketID=$Param{Data}->{TicketID}
	}) =~ s/^[\t ]*//mg;
В/opt/otrs/Custom/Kernel/GenericInterface/Invoker/Telegram/TelegramTxt.pm

Но! Возник ещё один вопрос. Что с кодировкой? Можно ли как-нибудь писать в .pm скрипте на русском?

alexus
OTRS Гуру
Сообщения: 5208
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 94 раза
Поблагодарили: 84 раза

Re: Интеграция OTRS -> Telegram (1)

Сообщение alexus » 01 сен 2021, 15:25

littledpurple писал(а):
12 авг 2021, 17:31

Но! Возник ещё один вопрос. Что с кодировкой? Можно ли как-нибудь писать в .pm скрипте на русском?
Можно, только кодировка должна быть UTF-8
С уважением,
Алексей Юсов

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

cheba
OTRS Новобранец
Сообщения: 9
Зарегистрирован: 20 май 2021, 13:59
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Re: Интеграция OTRS -> Telegram (1)

Сообщение cheba » 23 сен 2021, 08:37

Коллеги, большое спасибо. Текст заявки прикрутил, отлично работает. С кнопкой огромное спасибо, тоже у себя реализовал.
Остался единственный вопрос с кодировкой :( Поменял кодировку файла, но в телегу всё равно приходят крякозябры :(
QIP Shot - Screen 057.png
вот такое приходит в телегу если в файле изменить поля на русский текст.
QIP Shot - Screen 057.png (3.69 КБ) 31794 просмотра

Ответить