Биллинговая система Nodeny
25 Апреля 2024, 19:21:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1] 2
  Печать  
Автор Тема: Nodeny telegram  (Прочитано 8382 раз)
k291
Старожил
****

Карма: -10
Offline Offline

Сообщений: 454


Просмотр профиля
« : 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
Старожил
****

Карма: -10
Offline Offline

Сообщений: 454


Просмотр профиля
« Ответ #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 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 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
Старожил
****

Карма: -10
Offline Offline

Сообщений: 454


Просмотр профиля
« Ответ #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
Старожил
****

Карма: -10
Offline Offline

Сообщений: 454


Просмотр профиля
« Ответ #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 Offline

Сообщений: 82


Просмотр профиля
« Ответ #6 : 24 Октября 2017, 08:35:58 »

Я так понимаю, у вас реализовано через Zabbix и каждого пользователя(надо добавлять вручную).


У меня мониторинг привязан к телеграм.
Скрипт был оттуда.
Записан
k291
Старожил
****

Карма: -10
Offline Offline

Сообщений: 454


Просмотр профиля
« Ответ #7 : 24 Октября 2017, 16:34:22 »

Можете показать пример сообщения в телеграм.
Вы реализовали приход сообщения об изменении в Тикете или изменениях в Платежи?
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #8 : 25 Октября 2017, 10:20:33 »

Код:
        text    => my $subject.'  -  '.$force_dialog.'  -  '.$last_author
здесь слово my лишнее. Слово my говорит типа  "здесь создать переменную с таким-то именем"
Записан
k291
Старожил
****

Карма: -10
Offline Offline

Сообщений: 454


Просмотр профиля
« Ответ #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 Offline

Сообщений: 1323

262462619
Просмотр профиля Email
« Ответ #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
Старожил
****

Карма: -10
Offline Offline

Сообщений: 454


Просмотр профиля
« Ответ #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
Старожил
****

Карма: -10
Offline Offline

Сообщений: 454


Просмотр профиля
« Ответ #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 Offline

Сообщений: 546


Подяку в КАРМУ


Просмотр профиля WWW
« Ответ #13 : 31 Октября 2017, 00:40:17 »

Прекрасный вариант!
Тоже думал об этом!
+ в карму
Но:
1) Нужно попросить Стаса добавить хуки в места вставки твоего кода
2) $token и $chat_id вынести в настройки в тикетах
3) в сообщение добавить урл на абона или на сам тикет (тяжелее), тему, и как то обозначить абона (фио / адрес )
Записан

Приймаю подяку у вигляді карми... та/або грошей Подмигивающий
t.me/MrMethod
Redmen
NoDeny
Ветеран
*

Карма: 62
Offline Offline

Сообщений: 546


Подяку в КАРМУ


Просмотр профиля WWW
« Ответ #14 : 09 Ноября 2017, 22:01:45 »

Сделал патч по выше упомянутым 2м постам, но:
  • нет проверок на наличие настроек
  • не поборол проблему с кириллицей
  • в патче с настройками, кому надо, допишите перевод на русский

у меня этот патч работает с первого числа и сотрудникам понравилась идея с оповещением
Записан

Приймаю подяку у вигляді карми... та/або грошей Подмигивающий
t.me/MrMethod
Страниц: [1] 2
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!