Подключение API
Для соединения с API используется модуль AnyEvent (это позволяет создавать одно подключение для передачи нескольких сообщений) Поэтому, нужно установить модуль AnyEvent;
Telegram Bot
Бот Telegram позволяет проводить массовые рассылки и сократить время на поддержку абонентов. На данном этапе, используется один бот для администраторов и клиентов (для каждого создаётся свой уникальный чат).
Возможности
- Рассылка для подписаных клиентов
- Возможность вести переписку из Helpdesk в чате Telegram (одновременно по всем заявкам)
Для правильной работы, нужно использовать новую модель контактов ($conf{CONTACTS_NEW} = 1
).
Клиенты могут подписаться через кнопку на первой странице кабинета.
Администраторы - в любом меню «Профиль» (основном и секции правого меню)\\.
Кнопка формирует ссылку с секретом, который передастся приложением Telegram.
Создание бота
Эту операцию нужно делать с устройства где устанвлен Telegram.
1) Заходим https://telegram.me/botfather . Если есть аккаунт нажимаем кнопку “Send message”. Если нету, то регистрируемся в Telegram-е, затем снова заходим и нажимаем “Send message”. Или можно сразу зайти в Telegram, в поиске вбить Botfather и перейти к диалогу с ним.
2) На главном экране бота нажимаем “Start”.
3) Покажется список возможных команд для обращения к BotFather. Нам нужно ввести команду
/newbot.
4) BotFather спросит имя нашего бота. Это имя будет отображаться в деталях контакта. Вводим имя бота, например Testbot.
5) Следующий шаг нас спрашивают Имя пользователя бота. Это параметр будет использоваться для запросов к боту. От 5 до 32 символов, регистро чувствительная латиница, цифры и нижние подчеркивания. Имя пользователя бота должно заканчиваться на bot. Вводим наше имя пользователя, например TestAbills_bot.
6) Мы зарегистрировали нашего бота. Мы получили линк на нешго бота https://telegram.me/TestAbills_bot, а так же очень важный параметр - токен.
Токен: 167953392:AAHVUmXdEOTzLbdzSuV23QuEBTmDMjzg-io .
7) Бот создан!
Локализация интерфейса
По умолчанию, бот общается с пользователями на языке $conf{default_language}
. Есть возможность отправлять каждому пользователю сообщения на своём языке. Для этого добавьте информационное поле _language
(обратите внимание на дополнительное _
). После этого, пользователь сможет менять язык через команду /language
.
Запуск и привязка бота к биллингу
Установить perl модули
- AnyEvent
- AnyEvent::HTTP
- Net::SSLeay
В файл настроек config.pl прописать следующие параметры:
$conf{TELEGRAM_TOKEN} = '267953392:AAHVUmXdEOTzLbdzSuV23QuEBTmDMjzg-io'; | Токен, который получили при создании бота |
---|---|
$conf{TELEGRAM_MSGS_BOT_ENABLE} = 1; | Позволить отвечать на сообщения из чата Telegram |
$conf{BILLING_URL} = 'https://demo.abills.net.ua:9443/' | Ссылка на биллинг, для построения ссылок просмотра сообщений |
$conf{TELEGRAM_DEBUG} = 3; | 1..7 Уровень отладки |
$conf{TELEGRAM_DEBUG_FILE} = '/usr/abills/var/log/telegram.log' | Куда писать лог Telegram |
$conf{TELEGRAM_API_REQUEST_INTERVAL} = 3; | Частота обращений к Telegram API в секунду |
$conf{TELEGRAM_API_DEBUG} = 3; | 1..7 Уровень отладки Telegram API |
$conf{TELEGRAM_API_DEBUG_FILE} = '/usr/abills/var/log/telegram.log' | Куда писать лог Telegram API |
$conf{MSGS_MESSAGING_DEBUG_FILE} = '/usr/abills/var/log/telegram_msgs.log' | Куда писать лог вызовов Telegram из модуля Msgs |
После этого, нужно перезапустить websocket_backend.pl
. (Если еще не установлен, Установка WebSocket Backend)
Файл логирования Телеграма находится в /usr/abills/var/log/telegram.log
Разработчикам
Схема работы Telegram бота
Доступные методы
Консольный интерфейс
new - создания нового обьекта Telegram.
Пример использования:
my $Telegram = Abills::Sender::Telegram->new(\%conf);
send_message - отправка сообщения абоненту по его chat_id из Instagram
Параметры:
AID или UID | chat_id абонента |
---|---|
MESSAGE | текст сообщения |
SUBJECT | заголовок сообщения |
PARSE_MODE | тип оформления сообщения. Может быть либо MARKDOWN, либо HTML. |
Пример использования:
my $message_sent = $Telegram->send_message({ UID => $user_chatid, MESSAGE => $message, PARSE_MODE => 'HTML'});
Возвращает:
1 - при удачном отправлении 0 - в случае ошибки