k291
|
|
« : 18 Октября 2017, 01:25:42 » |
|
Можно добавить отправку сообщения в telegram? Админу: Кто оплатил + сумма платежа + способ оплаты В случае создания/ изменения тикета: номер + тема + сообщение + кто написал + ссылка на тикет Напоминание о старте тикета через N часов Клиенту: об окончании услуги Сообщение от администратора + ссылка в личный кабинет О пропаже ответа от его IP(пропажа зеленого ключика) и появлении Например для отправки сообщений определенных данных из файла: #!/bin/bash
#Telegram CHATID=341937610 APIKEY=339502684:AAFkklb2-wz3ynk5f7nxiZkt-bdYKda-J4A
#Просто текст WORKERNAME=Machin1 #Загрузка CPU CPU=$(top -b -n2 -p 1 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' -v prefix="$prefix" '{ split($1, vs, ","); v=vs[length(vs)]; sub("%", "", v); printf "%s%.1f%%\n", prefix, 100 - v }') #Часть текста из файла TOTAL_GPU_RATE=$(tail -n 30 loger.log |grep Total| tail -n 1)
MSG=" Worker: $WORKERNAME CPU: $CPU $TOTAL_GPU_RATE
/usr/bin/curl -s -X POST --output /dev/null h_ttps://api.telegram.org/bot${APIKEY}/sendMessage -d "text=${MSG}" -d chat_id=${CHATID}
|
|
|
Записан
|
|
|
|
k291
|
|
« Ответ #1 : 21 Октября 2017, 04:50:43 » |
|
Для работы отправки сообщений, необходимо установить в консоли: perl -MCPAN -e 'install WWW::Telegram::BotAPI' Далее, в /usr/local/nodeny/web/_o_tickets.pl я добавил: use WWW::Telegram::BotAPI;
#Telegram my $textMessage = "My Keyboard"; my $token = "777777777:AAF1IywqEMRsNObEXUwtiNL2Y3ygJtMVQrU"; my $chat_id = "44444444";
my $api = WWW::Telegram::BotAPI->new( token => $token); $api->sendMessage ({ chat_id => $chat_id, text => my $subject.' - '.$force_dialog.' - '.$last_author }); Сообщения приходят, но со значениями 0, null, пустым текстом. В случае $last_author, приходит HASH(0x............) с разными значениями. Подскажите, как передать тему и сообщение тикета?
|
|
|
Записан
|
|
|
|
sever
Пользователь
Карма: 1
Offline
Сообщений: 82
|
|
« Ответ #2 : 23 Октября 2017, 09:58:16 » |
|
#!/usr/bin/env bash
TOKEN='тут мой токен'
which curl &>/tmp/telegram.log
if [ $? -ne 0 ] ; then echo 'FAIL: curl not found.' && exit 1 ; fi if [ $# -ne 3 ] ; then echo 'FAIL: Params not defined.' && echo 'Usage: zabbix-to-telegram-notify.sh TelegramID Subject Message' && exit 1 ; fi
CHAT_ID="$1" SUBJECT="$2" MESSAGE="$3"
curl -s --header 'Content-Type: application/json' --request 'POST' --data "{\"chat_id\":\"${CHAT_ID}\",\"text\":\"${SUBJECT}\n${MESSAGE}\"}" "https ://api.telegram.org/bot${TOKEN}/sendMessage" | $
if [ $? -eq 0 ] ; then exit 1 ; fi
|
|
|
Записан
|
|
|
|
sever
Пользователь
Карма: 1
Offline
Сообщений: 82
|
|
« Ответ #3 : 23 Октября 2017, 10:02:00 » |
|
#!/usr/bin/env bash
TOKEN='тут мой токен'
which curl &>/tmp/telegram.log
if [ $? -ne 0 ] ; then echo 'FAIL: curl not found.' && exit 1 ; fi if [ $# -ne 3 ] ; then echo 'FAIL: Params not defined.' && echo 'Usage: zabbix-to-telegram-notify.sh TelegramID Subject Message' && exit 1 ; fi
CHAT_ID="$1" SUBJECT="$2" MESSAGE="$3"
curl -s --header 'Content-Type: application/json' --request 'POST' --data "{\"chat_id\":\"${CHAT_ID}\",\"text\":\"${SUBJECT}\n${MESSAGE}\"}" "https ://api.telegram.org/bot${TOKEN}/sendMessage" | $
if [ $? -eq 0 ] ; then exit 1 ; fi Чтобы клиенту отправлять через телеграм Клиент должен добавить чат id твоего чата + ты должен знать id-клиента в телеграмм.
|
|
|
Записан
|
|
|
|
k291
|
|
« Ответ #4 : 23 Октября 2017, 20:35:40 » |
|
Как создать собственного бота telegram: Находим в поиске аккаунт с именем @botfather Нажимаем на кнопку Start в нижней части экрана
После чего пишем ему команду /newbot Потом отвечаем на 2 вопроса: Первый вопрос – имя создаваемого бота Test1splaBot Второй вопрос – ник создаваемого бота (должен оканчиваться на bot) Test_1spla_bot В ответ получим токен нашего бота, в моём случае, это 44444444:AAEEe279_R5bT2UEG9nczRIlTGHiXRwe1ho
Затем, нужно найти нашего бота в поиске по имени @Test_1spla_bot и нажать на кнопку Start, чтобы его запустить.
Если бот уже создан, а мы не помним его Token: Находим @botfather Нажимаем "/mybots", выбираем своего бота, в ответ получаем "44444444:AAEEe279_R5bT2UEG9nczRIlTGHiXRwe1ho".
Теперь надо узнать ID Chat(по сути ID телеграма,что установлен на телефоне), находим @MyTelegramID_bot, жмем "/start", получаем ответ "777777777"
|
|
|
Записан
|
|
|
|
k291
|
|
« Ответ #5 : 23 Октября 2017, 20:59:05 » |
|
Я так понимаю, у вас реализовано через Zabbix и каждого пользователя(надо добавлять вручную). Для начала, я хочу чтобы приходило сообщение в Телеграм при создании или изменении в тикете. При действиях из второго поста, сообщения приходят, не без нужных данных. Не могу понять какую надо передать переменную. $subject, $comment, При попытке передать $msg,$comment, получаю ошибку: Global symbol "$msg" requires explicit package name (did you forget to declare "my $msg"?) at /usr/local/nodeny/web/_o_tickets.pl line 935. Compilation failed in require at /usr/local/nodeny/web/calls.pm line 1374.
|
|
|
Записан
|
|
|
|
sever
Пользователь
Карма: 1
Offline
Сообщений: 82
|
|
« Ответ #6 : 24 Октября 2017, 08:35:58 » |
|
Я так понимаю, у вас реализовано через Zabbix и каждого пользователя(надо добавлять вручную).
У меня мониторинг привязан к телеграм. Скрипт был оттуда.
|
|
|
Записан
|
|
|
|
k291
|
|
« Ответ #7 : 24 Октября 2017, 16:34:22 » |
|
Можете показать пример сообщения в телеграм. Вы реализовали приход сообщения об изменении в Тикете или изменениях в Платежи?
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #8 : 25 Октября 2017, 10:20:33 » |
|
text => my $subject.' - '.$force_dialog.' - '.$last_author
здесь слово my лишнее. Слово my говорит типа "здесь создать переменную с таким-то именем"
|
|
|
Записан
|
|
|
|
k291
|
|
« Ответ #9 : 25 Октября 2017, 22:55:08 » |
|
Исправил: #Telegram my $textMessage = " Mess: {$1} #Для теста \nMess1: {$performer_lbl} #Исполнитель \nMess2: {$subject} #Тема "; my $token = "377236753:AAF1IywqEMRsNObEXUwtiNL2Y3ygJtMVQrU"; my $chat_id = "341937610";
my $api = WWW::Telegram::BotAPI->new( token => $token); $api->sendMessage ({ chat_id => $chat_id, 'parse_mode' => 'HTML', 'text' => $textMessage });
При добавлении $subject в Mess2, выдает ошибку: Global symbol "$subject" requires explicit package name (did you forget to declare "my $subject"?) at /usr/local/nodeny/web/_o_tickets.pl line 925. Compilation failed in require at /usr/local/nodeny/web/calls.pm line 1374. Возможно тему,сообщение,комментарий, надо по другому передавать. Только как?
|
|
|
Записан
|
|
|
|
ser970
NoDeny
Спец
Карма: 70
Offline
Сообщений: 1323
|
|
« Ответ #10 : 26 Октября 2017, 00:17:20 » |
|
При добавлении $subject в Mess2, выдает ошибку: Global symbol "$subject" requires explicit package name (did you forget to declare "my $subject"?) at /usr/local/nodeny/web/_o_tickets.pl line 925. Compilation failed in require at /usr/local/nodeny/web/calls.pm line 1374. Возможно тему,сообщение,комментарий, надо по другому передавать. Только как? did you forget to declare = вы забыли объявить где то так my ($subject,$performer_lbl);
|
|
|
Записан
|
|
|
|
k291
|
|
« Ответ #11 : 26 Октября 2017, 00:23:27 » |
|
Нашел. Чтобы получать уведомление в Telegram, при добавлении сообщений в тикет: В o_tickets.pl, в 11 строке вставляем: use WWW::Telegram::BotAPI; my $token = "777777777:AAF1IywqEMRsNObEXUwtiNL2Y3ygJtMVQrU"; my $chat_id = "444444444"; В o_tickets.pl, вставляем код ниже 1136, перед "push @sqls, $d->_notifications(\%p, $notification_msg);" #Telegram my $textMessage = " Изменения в Тикете: $p{id} Тема: $p{subject} Комментарий: $p{comment} Сообщение: $msg ";
my $api = WWW::Telegram::BotAPI->new( token => $token); $api->sendMessage ({ chat_id => $chat_id, 'parse_mode' => 'HTML', 'text' => $textMessage,
});
Это дубовый способ. Если у нас много кому надо отправлять сообщения(админам,сапорту,начальству), то придется дублировать часть кода. Надо админам в Н+, добавлять поле token , chat_id и тип тикета по которому сотруднику присылать сообщения. Чтобы запрос клиента не приходил админу, а тикет по настройке нового коммутатора, не приходил тех.поддержке. Если мы хотим отсылать сообщения об окончании услуге клиенту, то нам надо добавить поле chat_id(с Телеграма), куда клиент внесет свои данные. token у всех клиентов будет один и тотже.
|
|
|
Записан
|
|
|
|
k291
|
|
« Ответ #12 : 30 Октября 2017, 23:12:23 » |
|
Для получения сообщений в Telegram, при обращении клиента в личном кабинете в форме"Сообщение администрации": В /usr/local/nodeny/web/user/_message.pl: Добавляем в строку 5, после "use strict;": use WWW::Telegram::BotAPI;
#Telegram my $token = "777777777:AAF1IywqEMRsNObEXUwtiNL2Y3ygJtMVQrU"; my $chat_id = "444444444"; Добавляем в строку 34, после " my $new_data = { creator => $uid, comment => $comment, subject => $subject, }; ": #Telegram my $textMessage = " Message from the client: $uid Subject: $subject Comment: $comment ";
my $api = WWW::Telegram::BotAPI->new( token => $token); $api->sendMessage ({ chat_id => $chat_id, 'parse_mode' => 'HTML', 'text' => $textMessage,
});
|
|
|
Записан
|
|
|
|
Redmen
NoDeny
Ветеран
Карма: 62
Offline
Сообщений: 546
Подяку в КАРМУ
|
|
« Ответ #13 : 31 Октября 2017, 00:40:17 » |
|
Прекрасный вариант! Тоже думал об этом! + в карму Но: 1) Нужно попросить Стаса добавить хуки в места вставки твоего кода 2) $token и $chat_id вынести в настройки в тикетах 3) в сообщение добавить урл на абона или на сам тикет (тяжелее), тему, и как то обозначить абона (фио / адрес )
|
|
|
Записан
|
|
|
|
Redmen
NoDeny
Ветеран
Карма: 62
Offline
Сообщений: 546
Подяку в КАРМУ
|
|
« Ответ #14 : 09 Ноября 2017, 22:01:45 » |
|
Сделал патч по выше упомянутым 2м постам, но: - нет проверок на наличие настроек
- не поборол проблему с кириллицей
- в патче с настройками, кому надо, допишите перевод на русский
у меня этот патч работает с первого числа и сотрудникам понравилась идея с оповещением
|
|
|
Записан
|
|
|
|
|