[msTelegram] Уведомления о заказе в telegram
Небольшой плагин на уведомление о новом заказе в телеграм, отличная замена сервисам смс рассылки.
Сделано на основе гайда от Михаила.
Как получить токен, узнать айди чата и тд так же отлично расписано в гайде.

Плагин вешается на событие msOnCreateOrder.
Сделано на основе гайда от Михаила.
Как получить токен, узнать айди чата и тд так же отлично расписано в гайде.

Плагин вешается на событие msOnCreateOrder.
if($modx->event->name != 'msOnCreateOrder') return;
$token = '<token>';
$contacts = $modx->getObject('msOrderAddress', array('id'=> $msOrder->address));
$_products = $msOrder->getMany('Products');
// Список получателей, у меня их много, если будет один можно обойтись одной переменной и убрать foreach
$recipients = array(
'<chat id>'
);
// Список товаров в заказе
$i = 0;
$products = '';
foreach ($_products as $product) {
$i++;
$products .= "{$i}. {$product->name} ({$product->count} шт.)";
}
// Текст сообщения
$message = "
Новый заказ #{$msOrder->num}
на сумму {$msOrder->cost} р.
-----
{$products}
-----
Телефон: {$contacts->phone}";
$message = urlencode($message);
foreach($recipients as $id){
$url = "https://api.telegram.org/bot{$token}/sendMessage?chat_id={$id}&text={$message}";
$ch = curl_init();
curl_setopt_array($ch, array(CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true));
$result = curl_exec($ch);
curl_close($ch);
}
p.s. fopen заменил на curl т.к. на некоторых устройствах получал сообщение в виде urlencode(). Комментарии: 21
Опубликовали в modstore
Спасибо! пригодится)
Добрый день.
Помогите настроить плагин на работу с Shopkeeper 3? Кто нибудь знает как это сделать?
Помогите настроить плагин на работу с Shopkeeper 3? Кто нибудь знает как это сделать?
День добрый.
Подскажите почему может не отображаться почта в сообщении, которую указывает клиент?
Подскажите почему может не отображаться почта в сообщении, которую указывает клиент?
// Текст сообщения
$message = "
Новый заказ #{$msOrder->num}
на сумму {$msOrder->cost} р.
-----
{$products}
-----
Клиент: {$contacts->receiver}
-----
Телефон: {$contacts->phone}
-----
Почта: {$contacts->email}
-----
Комментарий: {$contacts->comment}";
если посмотреть сюда github.com/bezumkin/miniShop2/blob/master/core/components/minishop2/model/schema/minishop2.mysql.schema.xml#L337-L352
то видно что там нет поля email.
нужно получить профиль пользователя и оттуда взять email
то видно что там нет поля email.
нужно получить профиль пользователя и оттуда взять email
$profile = $msOrder->getOne('UserProfile')
{$profile->email}
Теперь знаю куда смотреть) Спасибо за помощь
А как получить варианты доставки и оплаты?
Подскажите пожалуйста, что-то не разберусь.
Подскажите пожалуйста, что-то не разберусь.
if ($msOrder->delivery == '1') {
$deli = "Способ доставки: Самовывоз";
} else {
$deli = "Способ доставки: Доставка";
}
if ($msOrder->payment == '1') {
$pay = "Способ оплаты: Оплата в магазине";
} else {
$pay = "Способ оплаты: Онлайн картой";
}
Сделал так, кривовато конечно, но логика такая — подстроите под себя
А изображение продукта можно как-то получить? Не подскажете?
Приветствую! Плагин работает отлично! Не подскажете, как добавить адрес доставки?
Вопрос про добавление адреса доставки решен.
Добрый день, а не поделитесь решением?
// Текст сообщения
$message = "
Новый заказ #{$msOrder->num}
на сумму {$msOrder->cost} р.
Оплата: {$msOrder->payment}
-----
{$products}
-----
Имя: {$contacts->receiver}
Телефон: {$contacts->phone}
Email: {$profile->email}
Улица: {$contacts->street}
Дом: {$contacts->building}
Квартира: {$contacts->room}
Комментарий: {$contacts->comment}";
Простите, что отвлёк, не туда комментарий оставил. Искал варианты оплаты и доставки. Спасибо!
Как изменить текст сообщения? Создал сниппет, хотел изменить текст сообщения, сохраняю, но в телеграмму приходит старый

Спасибо большое
Добрый день! Все настроил по инструкции. Но при заказе отправка в телегу не идет.
Как можно отладить? и проверить?
Как можно отладить? и проверить?
Добрый день! Может кто подсказать, как еще достать артикул товара?
При этом
$product->article
не проходитПри этом
$product->product_id
работает, но это не является решением $product->Product->get('article')
Был близок пробуя что-то подобное :D
$product->get('article')
Спасибо за Ваш ответ, Николай! Всё работает
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.