Швидка реалізація відправки повідомлень про нове замовлення в чат телеграм із опенкарт
Як швидко створити функцію для отримання повідомлення про нове замовлення в телеграм?
Лишень декілька слів - дуже просто. Ми не беремо до уваги готові модулі - таких вистачає і платних, і безкоштовних. Але раз ви це читаєте то куди прирємніше це зробити своїми руками.
Від слів до діла
Даний приклад показаний на опенкарті версії 3,х для інших логіка максимально схожа. Першим кроком нам потрібен телеграм бот, як його створити та налаштувати я показав нижче. Повернімось до опенкарта.
Відкрийте файл моделі замовлення в каталозі за шляхом /catalog/model/checkout/order.php
у редакторі коду (не дефолтному блоконоті). і додайте наступну функцію:
public function sendNotifyToTG($data, $order_id){
$msg = [];
$msg[] = 'Створено нове замовлення №'.$order_id;
$msg[] = 'Замовник: '.$data['firstname'].' '.$data['lastname'];
$msg[] = 'Email: '.$data['email'];
$msg[] = 'Телефон: '.$data['telephone'];
$msg[] = 'Метод оплати: '.$data['payment_method'];
$msg[] = 'Метод доставки: '.$data['shipping_method'];
$msg[] = 'Місто доставки: '.$data['shipping_city'];
$msg[] = 'Адреса: '.$data['shipping_address_1'].' '.$data['shipping_address_2'];
$msg[] = 'Сума: '.$this->currency->format($data['total'], $data['currency_code']);
if (isset($data['products'])) {
$msg[] = 'Товари:';
foreach ($data['products'] as $product) {
$msg[] = '- '.$product['name'].', '.$product['quantity'].'шт. '.$product['total'];
if($product['option']){
foreach($product['option'] as $option){
$msg[] = ' -- '.$option['name'].' : '.$option['value'];
}
}
}
}
if($data['comment']){
$msg[] = 'Коментар: '.$data['comment'];
}
$msg = implode("\r\n", $msg);
$token = ""; // Токен боту, див ниче
$chatid = ""; //ідентифікатор чату
$tbot = file_get_contents("https://api.telegram.org/bot".$token."/sendMessage?chat_id=".$chatid."&parse_mode=HTML&text=".urlencode($msg));
}
Ви можете самостійно додавати та віднімати перемінні у повідомлення, підглянувши назву (тобто ключ масиву) у фукції addOrder()
.
Тепер перейдіть у функцію addOrder()
і в кінці цієї функції додайте вилик нашої нової функції
//... код додавання замовлення
$this->sendNotifyToTG($data, $order_id); // нова строка коду - виклик функції
// повернення ідентифікатору у контроллер
return $order_id;
Далі залишилось лише встановити у новій функції ідентифікатор чату та токен боту в телеграм.
Як створити бот в телегам?
Насправді, це ще легше ніж здається :)
Першою справою відкрийте бот @BotFather
в телеграм. Цей бот є інтструментом для керування вашими ботами.
Натисніть старт та введіть команду /newbot
. Ботфазер запропонує вам ввести назву бота із використанням закнічення _bot. Введіть назву для свого бота використовуючи латинський алфавіт. Ваша назва може бути занята або не коректна, ботфазер вкаже на це.
Після створення боту ви отримаєте токен свого боту, нікому не передавайте його. Цей токен буде використано в функції для відправки повідомлення.
Тепер треба дозволити боту читати повідомлення із групи, щоб ми змогли визначити ідентифікатор чату. Для цього натисніть в ботфазер /setprivacy
оберіть бота та натисніть на DISABLED.
Тепер потрібно створити приватну групу і включити в неї бота, та якщо потрібно інших людей. Після створення групи, якщо ви плануєте із неї вийти потім - відразу додайте другого адміністратора, тому що при додаванні адміністратора зміниться ідентифікатор групи.
Тепер напишіть щось у групу і скористайтесь інструкцією із сторінки Як визначити ідентифікатор групи в телеграм.
Приклад масиву на скріншоті, вам потрібно знайти чат та можливо своє повідомлення, в масиві чат вказаний ідентифікатор групи. Підставте його в функцію.
Тепер все має працювати, як годинник - ви будете миттєво отримувати повідомлення про нове замовлення. Цей приклаж є робочим варіантом для реалізації відправки будь-яких повідомлень із сайту в чат телеграм. Навіть заповненні форми зворотнього зв'язку.