Table of Contents |
---|
Возможности модуля
Модуль предназначен для отправки Push уведомлений в мобильное приложение и браузерах. Отправка производится с помощью firebase cloud messaging. Клиент реализован на ServiceWorker, поэтому будет работать только на домене с валидным SSL (HTTPS) сертификатом. Пуши в Firefox работают без ключа.
Установка модуля
Чтобы Push ратали работали нужно прописать в config.pl
Code Block | ||
---|---|---|
| ||
$conf{PUSH_ENABLED}=1; |
Чтобы модуль работал корректно, нужно включить REST API
Code Block | ||
---|---|---|
| ||
$conf{API_ENABLE} = 1; |
Также нужнно установить Perl модуль Crypt::JWT
Code Block | ||
---|---|---|
| ||
cpan
install Crypt::JWT |
Создание проекта firebase
Переходим по ссылке https://console.firebase.google.com/
После создания переходим в настройки проекта
После этого переходим в настройки Cloud Messaging, а также переходим в настройки API.
После перехода в настройки API просто включаем протокол
Переходим назад в настройки Cloud Messaging и копируем Server Key и прописываем в config.pl
После этого скачивается файл, название которого необходимо будет скопировать и внести в config.pl
Code Block | ||
---|---|---|
| ||
$conf{FIREBASE_KEY}="Название файла"; # пример abillslite-fed23-fad8f0401a98 |
Также нужно вынести из названия файла первое значение перед дефисами, например abillslite-fed23-fad8f0401a98 тогда значения будет abillslite-fed23
Code Block | ||
---|---|---|
| ||
$conf{FIREBASEGOOGLE_SERVERPROJECT_KEYID}="ВашID ключпроекта"; |
Настройка WebPush
Для настройки Web Push необходимо перейти в настройки Cloud Messaging и создать пару ключей для # пример abillslite-fed23 |
После внесения переменных, скачанный json файл нужно загрузить на сервер в каталог /usr/abills/Certs/google/*Название файла*.json
Настройка WebPush
Для настройки Web Push необходимо перейти в настройки Cloud Messaging и создать пару ключей для WebPush
После создание копируем публичный ключ и прописасываем прописываем в config.pl
Code Block | ||
---|---|---|
| ||
$conf{FIREBASE_VAPID_KEY}="Ваш public key"; |
Создаем Web приложение
Копируем firebaseConfig и вносим в конфигурации на биллинге
В config.pl
Также обязательно настройте apiKey со стороны гугла - https://console.cloud.google.com/ только под ip вашего сервера, где находится веб-интерфейс.
Code Block | ||
---|---|---|
| ||
$conf{FIREBASE_CONFIG} = { apiKey => "Sample", authDomain => "Sample", projectId => "Sample", storageBucket => "Sample", messagingSenderId => "Sample", appId => "Sample", measurementId => "Sample" }; |
Копируем файл
Code Block | ||
---|---|---|
| ||
cd /usr/abills/cgi-bin/ cp ../misc/firebase/firebase-config.js firebase-config.js |
Вставляем настройки созданного firebaseConfig значения по настройкам из config.pl в созданный firebase-config.js
Code Block | ||
---|---|---|
| ||
var firebaseConfig = {
apiKey: "Sample",
authDomain: "Sample",
projectId: "Sample",
storageBucket: "Sample",
messagingSenderId: "Sample",
appId: "Sample",
measurementId: "Sample"
}; |
Также для отображения кнопки Push в кабинете пользователя нужно включить опцию
Code Block | ||
---|---|---|
| ||
$conf{PUSH_USER_PORTAL}=1; |
Настройка Web Push готова!
Пример работы
Пример получения Push в браузере
Пример сообщения между админами с помощью Push
Чтобы отправить сообщение админам, нужно кликнуть по ссылке "Online"
Автоматическое очищение невалидных токенов
В системе существует плагин push_clean он автоматически очищает FCM токены
Запуска плагина
Code Block |
---|
/usr/abills/libexec/billd push_clean DEBUG=3 DELETE_TOKENS=1 |
Есть два уровня отладки
Вывод при DEBUG=2
Code Block |
---|
Debug mode 3
REPORT OF FCM TOKENS STATUS
VALID TOKENS COUNT: 1
INVALID TOKENS COUNT: 4
GT: 0.84588 |
Вывод при DEBUG=3
Запуск без DELETE_TOKENS=1
Code Block |
---|
Debug mode 3
REPORT OF FCM TOKENS STATUS
INVALID TOKEN f39mvSvWRfaEGpqk29_H5Y:APA91bGpaVvnT_Pkx0WWSevywj9tAFIR2IKfJDbJCj_6YQvGCDKMeXtyzMPBIeB02sEhKbXscGpkLIm0Op4uZu7FYi7TPASjXqxvDYHg5Nxu0LaU2FsqlNvCfyOJdIS9liJP59_0qZyz is invalid with FCM status InvalidRegistration
INVALID TOKEN f39mvSvWRfaEGpqk29_H5Y:APA91bGpaVvnT_Pkx0WWSevywj9tAFIR2IKfJDbJCj_6YQvGCDKMeXtyzMPBIeB02sEhKbXscGpkLIm0Op4uZu7FYi7TPASjXqxvDYHg5Nxu0LaU2FsqlNvCfyOJdIS9liJP59_0qZyz is invalid with FCM status InvalidRegistration
INVALID TOKEN f39mvSvWRfaEGpqk29_H5Y:APA91bGpaVvnT_Pkx0WWSevywj9tAFIR2IKfJDbJCj_6YQvGCDKMeXtyzMPBIeB02sEhKbXscGpkLIm0Op4uZu7FYi7TPASjXqxvDYHg5Nxu0LaU2FsqlNvCfyOJdIS9liJP59_0qZyz1 is invalid with FCM status InvalidRegistration
VALID TOKEN cGmQtsBg7UOshhpxpHlXS3:APA91bGZC3lgUnFVAMpV2HlpM2oekD6pQA9-Kw3J80upUhFE-7CrPcP4DxLgK7BgX10SnvXZIbQVXOw5M7vyJP6-0_U7EtPySsa8Z8--xLclW55WcM-O-yFcD8F0dv7Bi0Vcd6SYPLqk
INVALID TOKEN d2kI0mhPaEWoirhOSO1u3h:APA91bGRm27JCaKLk6KKbS6iFkAujpgIYQauwR7guuD4FXNdpZRXUJrxeLvGRELl9jhHOnXP0LNxxS5irbzizz-dcsWeUcNbSCwxvaBhIA7R_-YYla0gU-gdrqlojpQxZh8aU75HteW1 is invalid with FCM status InvalidRegistration
INVALID TOKEN ehue-zm9T4unGl_6GkeU6_:APA91bFhuAyK7GKTSLGfu5nU0qd50VzqiEUHw8NVZUiimRu5or5nPUMxrt9Xg4xPZbA3Va4OavkZo2jYJq8Zq86v-0bFP-MudMF5O2-d6HlWKx71m1aSwadgg6B4svED5-Z8QsxuKRhh is invalid with FCM status NotRegistered
VALID TOKENS COUNT: 1
INVALID TOKENS COUNT: 5
GT: 0.76055 |
Запуск с DELETE_TOKENS=1
Code Block |
---|
Debug mode 3
REPORT OF FCM TOKENS STATUS
TOKEN DELETED. INVALID TOKEN f39mvSvWRfaEGpqk29_H5Y:APA91bGpaVvnT_Pkx0WWSevywj9tAFIR2IKfJDbJCj_6YQvGCDKMeXtyzMPBIeB02sEhKbXscGpkLIm0Op4uZu7FYi7TPASjXqxvDYHg5Nxu0LaU2FsqlNvCfyOJdIS9liJP59_0qZyz is invalid with FCM status InvalidRegistration
TOKEN DELETED. INVALID TOKEN f39mvSvWRfaEGpqk29_H5Y:APA91bGpaVvnT_Pkx0WWSevywj9tAFIR2IKfJDbJCj_6YQvGCDKMeXtyzMPBIeB02sEhKbXscGpkLIm0Op4uZu7FYi7TPASjXqxvDYHg5Nxu0LaU2FsqlNvCfyOJdIS9liJP59_0qZyz is invalid with FCM status InvalidRegistration
TOKEN DELETED. INVALID TOKEN f39mvSvWRfaEGpqk29_H5Y:APA91bGpaVvnT_Pkx0WWSevywj9tAFIR2IKfJDbJCj_6YQvGCDKMeXtyzMPBIeB02sEhKbXscGpkLIm0Op4uZu7FYi7TPASjXqxvDYHg5Nxu0LaU2FsqlNvCfyOJdIS9liJP59_0qZyz1 is invalid with FCM status InvalidRegistration
VALID TOKEN cGmQtsBg7UOshhpxpHlXS3:APA91bGZC3lgUnFVAMpV2HlpM2oekD6pQA9-Kw3J80upUhFE-7CrPcP4DxLgK7BgX10SnvXZIbQVXOw5M7vyJP6-0_U7EtPySsa8Z8--xLclW55WcM-O-yFcD8F0dv7Bi0Vcd6SYPLqk
TOKEN DELETED. INVALID TOKEN d2kI0mhPaEWoirhOSO1u3h:APA91bGRm27JCaKLk6KKbS6iFkAujpgIYQauwR7guuD4FXNdpZRXUJrxeLvGRELl9jhHOnXP0LNxxS5irbzizz-dcsWeUcNbSCwxvaBhIA7R_-YYla0gU-gdrqlojpQxZh8aU75HteW1 is invalid with FCM status InvalidRegistration
TOKEN DELETED. INVALID TOKEN ehue-zm9T4unGl_6GkeU6_:APA91bFhuAyK7GKTSLGfu5nU0qd50VzqiEUHw8NVZUiimRu5or5nPUMxrt9Xg4xPZbA3Va4OavkZo2jYJq8Zq86v-0bFP-MudMF5O2-d6HlWKx71m1aSwadgg6B4svED5-Z8QsxuKRhh is invalid with FCM status NotRegistered
VALID TOKENS COUNT: 1
INVALID TOKENS COUNT: 5
GT: 0.71221 |
Для разработчиков
Пример использования:
Code Block | ||
---|---|---|
| ||
# Подключаем модуль
use Abills::Sender::Core;
my $Sender = Abills::Sender::Core->new($db, $admin, \%conf, {
SENDER_TYPE => 'Push'
});
# Отправляем сообщение
my $request_sent = $Sender->send_message({
UID => 2,
TITLE => 'ABillS Push',
MESSAGE => 'Hello, world sended via Push message'
});
# $request_sent == 1, если запрос к сервису Push завершился успешно. (но это не гарантирует доставку) |
Legacy настройка
После этого переходим в настройки Cloud Messaging, а также переходим в настройки API.
После перехода в настройки API просто включаем протокол
Переходим назад в настройки Cloud Messaging и копируем Server Key и прописываем в config.pl
Code Block | ||
---|---|---|
| ||
$conf{FIREBASE_SERVER_KEY}="Ваш ключ"; |
Отчет по push логам
Возможные ошибки
В случае возникновения ошибки - Can't locate Crypt/JWT.pm in @INC (you may need to install the Crypt::JWT module) - во время отправки сообщения после настройки Push уведомлений добавте модульJWT с помощью следующей команды
Code Block | ||
---|---|---|
| ||
cpan add Crypt::JWT |