[TOC]
- Мобильное приложение предлагает пользователю получать уведомление от сервера;
- Мобильное приложение подключается к серверу сообщений и регистрируется;
- Сервер сообщений возвращает на устройство уникальный токен
- Приложение отправляет полученный токен серверному приложению, вместе с идентификатором клиента, в итоге токен привязывается к конкретному пользователю и его устройству;
- Сервер отправляет запрос через API к серверу сообщений;
- Сервер сообщений отправляет Push уведомление на устройство.
Мы реализовали работу с API Google Firebase Cloud Messaging.
Ниже приведена схема обмена данными между элементами такой интеграции:

Начнем с регистрации и создания проекта на Firebase:
-
Заходим на сайт;
-
Регистрируемся;
-
Кликаем на "Create a project";
-
Задаем имя проекту;
-
Включаем (или не включаем) Google Analytics;
-
Если Google Analytics на предыдущем включена, то выбираем аккаунт Google Analytics;
-
После создания проекта попадаем в Dashboard;
На этом создание проекта в Firebase закончено
Для работы с Firebase реализован SDK для различных платформ. Подробно о том, как внедрить его в свое приложение, описано в руководствах: для iOS и для Android. У вашего провайдера может быть предусмотрен свои методы интеграции с приложением, подробно о реализации можете уточнить у них.
Что умеет делать серверная часть:
- Получает от Юздеска вебхуки;
- Отправляет по API запросы к FireBase с уведомлением. Заголовок: Новое сообщение от поддержки, текст: %начало ответа%;
- Обеспечивает сохранение пары
токен <> id клиентаЮздеска с помощью POST-запроса; - Хранит эти пары;
- Обеспечивает их удаление с помощью DELETE-запроса.
- ОС: Ubuntu LTS или Debian;
- Node.js: мажорная версия 14;
- MySQL: версия 5.7;
- SSL-сертификат.
- Загрузить код на сервер;
- Отредактировать конфигурационный файл example.env — добавить свой API-токен из Юздеска, настроить подключение к базе данных и порты для подключения:
DB_HOST = localhost //Хост БД
DB_USER = user //имя пользователя базы БД
DB_PASSWORD = secret //Пароль пользователя БД
DB_NAME = service //Название базы данных
USEDESK_API_TOKEN = ebd869f5c67413382... //Токен API-канала в Юздеске%
PORT = 80 //Порт подключения HTTP
SSL_PORT = 443 // Порт подключения SSH
-
Переименовать example.env в .env;
-
Установить ваши SSL-сертификаты для корректной работы HTTPS протокола. Названия оставить как в примере: ssl.crt и ssl.key;
-
Сгенерировать в консоли Firebase новый приватный ключ для доступа по API
-
Полученный файл переименовать в credential.json и загрузить в корень проекта;
-
Собрать проект:
npm run build
После того, как приложение получило разрешение на уведомления от пользователя, сервис сообщений генерирует уникальный токен для конкретного устройства. Именно по нему происходит отправка сообщений. Для того, чтобы сервис знал, какие устройства принадлежат конкретному клиенту, в нем предусмотрена база данных. Для записи необходимо отправить запрос к API сервиса:
POST /notification/token
В качестве параметров метод ожидает следующие параметры:
{
"recipient_id": dehwuwo13j12223...,
"token": "e3OWEB57duf8Wkqk_aiwh9:...",
"recipient_type": "USEDESK_CHAT",
"locale": "en"
}
где:
- recipient_id — токен чата клиента в Юздеске
- token — токен Firebase
- recipient_type — тип получателя. В данной реализации всегда "USEDESK_CHAT"
- locale — язык для заголовка уведомления
Для удаления токена устройства из базы данных необходимо отправить запрос к API сервиса:
DELETE /notification/token
В качестве параметров метод ожидает следующие параметры:
{
"token": "e3OWEB57duf8Wkqk_aiwh9:...",
}
где:
- token — токен устройства, который нужно удалить из БД
Пришло время настроить исходящие запросы от Юздеска. О настройке API-канала подробно рассказали в статье.
Необходимые настройки:
- Redirect URL:
{{host}}/notification/post; - Следить за каналами: установите канал SDK
- В разделе "Отслеживание чатов" необходимо отметить "Новый комментарий".




