Push-уведомления

Webim поддерживает подключение push-уведомлений для устройств на базе Android и iOS. Для включения push-уведомлений необходимо предоставить сертификаты/приватные ключи Ваших мобильных приложений. Для этого свяжитесь, пожалуйста, с нашей службой поддержки (через чат или по адресу support@webim.ru).Push-уведомление приходит в формате JSON, который с помощью специальных методов можно преобразовать в объект WebimPushNotification/WebimRemoteNotification. Это можно делать как силами Вашего приложения, так и с помощью нашего Mobile SDK. Если Вы предпочитаете второй вариант, то Вам стоит ознакомиться с SDK для Android и справочником по нему либо с SDK для iOS и справочником по нему.

По умолчанию Webim использует определённые сервисы для отправки push-уведомлений, но по запросу в техническую поддержку могут быть использованы другие сервисы, которые предложит клиент.

Для корректной настройки push-уведомлений необходимо передавать оригинальный токен без изменений.

Чтобы отписаться от push-уведомлений, в качестве токена нужно отправить значение none.

Также работу с push-уведомлениями можно посмотреть в коде демо-приложений на github.com.

Получение push-уведомлений на Android

Для Android используется система push-уведомлений FCM, и для подключения push-уведомлений нужно предоставить в техническую поддержку Webim полный FCM-ключ (около 150 символов).Для того, чтобы получить FCM API KEY, необходимый для отправки push-уведомлений в приложениях на базе Android, выполните ряд шагов:
  • Авторизуйтесь в аккаунте Google;
  • Перейдите на портал Firebase;
  • Выберите необходимый проект, а если его нет, создайте его;
  • На странице проекта в меню слева нажмите на значок шестерёнки и выберите из выпадающего списка Настройки проекта;

Настройки проекта

  • Перейдите на вкладку Cloud Messaging и скопируйте токен из поля Ключ сервера.

Ключ сервера

Если у Вас несколько мобильных приложений, которые привязаны к аккаунту Webim и с которых Вы хотите получать push-уведомления, Вам не требуется создавать FCM-ключ для каждого. Ключ привязан к одному проекту Firebase, а к проекту, в свою очередь, может быть добавлено несколько приложений, в том числе на базе iOS.

Наверх


Получение push-уведомлений на iOS

Для iOS используются сертификаты APNs двух типов: dev (нужен в процессе разработки) и dist (используется для стандартной работы приложения). Формат сертификата обязательно должен быть .p12.
В версии Webim 10.1 стало возможным добавлять сертификаты APNs через интерфейс Консоли управления (см. Сертификаты).Наверх

Параметры push-уведомлений

Для автоматической обработки и отображения push-уведомлений Ваше приложение должно быть осведомлено о возможных типах уведомлений и об аргументах, присылаемых в этих уведомлениях. Звёздочкой отмечены названия обязательных параметров.

Типы данных

Тип Описание
Double Вещественный тип числа
Long/Int Целочисленный тип
String Строковый тип
Enum Значение из списка возможных (строковый тип)
Array< *> Список значений (массив)

Наверх

Уведомление

Название параметра Тип Пример Описание
type* Enum "P.OM" Тип push-уведомления.
Возможные значения:
P.OM, P.OF, P.CR, P.OA, P.WM
event* Enum "add" Действие push-уведомления.
Возможные значения:
add, del.
message Message См. описание объекта Message. Сообщение push-уведомления.
Обязателен, если type – P.OM, P.OF, P.CR.
params Array ["Никита К","1232"] Параметры push-уведомления.
Обязателен, если type – P.OA, P.OM, P.OF:
  • для «P.OA» – массив из одного элемента: имя оператора;
  • для «P.OF» – массив из двух элементов: имя оператора, название файла;
  • для «P.OM» – массив из двух элементов: имя оператора, текст сообщения.

Возможные значения параметра loc-key (iOS) и type (Android)
  • "P.CR" означает, что оператор прислал запрос контактных данных;
  • "P.OA" означает, что оператор взял чат в обработку;
  • "P.OF" означает, что оператор прислал файл;
  • "P.OM" означает, что оператор прислал сообщение;
  • «P.WM» означает, что оператор прислал виджет (для поддержки данного функционала необходимо обратиться в службу поддержки).

Значения массива аргументов — параметр loc-args (iOS) и params (Android)
  • для "P.CR" – массив пустой;
  • для "P.OA" – массив из одного элемента: имя оператора;
  • для "P.OF" – массив из двух элементов: имя оператора, название файла;
  • для "P.OM" – массив из двух элементов: имя оператора, текст сообщения.

Данные параметры приходят без названий, порядок в массиве важен.

Возможные значения параметра "event" (Android)
  • "add" – push-уведомление необходимо показать;
  • "del" – push-уведомление необходимо удалить.

Если push-уведомление имеет тип "P.OF" или "P.OM", то параметр "message" содержит в себе сообщение, в ином случае этого параметра нет.

Наверх

Message

Название параметра Тип Пример Описание
name* String "Никита К" Имя автора сообщения.
avatar* String "/webim/images/avatar/wmtest2_181510.png" URL аватара автора сообщения.
kind* Enum "operator" Тип сообщения.
Возможные типы: operator, file_operator, cont_req.
clientSideId* String "03ef89e10352b87809e67f74504c4bb6" ID сообщения.
ts* Double 1.531582962567873E9 Время сообщения в микросекундах.
text* String "Текст сообщения" Текст сообщения или строковое представление формата JSON с файлом, сериализованное в строку.


Описание параметра text:

kind Тип Пример Описание
"operator" String "Здравствуйте, чем я могу Вам помочь?" Текстовое сообщение оператора.
"file_operator" String "{\"is_voice\": false, \"client_content_type\": \"image/jpeg\", \"image\": {\"size\": {\"width\": 1125, \"height\": 2001}}, \"visitor_id\": \"fbd431f77834ba107b120cfa07fec70d\", \"filename\": \"3_(3).jpg\", \"content_type\": \"image/jpeg\", \"guid\": \"4bfc1ae213b84cd586abc2c787b87a8e\", \"size\": 176001}" Сообщение с файлом от оператора, содержащее сериализированный JSON. Описание параметров JSON-строки:
  • is_voice: является ли сообщение голосовым
  • client_content_type: content type файла, указанный при отправке фронтэндом
  • image.size: характеристики размера файла (для изображений)
    • width: ширина изображения в пикселях
    • height: высота изображения в пикселях
  • visitor_id: идентификатор посетителя в guid-формате
  • filename: название файла
  • content-type: content type файла, распознанный при анализе файла
  • guid: идентификатор файла
  • size: вес файла
"cont_req" String "Введите, пожалуйста, Вашу контактную информацию." Сообщение с запросом контактной информации.

Наверх

Файл

Название параметра Тип Пример Описание
client_content_type* String "image/jpeg" Тип файла, указанный клиентом.
image ImageItem {"size": {"width": 300, "height": 300}} Информация о размерах превью изображения. Обязательный параметр, если файл является изображением.
visitor_id* String "1b0c5d865529418a91f728c525b6d9fd" ID посетителя.
filename* String "p.jpg" Название файла.
content_type* String "image/jpeg" Реальный тип файла.
guid* String "ac741895c19a47078bc54f722951957f" ID файла.
size* Long 53323 Размер файла в байтах.

Наверх

ImageItem

Название параметра Тип Пример Описание
size* ImageSizeItem {"width": 300, "height": 300} Размеры превью изображения.

Наверх

ImageSizeItem

Название параметра Тип Пример Описание
width* Int 300 Ширина превью изображения.
height* Int 300 Высота превью изображения.

В уведомлениях в iOS используются в основном те же параметры. Среди специфических для этой платформы упомянем:

Название параметра Тип Пример Описание
loc-key* String "P.OM" Тип уведомления.
loc-args Array Массив с параметрами (см. выше). Параметры push-уведомления.
Обязателен, если type – P.OA, P.OM, P.OF:
  • для «P.OA» – массив из одного элемента: имя оператора;
  • для «P.OF» – массив из двух элементов: имя оператора, название файла;
  • для «P.OM» – массив из двух элементов: имя оператора, текст сообщения.
sound String "default" Звук уведомления.
webim* Int 1 Параметр для идентификации приложения. Всегда равен 1.

Наверх


Примеры для FCM Android


Оператор взял чат в обработку:

{params=["Никита К"], type=P.OA, event=add}


Пришло сообщение:

{
            params=[
                "Никита К",
                "1232"
            ],
            type=P.OM,
            event=add,
            message={
                "kind": "operator",
                "clientSideId": "03ef89e10352b87809e67f74504c4bb6",
                "name": "Никита К",
                "avatar": "/webim/images/avatar/wmtest2_181510.png",
                "text": "1232",
                "ts": 1.531582962567873E9
            }
            }


Пришёл файл:

{
            params=   [
                "Никита К",
                "p.jpg"
            ],
            type=P.OF,
            event=add,
            message=   {
                "kind": "file_operator",
                "clientSideId": "a49529502be8482ba9134756c4a4a211",
                "name": "Никита К",
                "avatar": "/webim/images/avatar/wmtest2_181510.png",
                "text": {
                    "client_content_type": "image/jpeg",
                    "image": {
                        "size": {
                        "width": 300,
                        "height": 300
                        }
                    },
                    "visitor_id": "1b0c5d865529418a91f728c525b6d9fd",
                    "filename": "p.jpg",
                    "content_type": "image/jpeg",
                    "guid": "ac741895c19a47078bc54f722951957f",
                    "size": 53323
                },
                "ts": 1.531584932619524E9
            }
            }


Оператор запросил контактные данные:

{
            params=[

            ],
            type=P.CR,
            event=add,
            message={
                "kind": "cont_req",
                "clientSideId": "525a9cd6c49a46de90ca4c9016681b56",
                "name": "Никита К",
                "avatar": "/webim/images/avatar/wmtest2_181510.png",
                "text": "Please enter your contact information.",
                "ts": 1.531584937099446E9
            }
            }

Наверх


Пример для APNs iOS

Пример push-уведомления для iOS:
{
        "aps": {
            "alert": {
                "loc-key": "P.OM",
                "loc-args": ["Имя Оператора", "Сообщение"]
            },
            "sound": "default",
        },
        "webim": 1
      }

NB: в зависимости от типа сообщения, в коде push-уведомления для iOS изменяются только значения "loc-key" и "loc-args".

Наверх