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

Для включения push-уведомлений необходимо предоставить сертификаты/приватные ключи Ваших мобильных приложений. Для этого свяжитесь, пожалуйста, с нашей службой поддержки (через чат или по адресу support@webim.ru). Для Android нужно предоставить полный FCM-ключ (около 150 символов), для iOS — сертификат (либо сертификаты: один используется для стандартной работы приложения, другой — для тестирования разработчиками).

Для Android используется система push-уведомлений FCM, для iOS — APNs.

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

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

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

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

Параметры 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 "1232" Текст сообщения или строковое представление формата JSON с файлом.

Файл

Название параметра Тип Пример Описание
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.

В примерах ниже приведены реальные push-уведомления.

Примеры для 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

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

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