Jump to content

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


Recommended Posts

Мой мануал подробно описан на сайте: 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.

Edited by nikolayv
Link to post
Share on other sites
  • Replies 61
  • Created
  • Last Reply

Top Posters In This Topic

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

 

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

Edited by pizhama
Link to post
Share on other sites

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

 

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

 

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

 

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

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

 

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

Link to post
Share on other sites

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

 

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

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

 

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

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

 

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

Edited by pizhama
Link to post
Share on other sites

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

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

Link to post
Share on other sites

 

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

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

Link to post
Share on other sites

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

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

Link to post
Share on other sites

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

 

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

 

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

Link to post
Share on other sites

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

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

 

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


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

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

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

Link to post
Share on other sites

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

 

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

 

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

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

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

Link to post
Share on other sites

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

 

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

 

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

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

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

Link to post
Share on other sites

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

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

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

Link to post
Share on other sites

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

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

 

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"}}". 

 

Link to post
Share on other sites

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

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

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

 

 

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

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

 

$simpla->tgnotify->apiRequest("sendMessage", array('chat_id' => $simpla->settings->tg_channel, 'parse_mode'=>'HTML', "text" => 'test text'));
 
Edited by nikolayv
Link to post
Share on other sites

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

Link to post
Share on other sites
  • 2 weeks later...

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

;)

 

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

Link to post
Share on other sites
  • 3 weeks later...

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

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

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

Edited by Julius123
Link to post
Share on other sites

у меня на этапе получения 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

 

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

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...