nikolayv Posted November 30, 2016 Report Share Posted November 30, 2016 (edited) Мой мануал подробно описан на сайте: http://valiotti.com/usefulИтак, общая схема простая, создаем нового бота в Telegram и добавляем его в нужный канал. В этот канал будем через Simpla API отправлять апдейты.Используем следующую схему перед созданием модуля:Создадим бота через Bot Father, подробно описано в Telegram Bot API. Запишем токен созданного бота. Создадим публичный канал и установим для него username. Добавим в канал созданного бота. Перейдём по ссылке https://api.telegram.org/bot[ТОКЕН_БОТА]/sendMessage?chat_id=@[USERNAME_КАНАЛА]&text=тест После перехода по ссылке будет выведен id канала, сохраним его. В настройках канала сделаем его приватным (убрать 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 November 30, 2016 by nikolayv Quote Link to post Share on other sites
pizhama Posted December 1, 2016 Report Share Posted December 1, 2016 (edited) Спасибо, все работает! В файле - TgNotify.php в строке 155 написано "тип помола". Кому надо изменяйте на свое. Я не разобрался до конца. Это уведомления только для администратора? Или клиенту тоже приходит уведомление (при наличии телеграм, конечно же)? Edited December 1, 2016 by pizhama Quote Link to post Share on other sites
nikolayv Posted December 1, 2016 Author Report Share Posted December 1, 2016 Спасибо, все работает! В файле - TgNotify.php в строке 155 написано "тип помола". Кому надо изменяйте на свое. Я не разобрался до конца. Это уведомления только для администратора? Или клиенту тоже приходит уведомление (при наличии телеграм, конечно же)? Простите, сейчас подкорректирую. Это уведомление для администратора.Технически, можно сделать и для клиента, но есть заморочки с тем, что он должен установить бота себе (инициировать с ним контакт). В противном случае отправка не легитимна, а кроме того мы не знаем chat_id. Quote Link to post Share on other sites
nikolayv Posted December 1, 2016 Author Report Share Posted December 1, 2016 Спасибо, все работает! В файле - TgNotify.php в строке 155 написано "тип помола". Кому надо изменяйте на свое. Убрал. Спасибо за внимательность! Quote Link to post Share on other sites
pizhama Posted December 2, 2016 Report Share Posted December 2, 2016 (edited) Простите, сейчас подкорректирую. Это уведомление для администратора.Технически, можно сделать и для клиента, но есть заморочки с тем, что он должен установить бота себе (инициировать с ним контакт). В противном случае отправка не легитимна, а кроме того мы не знаем chat_id.Я не разбирался с этим вопросом. Почему не легитимна? Многие магазины шлют информацию о заказах через вайбер, давно искал это решение, вот нашел телеграм, но оказалось только для администраторов. Правда в вайбере как-то подтверждается аккаунт магазина (или компании) со стороны вайбера. В любом случае спасибо за интересное дополнение. Edited December 2, 2016 by pizhama Quote Link to post Share on other sites
nikolayv Posted December 2, 2016 Author Report Share Posted December 2, 2016 Я не разбирался с этим вопросом. Почему не легитимна? Многие магазины шлют информацию о заказах через вайбер, давно искал это решение, вот нашел телеграм, но оказалось только для администраторов. Правда в вайбере как-то подтверждается аккаунт магазина (или компании) со стороны вайбера. В любом случае спасибо за интересное дополнение. Вы знаете, мне этот вопрос тоже интересен и актуален. Давайте попробуем найти решение, а дописать его не составит труда. Тут дело вот в чем, чтобы бот мог отправлять сообщение конкретному chat_id, надо знать этот самый chat_id. Обычно, чтобы его узнать надо, чтобы пользователь нажал кнопку /start в начале работы бота. Касательно Viber я знаю, что там ребята отправляют напрямую по номеру телефона. В telegram по номеру телефона просто сообщение не отправить, к сожалению. В нашем случае мы создавали канал, куда включали бота, и ID канала мы знаем наверняка. Касательно бота с уведомлением пользователя у меня есть другая реализация (она, к сожалению, платная), но она чуть шире - там еще каталог и интеграция с Simpla.Мне пока не разрешают тут продавать свои модули и доработки, но может будет интересно посмотреть как это работает: https://telegram.me/truecoffee_bot. Тут при создании заказа, конечно же, пользователь сразу получает уведомление, поскольку мы его четко можем инициировать. Quote Link to post Share on other sites
pizhama Posted December 2, 2016 Report Share Posted December 2, 2016 Касательно Viber я знаю, что там ребята отправляют напрямую по номеру телефона. В telegram по номеру телефона просто сообщение не отправить, к сожалению.Точно, этого я не учел. Значит надо копать в сторону вайбера. Quote Link to post Share on other sites
nikolayv Posted December 2, 2016 Author Report Share Posted December 2, 2016 Точно, этого я не учел. Значит надо копать в сторону вайбера. Давайте сделаем. Нужен API. Quote Link to post Share on other sites
pizhama Posted December 2, 2016 Report Share Posted December 2, 2016 Вот, что нашел:У Viber нет открытого API. Только закрытое, получить к нему доступ могуттолько очень крупные компании. Первыми в СНГ насколько мне известно этосделали LiqPay. Сейчас так же соглашение подписала одна крупнаяукраинская компания, занимающаяся смс-трафиком. Но условия этогосоглашения строго запрещают отправлять что-либо кроме технических,сервисных сообщений, типа паролей, уведомлений и т.п. Никакой рекламы. Quote Link to post Share on other sites
nikolayv Posted December 2, 2016 Author Report Share Posted December 2, 2016 Вот, что нашел: Ага, ну вот я и помню, что раньше когда работал в одном крупном екоммерсе, мы отправляли через sms traffic. По идеи sms.ru должны внедрить, но что-то у них уже давно висит статус о том, что "скоро сделают". Quote Link to post Share on other sites
bahonio Posted December 2, 2016 Report Share Posted December 2, 2016 smsc.ru можно отправлять в Viber, чтобы увидеть информацию надо быть зарегистрированным там.Вот анкета для регистрации: Анкета клиента для подключения к ViberДля регистрации необходимы следующие данные:Название, ссылка;Страна;Тип сервиса (магазин, страхование, финансы и т.п.);Прогноз объема (сообщений в день);Ожидаемый пик нагрузки (сообщений в секунду);По каким странам будет производиться рассылка;Примеры сообщений на русском и английском языках;Ссылка и скриншот на оферту/условие оказания услуг с информацией о получении абонентом сообщения по Viber.Минимальный объем 5 000 — 10 000 сообщений в месяц (прогноз).Регистрация нового сервиса (клиента) занимает в среднем 2-3 недели.Максимальное количество символов в одном сообщении — 800. Quote Link to post Share on other sites
n1c Posted December 9, 2016 Report Share Posted December 9, 2016 Крутая фишка, спасибо! Сделал по инструкции и не работает (( Quote Link to post Share on other sites
pizhama Posted December 9, 2016 Report Share Posted December 9, 2016 У меня работает. Значит что-то неправильно сделано Quote Link to post Share on other sites
nikolayv Posted December 10, 2016 Author Report Share Posted December 10, 2016 Дайте больше деталей, что не работает и в каком месте? Токен свой вставили от бота? Quote Link to post Share on other sites
n1c Posted December 11, 2016 Report Share Posted December 11, 2016 Дайте больше деталей, что не работает и в каком месте? Токен свой вставили от бота? Конечно вставил)По началу не получалось привязать в админы бота, но потом разобрался и получилось, также вывел токен и пр. по списку, ну а далее пошагово вставил коды в файлытолько меня смущает ID канала в телеграмме, начинается с минуса "-", так и должно быть?) Quote Link to post Share on other sites
nikolayv Posted December 11, 2016 Author Report Share Posted December 11, 2016 Да, так и должно быть. Подозреваю, что так telegram различает пользователей и каналы Quote Link to post Share on other sites
n1c Posted December 11, 2016 Report Share Posted December 11, 2016 Да, так и должно быть. Подозреваю, что так telegram различает пользователей и каналы значит все верно сделал, но не работает((есть какой-то способ проверить работоспособность? либо бота, либо скрипт?или может себе не приходит уведомление? потому что тестировал на на свой номер оформлял заказ Quote Link to post Share on other sites
nikolayv Posted December 11, 2016 Author Report Share Posted December 11, 2016 Не совсем понял вопрос. Дело в том, что это уведомление для администратора. Quote Link to post Share on other sites
n1c Posted December 11, 2016 Report Share Posted December 11, 2016 Не совсем понял вопрос. Дело в том, что это уведомление для администратора.то что приходит админу это я знаю)когда проверяю работоспособность, делаю тестовый заказ и указываю тот же номер, что и зарегистрирован в Телеграм через который создавал бота и канал. Возможно проблема в этом? Quote Link to post Share on other sites
bahonio Posted December 12, 2016 Report Share Posted December 12, 2016 то что приходит админу это я знаю)когда проверяю работоспособность, делаю тестовый заказ и указываю тот же номер, что и зарегистрирован в Телеграм через который создавал бота и канал. Возможно проблема в этом? 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"}}". Quote Link to post Share on other sites
nikolayv Posted December 12, 2016 Author Report Share Posted December 12, 2016 (edited) то что приходит админу это я знаю)когда проверяю работоспособность, делаю тестовый заказ и указываю тот же номер, что и зарегистрирован в Телеграм через который создавал бота и канал. Возможно проблема в этом?нет, это не должно влиять, он ведь не по номеру отправляет, а по chat_id канала. надо проверить работоспособность бота.попробовать можно так, создать в корне simpla php-файл из которого вызвать наш класс: $simpla->tgnotify->apiRequest("sendMessage", array('chat_id' => $simpla->settings->tg_channel, 'parse_mode'=>'HTML', "text" => 'test text')); Edited December 12, 2016 by nikolayv Quote Link to post Share on other sites
Cpako Posted December 18, 2016 Report Share Posted December 18, 2016 Была ошибка из-за того, что не поставил - в Id. Поправил в базе минус и все заработало. Потом еще прикрутил и к модулю покупки в 1 клик. Спасибо автору. Quote Link to post Share on other sites
nikolayv Posted December 27, 2016 Author Report Share Posted December 27, 2016 Была ошибка из-за того, что не поставил - в Id. Поправил в базе минус и все заработало. Потом еще прикрутил и к модулю покупки в 1 клик. Спасибо автору. да, минус там, это критично, т.к. именно им, как я понял, отличается канал от обычного юзера. Quote Link to post Share on other sites
Julius123 Posted January 14, 2017 Report Share Posted January 14, 2017 (edited) у меня на этапе получения id и перехода по ссылке ничего не выдает: {"ok":false,"error_code":404,"description":"Not Found"} все данные подставил, токен и название канала Edited January 14, 2017 by Julius123 Quote Link to post Share on other sites
nikolayv Posted January 18, 2017 Author Report Share Posted January 18, 2017 у меня на этапе получения 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 Проверьте, есть ли в админах канала ваш бот? Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.