Перейти к содержанию
Официальный форум поддержки Simpla

Уведомление о заказах через чат-бота в Telegram


Рекомендуемые сообщения

Мой мануал подробно описан на сайте: http://valiotti.com/useful

Итак, общая схема простая, создаем нового бота в Telegram и добавляем его в нужный канал. В этот канал будем через Simpla API отправлять апдейты.

Используем следующую схему перед созданием модуля:

  1. Создадим бота через Bot Father, подробно описано в Telegram Bot API. Запишем токен созданного бота.
  2. Создадим публичный канал и установим для него username.
  3. Добавим в канал созданного бота.
  4. Перейдём по ссылке
    
    https://api.telegram.org/bot[ТОКЕН_БОТА]/sendMessage?chat_id=@[USERNAME_КАНАЛА]&text=тест 
     

    После перехода по ссылке будет выведен id канала, сохраним его.

  5. В настройках канала сделаем его приватным (убрать username).

Теперь, добавим следующий код в Simpla CMS

Шаг 1.
Выкладываем скрипт TgNotify.php в папку /api

Шаг 2.
Добавляем строки в файл api/Simpla.php
После строки

'notify' => 'Notify',
 

 

Вставляем

 

'tgnotify' => 'TgNotify',
 

 

Шаг 3.

Файл View/CartView.php

После строки 

// Отправляем письмо администратору
$this->notify->email_order_admin($order->id);
 

 


Вставляем

//Уведомим в Telegram
if($this->settings->tg_notify==1)
$this->tgnotify->message($order->id);
 

 


Шаг 4.
В субд выполняем следующий код

INSERT INTO s_settings (name, value) VALUES ('tg_notify', 1);
INSERT INTO s_settings (name, value) VALUES('tg_token', 'ВАШ ТОКЕН');
INSERT INTO s_settings (name, value) VALUES ('tg_apiurl', 'https://api.telegram.org/bot');
INSERT INTO s_settings (name, value) VALUES ('tg_channel', 'ВАШ ID КАНАЛА');
 

 

 

Админка

Шаг 5.

Файл Simpla/SettingsAdmin.php


После строк

$this->settings->order_email = $this->request->post('order_email');
$this->settings->comment_email = $this->request->post('comment_email');
$this->settings->notify_from_email = $this->request->post('notify_from_email');
 

 


Добавляем

$this->settings->tg_notify= ($this->request->post('tg_notify')==NULL) ? '0' : '1';
$this->settings->tg_token = $this->request->post('tg_token');
$this->settings->tg_apiurl = $this->request->post('tg_apiurl');
$this->settings->tg_channel = $this->request->post('tg_channel');
 

 


Шаг 6.

Файл simpla/design/html/settings.tpl


После строк

<h2>Оповещения</h2>
<ul>
<li><label class=property>Оповещение о заказах</label><input name="order_email" class="simpla_inp" type="text" value="{$settings->order_email|escape}" /></li>
<li><label class=property>Оповещение о комментариях</label><input name="comment_email" class="simpla_inp" type="text" value="{$settings->comment_email|escape}" /></li>
<li><label class=property>Обратный адрес оповещений</label><input name="notify_from_email" class="simpla_inp" type="text" value="{$settings->notify_from_email|escape}" /></li>
</ul>
</div>
<!-- Параметры (The End)-->
 

 


Добавляем

<!-- Параметры Telegram-->
<div class="block layer">
<h2>Уведомления о заказах в Telegram</h2>
<ul>
<li><label class=property>Включить уведомления</label><input name="tg_notify" class="simpla_inp" type="checkbox" value="{$settings->tg_notify}" {if $settings->tg_notify=='1'}checked{/if}/>
</li>
<li><label class=property>Token</label><input name="tg_token" class="simpla_inp" type="text" value="{$settings->tg_token|escape}" /></li>
<li><label class=property>API URL</label><input name="tg_apiurl" class="simpla_inp" type="text" value="{$settings->tg_apiurl|escape}" /></li>
<li><label class=property>ID канала в телеграмме</label><input name="tg_channel" class="simpla_inp" type="text" value="{$settings->tg_channel|escape}" /></li> 
</ul>
</div>
<!-- Параметры Telegram (The End)-->
 

 


Данный модуль реализован и используется в магазине свежего кофе True Coffee Roasters (кстати, кофе действительно вкусный и со скидкой по-промокоду TRUECOUPON).

 

Если необходима установка, могу за отдельную плату помочь.

Скайп - kolya_spb.

Изменено пользователем nikolayv
Ссылка на сообщение
Поделиться на другие сайты
  • Ответов 61
  • Дата создания
  • Последний ответ

Лучшие авторы в теме

Лучшие авторы в теме

Спасибо, все работает! В файле - TgNotify.php в строке 155 написано "тип помола". Кому надо изменяйте на свое.

 

Я не разобрался до конца. Это уведомления только для администратора? Или клиенту тоже приходит уведомление (при наличии телеграм, конечно же)?

Изменено пользователем pizhama
Ссылка на сообщение
Поделиться на другие сайты

Спасибо, все работает! В файле - TgNotify.php в строке 155 написано "тип помола". Кому надо изменяйте на свое.

 

Я не разобрался до конца. Это уведомления только для администратора? Или клиенту тоже приходит уведомление (при наличии телеграм, конечно же)?

 

Простите, сейчас подкорректирую.

 

Это уведомление для администратора.

Технически, можно сделать и для клиента, но есть заморочки с тем, что он должен установить бота себе (инициировать с ним контакт).

 

В противном случае отправка не легитимна, а кроме того мы не знаем chat_id.

Ссылка на сообщение
Поделиться на другие сайты

Спасибо, все работает! В файле - TgNotify.php в строке 155 написано "тип помола". Кому надо изменяйте на свое.

 

Убрал. Спасибо за внимательность!

Ссылка на сообщение
Поделиться на другие сайты

Простите, сейчас подкорректирую.

 

Это уведомление для администратора.

Технически, можно сделать и для клиента, но есть заморочки с тем, что он должен установить бота себе (инициировать с ним контакт).

 

В противном случае отправка не легитимна, а кроме того мы не знаем chat_id.

Я не разбирался с этим вопросом. Почему не легитимна? Многие магазины шлют информацию о заказах через вайбер, давно искал это решение, вот нашел телеграм, но оказалось только для администраторов. Правда в вайбере как-то подтверждается аккаунт магазина (или компании) со стороны вайбера.

 

В любом случае спасибо за интересное дополнение.

Изменено пользователем pizhama
Ссылка на сообщение
Поделиться на другие сайты

Я не разбирался с этим вопросом. Почему не легитимна? Многие магазины шлют информацию о заказах через вайбер, давно искал это решение, вот нашел телеграм, но оказалось только для администраторов. Правда в вайбере как-то подтверждается аккаунт магазина (или компании) со стороны вайбера.

 

В любом случае спасибо за интересное дополнение.

 

Вы знаете, мне этот вопрос тоже интересен и актуален.

 

Давайте попробуем найти решение, а дописать его не составит труда.

 

Тут дело вот в чем, чтобы бот мог отправлять сообщение конкретному chat_id, надо знать этот самый chat_id. Обычно, чтобы его узнать надо, чтобы пользователь нажал кнопку /start в начале работы бота.

 

Касательно Viber я знаю, что там ребята отправляют напрямую по номеру телефона. В telegram по номеру телефона просто сообщение не отправить, к сожалению.

 

В нашем случае мы создавали канал, куда включали бота, и ID канала мы знаем наверняка.

 

Касательно бота с уведомлением пользователя у меня есть другая реализация (она, к сожалению, платная), но она чуть шире - там еще каталог и интеграция с Simpla.

Мне пока не разрешают тут продавать свои модули и доработки, но может будет интересно посмотреть как это работает: https://telegram.me/truecoffee_bot. Тут при создании заказа, конечно же, пользователь сразу получает уведомление, поскольку мы его четко можем инициировать.

Ссылка на сообщение
Поделиться на другие сайты

 

Касательно Viber я знаю, что там ребята отправляют напрямую по номеру телефона. В telegram по номеру телефона просто сообщение не отправить, к сожалению.

Точно, этого я не учел. Значит надо копать в сторону вайбера.

Ссылка на сообщение
Поделиться на другие сайты

Вот, что нашел:

У Viber нет открытого API. Только закрытое, получить к нему доступ могут
только очень крупные компании. Первыми в СНГ насколько мне известно это
сделали LiqPay. Сейчас так же соглашение подписала одна крупная
украинская компания, занимающаяся смс-трафиком. Но условия этого
соглашения строго запрещают отправлять что-либо кроме технических,
сервисных сообщений, типа паролей, уведомлений и т.п. Никакой рекламы.

Ссылка на сообщение
Поделиться на другие сайты

Вот, что нашел:

 

Ага, ну вот я и помню, что раньше когда работал в одном крупном екоммерсе, мы отправляли через sms traffic.

 

По идеи sms.ru должны внедрить, но что-то у них уже давно висит статус о том, что "скоро сделают".

Ссылка на сообщение
Поделиться на другие сайты

smsc.ru можно отправлять в Viber, чтобы увидеть информацию надо быть зарегистрированным там.

Вот анкета для регистрации:

 

 Анкета клиента для подключения к Viber


Для регистрации необходимы следующие данные:

  • Название, ссылка;
  • Страна;
  • Тип сервиса (магазин, страхование, финансы и т.п.);
  • Прогноз объема (сообщений в день);
  • Ожидаемый пик нагрузки (сообщений в секунду);
  • По каким странам будет производиться рассылка;
  • Примеры сообщений на русском и английском языках;
  • Ссылка и скриншот на оферту/условие оказания услуг с информацией о получении абонентом сообщения по Viber.

Минимальный объем 5 000 — 10 000 сообщений в месяц (прогноз).
Регистрация нового сервиса (клиента) занимает в среднем 2-3 недели.
Максимальное количество символов в одном сообщении — 800.

Ссылка на сообщение
Поделиться на другие сайты

Дайте больше деталей, что не работает и в каком месте?

 

Токен свой вставили от бота?

 

Конечно вставил)

По началу не получалось привязать в админы бота, но потом разобрался и получилось, также вывел токен и пр. по списку, ну а далее пошагово вставил коды в файлы

только меня смущает ID канала в телеграмме, начинается с минуса "-", так и должно быть?)

Ссылка на сообщение
Поделиться на другие сайты

Да, так и должно быть.

 

Подозреваю, что так telegram различает пользователей и каналы

 

значит все верно сделал, но не работает((

есть какой-то способ проверить работоспособность? либо бота, либо скрипт?

или может себе не приходит уведомление? потому что тестировал на на свой номер оформлял заказ

Ссылка на сообщение
Поделиться на другие сайты

Не совсем понял вопрос. Дело в том, что это уведомление для администратора.

то что приходит админу это я знаю)

когда проверяю работоспособность, делаю тестовый заказ и указываю тот же номер, что и зарегистрирован в Телеграм через который создавал бота и канал. Возможно проблема в этом?

Ссылка на сообщение
Поделиться на другие сайты

то что приходит админу это я знаю)

когда проверяю работоспособность, делаю тестовый заказ и указываю тот же номер, что и зарегистрирован в Телеграм через который создавал бота и канал. Возможно проблема в этом?

 

https://api.telegram.org/bot[ТОКЕН_БОТА]/sendMessage?chat_id=[iD_КАНАЛА]&text=тест 

 

Не нужно делать тестовые заказы, ты можешь слать себе сообщения через ссылку. Подставь свои данные и наблюдай ответ. Например: "{"ok":true,"result":{"message_id":143,"chat":{"id":-**************,"title":"*******","type":"channel"},"date":1481528208,"text":"\u0442\u0435\u0441\u0442"}}". 

 

Ссылка на сообщение
Поделиться на другие сайты

то что приходит админу это я знаю)

когда проверяю работоспособность, делаю тестовый заказ и указываю тот же номер, что и зарегистрирован в Телеграм через который создавал бота и канал. Возможно проблема в этом?

нет, это не должно влиять, он ведь не по номеру отправляет, а по chat_id канала.

 

 

надо проверить работоспособность бота.

попробовать можно так, создать в корне simpla php-файл из которого вызвать наш класс:

 

$simpla->tgnotify->apiRequest("sendMessage", array('chat_id' => $simpla->settings->tg_channel, 'parse_mode'=>'HTML', "text" => 'test text'));
 
Изменено пользователем nikolayv
Ссылка на сообщение
Поделиться на другие сайты

Была ошибка из-за того, что не поставил - в Id. Поправил в базе минус и все заработало. Потом еще прикрутил и к модулю покупки в 1 клик. Спасибо автору.

Ссылка на сообщение
Поделиться на другие сайты
  • 2 недели спустя...

Была ошибка из-за того, что не поставил - в Id. Поправил в базе минус и все заработало. Потом еще прикрутил и к модулю покупки в 1 клик. Спасибо автору.

;)

 

да, минус там, это критично, т.к. именно им, как я понял, отличается канал от обычного юзера.

Ссылка на сообщение
Поделиться на другие сайты
  • 3 недели спустя...

у меня на этапе получения id и перехода по ссылке ничего не выдает:

{"ok":false,"error_code":404,"description":"Not Found"}
 

все данные подставил, токен и название канала

Изменено пользователем Julius123
Ссылка на сообщение
Поделиться на другие сайты

у меня на этапе получения id и перехода по ссылке ничего не выдает:

{"ok":false,"error_code":404,"description":"Not Found"}
 

все данные подставил, токен и название канала

 

Специально для вас проверил, создал нового бота и канал. Что-то делаете не так.

 

https://api.telegram.org/botТОКЕН/sendMessage?chat_id=@имя_канала&text=%D1%82%D0%B5%D1%81%D1%82

 

Проверьте, есть ли в админах канала ваш бот?

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...