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

 

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

Simpla — это готовое решение для быстрого создания интернет-магазина с широкими возможностями и хорошим дизайном.

Итак, общая схема простая, создаем нового бота в 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 - магазин на Simpla CMS, где данные уведомления реализованы.

Шаблоны Joomla с адаптивным макетом