Це стара версія документу!
API UbillingTelegram
Ubilling предоставляет удобную модель абстракции, для работы с сообщениями бота Telegram. Начиная со стабильного релиза Ubilling 0.8.0 вы можете использовать базовый класс UbillingTelegram для посылки, приема и чтения сообщений принятых ботом. Для посылки сообщений требуется токен заранее созданного бота и включенная и настроенная подсистема собаки-посылаки. Да, вы можете пригласить бота в свою закрытую групку либо куда пожелаете.
API базового класса UbillingTelegram пытается повторять работу UbillingSMS и быть максимально простым для понимания. Также вы можете одновременно работать с несколькими ботами, создав для каждого из них по экземпляру класса, либо на-ходу переключая их токены. Рассмотрим работу с ботом на простом примере:
$botToken = '123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11'; // мы можем передавать токен нашего бота либо в конструкторе класса $telegram = new UbillingTelegram($botToken); // либо принудительно выставить при помощи публичного метода setToken, например так: $telegram->setToken($botToken); // мы можем получить список контактов, ранее писавших боту либо в чаты в которые он приглашен $botContacts = $telegram->getBotContacts(); debarr($botContacts); // Также мы можем поместить сообщение в очередь для дальнейшей посылки собакой-посылакой для одного из этих chatid. // Рекомендуется использовать этот метод в ваших модулях. $chatId = '-1001070840004'; $telegram->sendMessage($chatId, 'это тестовое сообщение', false, 'SAMPLEMODULE'); // Далее, если потребуется мы можем работать с очередью сообщений. // например получить количество сообщений ожидающих отправки $queueCount=$telegram->getQueueCount(); deb($queueCount); //или содержимое этой очереди в виде массива $queueData=$telegram->getQueueData(); debarr($queueData); //также нам никто не запрещает почитать какие же приватные или сообщения канала получал бот: $botChats=$telegram->getBotChats(); debarr($botChats); // Если нам требуется отправка сообщения от имени бота отличного от настроенного в собаке-посылаке, // мы можем принудительно инициализировать посылку сообщения в обход очереди при помощи публичного метода "прямо щас" $telegram->directPushMessage($chatId, 'это тоже тестовое сообщение посланное напрямую');
Также в Ubilling 1.0.2 появилась возможность включить режим отладки, чтобы видеть запросы и ответы на них от сервера API:
$telegram->setDebug(true);
А также отсылать данные о местонахождении контактам вашего бота. Пример:
$testText = 'sendLocation:50.45093260638449, 30.52267174950622'; // да, формат сообщения "sendLocation:координаты" $telegram->sendMessage($chatid, $testText);
А можно не просто данные о местонахождении, а также с заголовком и адресом:
$message='title:{Налаштувати роутер}address:(Де бабайко каже надобраніч)sendVenue:[50.45093260638449, 30.52267174950622]'; $telegram->directPushMessage($chatid, $message);
Да, все поля и формат скобочек строго обязательны.
А еще начиная с Ubilling 1.0.5 можно устанавливать кастомную разметку для ваших сообщений. Например использовать HTML. Например так:
$message='Просто текст <b>жирный текст</b> <a href="http://ubilling.net.ua">Ссылка на сайт</a> parseMode:{html}'; $telegram->directPushMessage($chatid, $message);
Начиная с Ubilling 1.0.9 также поддерживается посылка фоточек контактам бота. Формат посылки фоточек следующий:
$message = 'sendPhoto:[http://piclod.com/i/1592634849/CEYG67MWEAEsvwa.jpeg]{Это опциональный заголовок}'; $telegram->sendMessage($chatId, $message);
Начиная с Ubilling 1.1.4 вы можете использовать для ваших ботов кастомные клавиатуры. Для этого клавиатура собранная из массива при помощи makeKeyboard тупо отсылается при помощи directPushMessage. Как-то так:
$buttonsArray[] = array('кнопка раз', 'кнопка рядом'); $buttonsArray[] = array('кнопка внизу'); $keyboard = $telegram->makeKeyboard($buttonsArray, false, true, true); $telegram->directPushMessage($chatid, 'Здесь клавиатура вылезла!', $keyboard);
Принудительно ее убить можно в свою очередь, используя сообщение, содержащее текст вида “removeKeyboard:тут текст сообщения”
$telegram->directPushMessage($chatid, 'removeKeyboard:ой всё');
