Уведомления о заказе в telegram для Shopkeeper (плагин SendOrderToTelegram)

Telegram набирает все больше и больше популярности. Накидал небольшой плагин, который позволяет получить уведомление админа, менеджера или владельца магазина о новом заказе прямо в telegram. Это позволит ускорить обработку заказа, ведь не всегда email или sms о новом заказе приходит сразу.

Приступим.
Для начала заводим себе бота. Для этого ищем пользователя @botfather и добавляем его.



Нажимаем на кнопку /start должны прийти все доступные команды.


Создаем нового бота, для этого пишем (/newbot)


botFather попросит нас ввести название вашего бота. Пишем название


Потом botFather попросит нас ввести username нашего бота(leads_bot). Username должен заканчиваться на Bot или _bot. Это то имя, по которому можно будет этого бота найти (@leads_bot).


После этого botFather пришлет нам сообщение с токеном, он то нам и нужен


Добавляем нашего бота в контакты (ссылка на него будет в сообщении с токеном).

Далее заходим по ссылке
api.telegram.org/bot<bot_token>/getUpdates
где <bot_token> — тот самый токен который мы получили.

Там смотрим свой id получателя, он нам тоже понадобится


И всё, можем слать себе уведомления подставляя текст в ссылку
api.telegram.org/bot<bot_token>/sendMessage?chat_id=&text=Теперь перейдем к самому плагину который будет отправлять нам уведомление.

Идем в Управление элементами/плагины/создать новый плагин
Называем плагин SendOrderToTelegram и вешаем на событие OnSHKsaveOrder

Далее вставляем код плагина

$e = &$modx->Event;
if ($e->name == 'OnSHKsaveOrder') {

$id = isset($id) ? $id : '';
	
$token = 'your_token';//сюда вставляем токен полученый от botFather
	
$recipient = 'your_id';// сюда наш id (на него будут приходить сообщения от бота)
	

$order_data = $modx->db->getRow($modx->db->select("*",$modx->getFullTableName('manager_shopkeeper'),"id = '$id'"),'assoc');

$products_in_order = unserialize($order_data['content']);
	
$i = 0;
$products = '';
foreach ($products_in_order as $product) {
    $i++;
    $products .= "{$i}. {$product['3']} ({$product['1']} шт.)";
}

$message = "
Новый заказ #{$id}
на сумму {$order_data['price']} {$order_data['currency']}
-----
{$products}
-----
Телефон: {$order_data['phone']}";

$message = urlencode($message);

    $url = "https://api.telegram.org/bot{$token}/sendMessage?chat_id={$recipient}&text={$message}";
    $ch = curl_init();
    curl_setopt_array($ch, array(CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true));
    $result = curl_exec($ch);
    curl_close($ch);
}


После делаем тестовый заказ на сайте и видим что бот прислал нам сообщение

2 комментария

avatar
Отправить себе сообщение можно по ссылке
https://api.telegram.org/bot<bot_token>/sendMessage?chat_id=<id>&text=<text>
avatar
Лайк!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.