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


Push-Уведомления Или Как Сэкономить На Sms Администратору


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 Beauty

Beauty

    Пользователь

  • Пользователи
  • PipPip
  • 29 сообщений
  • ГородМосква

Отправлено 25 Январь 2017 - 20:13

И так, суть вопроса была такова, заказов достаточно много, количество "бесплатных" смс ограниченно, да и уведомлять о заказе надо несколько менеджеров. Выход был простым - push-уведомления! (Описываемое решение работает на десктопных и мобильных браузерах Firefox и Chrome)

Для реализации уведомлений понадобится не так много:
  • Естественно, интернет-магазин
  • Хостинг с поддержкой php и ssl (сайт должен открываться по https)
  • Немного времени для настройки
1. Для реализации уведомлений необходимо зарегистрироваться на сервисе https://onesignal.com (сервис бесплатный и предоставляет неограниченное количество уведомлений для неограниченного количества подписчиков). Сразу после регистрации нужно создать новое приложение:
  • Add a new app
  • Ввести название приложения
  • Выбрать платформу Website Push
  • Выбрать Chrome и Mozilla
  • Ввести адрес сайта на хостинге где будет лежать обработчик уведомлений, например https://site.ru (даже если обработчик будет не в корне сайта, например https://site.ru/push/mypush.php, необходимо указать только сам домен https://site.ru)
  • Ввести адрес картинки для уведомления (рекомендуется от 192*192px), например https://site.ru/images/logo.png
  • Выбрать SDK Website Push
Создание приложения почти завершено. Далее необходимо зайти в App Settings на вкладку Keys & IDs, отсюда необходимо скопировать OneSignal App ID и REST API Key, они понадобятся для настройки обработчика на стороне сервера.

2. Перейдем к настройкам серверной части:
  • Необходимо скачать https://github.com/o...nalSDKFiles.zip
  • Файлы из архива необходимо поместить именно в корень сайта на хостинге, например https://site.ru
  • Необходимо изменить только файл манифеста, первые 3 строки в файле manifest.json
{
"name": "OneSignal Example", // Название вашего интернет-магазина
"short_name": "OneSignalExample", // Короткое название
"start_url": "/", // Путь до обработчика, например /push/, если в корне то ничего менять не надо
"display": "standalone",
"gcm_sender_id": "482941778795", // НЕ МЕНЯТЬ
"DO_NOT_CHANGE_GCM_SENDER_ID": "Do not change the GCM Sender ID"
}

Далее фал index.php с простой парольной защитой, чтобы даже зная url до файла, кто угодно не мог подписаться на уведомления, только зная пароль. Его нужно заменить в исходном коде как и ID приложения OneSignal. Файл можно положить как в корень сайта на хостинге так и в любую папку (в этом случае необходимо еще скорректировать путь до файла manifest.json который должен быть только в корне сайта)

<?php
if (session_id() == "")
{
session_start();
}
$password = '';
if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST['form_name'] == 'loginform')
{
$password = isset($_POST['password']) ? $_POST['password'] : '';
if ($password == '111111!') //Ваш пароль на страницу
{
	 $_SESSION['password'] = $password;
}
}
else
{
$password = isset($_SESSION['password']) ? $_SESSION['password'] : '';
}
if ($password != '111111!') //Ваш пароль на страницу
{
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
echo "<html>\n";
echo "<head>\n";
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n";
echo "<title>PUSH</title>\n";
echo "</head>\n";
echo "<body style=\"background-color:#FFFFFF\">\n";
echo "<center>\n";
echo "<br>\n";
if($_SERVER['REQUEST_METHOD'] == 'POST')
	 echo "<span style=\"font-size:13px;font-family:Arial;font-weight:normal;text-decoration:none;color:#FF0000\">Неверный пароль!<br><br><br></span>\n";
else
	 echo "<span style=\"font-size:13px;font-family:Arial;font-weight:normal;text-decoration:none;color:#000000\">Доступ только с паролем<br><br><br></span>\n";
echo "<form method=\"post\" action=\"".basename(__FILE__)."\">\n";
echo "<input type=\"hidden\" name=\"form_name\" value=\"loginform\">\n";
echo " <table cellspacing=\"0\" cellpadding=\"3\" style=\"border:1px solid #535353;\">\n";
echo "	 <tr>\n";
echo "		 <td colspan=\"2\" style=\"background-color:#535353;color:#FFFFFF;font-size:13px;font-family:Arial;font-weight:normal;text-decoration:none;text-align:center;padding:4px;\"><strong>Вход</strong></td>\n";
echo "	 </tr>\n";
echo "	 <tr>\n";
echo "		 <td style=\"font-size:13px;font-family:Arial;font-weight:normal;text-decoration:none;color:#000000;text-align:right;\" width=\"30%\" height=\"60\">Пароль:</td>\n";
echo "		 <td style=\"font-size:13px;font-family:Arial;font-weight:normal;text-decoration:none;color:#000000;text-align:left\" width=\"70%\" height=\"60\"><input type=\"password\" name=\"password\" value=\"\" style=\"border:1px solid #535353;width:120px;\">&nbsp;&nbsp;<input type=\"submit\" value=\"Войти\"></td>\n";
echo "	 </tr>\n";
echo " </table>\n";
echo "</form>\n";
echo "</center>\n";
echo "</body>\n";
echo "</html>\n";
exit;
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>PUSH</title>
<link rel="manifest" href="manifest.json">
<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async></script>
<script>
var OneSignal = window.OneSignal || [];
OneSignal.push(["init", {
	 appId: "OneSignal_App_ID", /* Ваш ID приложения */
	 autoRegister: false,
	 notifyButton: {
	 enable: true
	 }
}]);
</script>
</head>
<body>
</body>
</html>

И последний файл который понадобится, лучше назвать набором символов, букв и цифр чтобы его нельзя было случайно подобрать и открыть по прямой ссылке, например kjawr76FSe0Oi.php
Файл разместить в том же месте где index.php. В файле необходимо только отредактировать сообщение о новом заказе, вставить свои OneSignal App ID и REST API Key.

<?PHP
function sendMessage(){
$content = array(
"en" => 'Created a new order' // Сообщение о новом заказе
);

$fields = array(
'app_id' => "OneSignal_App_ID", // Id приложения
'included_segments' => array('All'),
	 'data' => array("foo" => "bar"),
'contents' => $content
);

$fields = json_encode($fields);
print("\nJSON sent:\n");
print($fields);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://onesignal.com/api/v1/notifications");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf-8',
			 'Authorization: Basic REST_API_Key')); //REST API Key
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$response = curl_exec($ch);
curl_close($ch);

return $response;
}

$response = sendMessage();
$return["allresponses"] = $response;
$return = json_encode( $return);

print("\n\nJSON received:\n");
print($return);
print("\n");
?>

Практически все готово, осталось только в основных настройках Вашего интернет-магазина указать параметр "URL адрес для уведомлений", соответственно путь до Вашего обработчика, например https://site.ru/kjawr76FSe0Oi.php
Папку на хостинге где лежат файлы обработчика уведомлений рекомендую закрыть от индексации.

Все, система PUSH-уведомлений готова, осталось только добавить подписчиков на уведомления.
На компьютере где необходимо получать уведомления:
  • Заходим в браузере на сайт на хостинге, например https://site.ru
  • Вводим пароль который Вы задали в файле index.php и жмем "Войти"
  • В правом нижнем углу увидите кнопку в виде колокольчика, приглашение для подписки
  • Принимаем предложения всегда показывать уведомления для этого сайта
  • Получаем первое уведомление о том что браузер подписан
Все, система уведомлений работает когда браузер открыт, даже если не открыт бэк-офис магазина. В мобильной версии Mozilla уведомления работают даже при закрытом браузере.

По желанию систему можно доработать, например разбирая POST запрос поступающий на url уведомлений можно добавить в уведомления ссылку на заказ, номер и сумму заказа, информацию о клиенте и т.д.
Все описанные в примере файлы прилагаю к теме.

Прикрепленные файлы

  • Прикрепленный файл  index.php   2,95К   248 Количество загрузок:
  • Прикрепленный файл  kjawr76FSe0Oi.php   1,18К   446 Количество загрузок:
  • Прикрепленный файл  SDKFiles.zip   658байт   55 Количество загрузок:


#2 Beauty

Beauty

    Пользователь

  • Пользователи
  • PipPip
  • 29 сообщений
  • ГородМосква

Отправлено 26 Январь 2017 - 01:04

PS. Если бы разработчики платформы реализовали как обещали работу основного домена магазина через SSL, и добавили пару файлов в корень, а несколько параметров для этих файлов в настройках магазина, то использовать push-уведомления можно было-бы на уровне платформы. Надеюсь разработчики возьмут себе это на вооружение, тем более что реализация не требует финансовых затрат.

#3 Beauty

Beauty

    Пользователь

  • Пользователи
  • PipPip
  • 29 сообщений
  • ГородМосква

Отправлено 26 Январь 2017 - 01:09

Выше написанное сообщение больше относилось к тому что уведомления о заказах можно было бы сделать на файлах в корне сайта, но отсутствие ssl, установленные ограничения на формат файла, переформатирование текста файла для некоторых языков программирования, например JS, не позволяют использовать практически никакие языки вэб-программирования на должном уровне для данной платформы.

#4 support 2.0

support 2.0

    Активный участник

  • Модераторы
  • 4 950 сообщений

Отправлено 26 Январь 2017 - 21:41

Просмотр сообщенияBeauty (26 Январь 2017 - 01:09) писал:

Выше написанное сообщение больше относилось к тому что уведомления о заказах можно было бы сделать на файлах в корне сайта, но отсутствие ssl, установленные ограничения на формат файла, переформатирование текста файла для некоторых языков программирования, например JS, не позволяют использовать практически никакие языки вэб-программирования на должном уровне для данной платформы.
Расширения для Chrome и Яндекс. Уведомление о поступивших заказах




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных