Подключение API

Для соединения с API используется модуль AnyEvent (это позволяет создавать одно подключение для передачи нескольких сообщений) Поэтому, нужно установить модуль AnyEvent;

Telegram Bot

Бот 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 бота

Доступные методы

Консольный интерфейс

Консольный интерфейс к Sender

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 - в случае ошибки