Перейти к содержимому


Фото
* * * * * 2 голосов

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

telegram

  • Чтобы отвечать, сперва войдите на форум
47 ответов в теме

#1 nikolayv

nikolayv
  • Пользователь
  • 43 сообщений
  • Программирование, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Saint Petersburg

Опубликовано 30.11.2016 - 15:45

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


#2 pizhama

pizhama
  • Пользователь
  • 35 сообщений

Опубликовано 01.12.2016 - 16:16

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

 

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


Изменено: pizhama, 01.12.2016 - 16:30


#3 nikolayv

nikolayv
  • Пользователь
  • 43 сообщений
  • Программирование, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Saint Petersburg

Опубликовано 02.12.2016 - 00:19

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

 

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

 

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

 

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

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

 

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



#4 nikolayv

nikolayv
  • Пользователь
  • 43 сообщений
  • Программирование, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Saint Petersburg

Опубликовано 02.12.2016 - 00:21

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

 

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



#5 pizhama

pizhama
  • Пользователь
  • 35 сообщений

Опубликовано 02.12.2016 - 09:53

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

 

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

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

 

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

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

 

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


Изменено: pizhama, 02.12.2016 - 09:53


#6 nikolayv

nikolayv
  • Пользователь
  • 43 сообщений
  • Программирование, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Saint Petersburg

Опубликовано 02.12.2016 - 10:04

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

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



#7 pizhama

pizhama
  • Пользователь
  • 35 сообщений

Опубликовано 02.12.2016 - 10:13

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

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



#8 nikolayv

nikolayv
  • Пользователь
  • 43 сообщений
  • Программирование, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Saint Petersburg

Опубликовано 02.12.2016 - 11:06

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

 

Давайте сделаем. Нужен API.



#9 pizhama

pizhama
  • Пользователь
  • 35 сообщений

Опубликовано 02.12.2016 - 14:21

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

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



#10 nikolayv

nikolayv
  • Пользователь
  • 43 сообщений
  • Программирование, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Saint Petersburg

Опубликовано 02.12.2016 - 18:49

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

 

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

 

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



#11 bahonio

bahonio
  • Пользователь
  • 4 сообщений
  • Пользователь
  • Версия CMS:2.x

Опубликовано 02.12.2016 - 22:34

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

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

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


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

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

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



#12 n1c

n1c
  • Пользователь
  • 253 сообщений
  • Дизайн, Верстка
  • Версия CMS:2.x
  • Откуда:Украина

Опубликовано 09.12.2016 - 15:43

Крутая фишка, спасибо! 

Сделал по инструкции и не работает ((



#13 pizhama

pizhama
  • Пользователь
  • 35 сообщений

Опубликовано 09.12.2016 - 16:01

У меня работает. Значит что-то неправильно сделано



#14 nikolayv

nikolayv
  • Пользователь
  • 43 сообщений
  • Программирование, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Saint Petersburg

Опубликовано 10.12.2016 - 16:13

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

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

#15 n1c

n1c
  • Пользователь
  • 253 сообщений
  • Дизайн, Верстка
  • Версия CMS:2.x
  • Откуда:Украина

Опубликовано 11.12.2016 - 10:53

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

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

 

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

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



#16 nikolayv

nikolayv
  • Пользователь
  • 43 сообщений
  • Программирование, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Saint Petersburg

Опубликовано 11.12.2016 - 14:02

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

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

#17 n1c

n1c
  • Пользователь
  • 253 сообщений
  • Дизайн, Верстка
  • Версия CMS:2.x
  • Откуда:Украина

Опубликовано 11.12.2016 - 14:22

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

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

 

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

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

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



#18 nikolayv

nikolayv
  • Пользователь
  • 43 сообщений
  • Программирование, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Saint Petersburg

Опубликовано 11.12.2016 - 17:09

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

#19 n1c

n1c
  • Пользователь
  • 253 сообщений
  • Дизайн, Верстка
  • Версия CMS:2.x
  • Откуда:Украина

Опубликовано 11.12.2016 - 18:03

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

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

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



#20 bahonio

bahonio
  • Пользователь
  • 4 сообщений
  • Пользователь
  • Версия CMS:2.x

Опубликовано 12.12.2016 - 10:43

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

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

 

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






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых