События, в ответ на которые должны приходить пуш-сообщения
Первоочередные:
- Найдена машина
- Заказ отменён
- Машина на месте
В дальнейшем:
- Те же события по перекидке
- Начат/окончен простой
- Не могу найти место
- Начат поиск машины на предварительный заказ (? потребуется обсуждение, если всё же делать это - слишком сложный кейс)
- Другие (не в текущем скоупе)
Информация в пуше
В рамках этой доработки требуется иметь два поля:
- event - наименование события в String (по типу "is_here", "idling_started", "cant_find" и т.д.)
- id - идентификатор заказа
Как первый этап нас устроит добавление поля event в существующие пуши https://docs.tn.in.ua/pages/viewpage.action?spaceKey=DEV&title=WebOrders+WebAPI+REST+Documentation#WebOrdersWebAPIRESTDocumentation-%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%D1%83%D0%B2%D0%B5%D0%B4%D0%BE%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9%D0%BE%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B8%D0%B8%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81%D0%B0%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0
Если в дальнейшем будем развивать вариант с отправлением всех данных по заказу в пуше - имеет смысл передавать там такой же набор полей, как и в запросе данных по заказу, плюс поле event.
Отправка push
Адрес выбирается из настроек ТН "Настройки WebOrders" >> "Приложения для клиентов" по полю "Название" которое сервер получает из заголовка запроса X-WO-API-APP-ID.
Общий формат запроса
Request (запрос):
Параметры запроса | Обязательный параметр | Описание |
<to> | Да | Иденификатор получателя уведомления. (Это токен, сервер получает его из тела запроса) |
<data> | Да | Информация о статусе заказа или о бонусе. Структура зависит от типа сообщения. Содержимое данного параметра при типе=0 полностью соответствует содержимому ответа при запросе статуса заказа. См. «Запрос состояния заказа». |
| <content_available> | Да | Значение true. Необходим для корректной работы пушей на ios устройствах. |
| <priority> | Да | Значение "high". Необходим для корректной работы пушей на ios устройствах. |
Типизация сообщений для корректной обработки на клиенте
Типы определяются полем push_type в <data>:
- 0 - пуш связанный с заказом.
Значения
- car_type_upgrade - информация о повышении класса машины
- car_type_upgraded - признак повышения класса машины
- car_type - системное название класса машины
- ...
- car_type_upgrade - информация о повышении класса машины
- 1 - пуш связанный с бонусом за выполненный заказ.
- 2 - пуш связанный с бонусом авторизации.
- 3 - пуш связанный с уведомлением клиента о возможности изменения добавочной стоимости.
- 5 - push при снятии/замене машины для заказа с подтвержденным водителем выполнением
Пример формата с типом 0
Content-Type:application/json
Authorization:AIzaSyZ-1u...0GBYzPu7Udno5aA
{
"data":
{
"dispatching_order_uid":"44ebd09e5f224651bf3c8e2dd12ed890"
,"order_cost":"72"
,"currency":" грн."
,"order_car_info":"АА1172АА, синий, Ford C-Max"
,"driver_phone":"050-123-45-67"
,"required_time":"2013-08-14T17:01:57.303"
,"close_reason":-1
,"cancel_reason_comment":null
,"order_is_archive":false
,"execution_status":"SearchesForCar"
,"push_type":0
,"rating":0,
,"rating_comment":"",
"car_type_upgrade":{
"car_type_upgraded":true,
"car_type":"WAGON"
}
,"drivercar_position":{
"lat":50.512383
,"lng":30.536734
,"time_positioned_utc":"2015-06-02T11:12:23.301"
,"altitude":null
,"accuracy":null
,"bearing":0
,"speed":60
,"status":"gpsOk"
}
,"route_address_from":{
"name":"ОЗЕРНАЯ УЛ. (ОБОЛОНЬ)"
,"number":"1"}
,"route_address_to":{
"name":"ЯНГЕЛЯ АКАДЕМИКА УЛ."
,"number":"1"}
},
"to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"content_available":true,
"priority" : "high"
}
Пример формата с типом 1 или 2 (тут необходимо так же указать значение изменения бонуса):
Content-Type:application/json
Authorization:AIzaSyZ-1u...0GBYzPu7Udno5aA
{
"to":"App_Token",
"data":{
"bonus":7.0,
"push_type":2
},
"content_available":true,
"priority":"high"
}
Пример формата с типом 3:
Content-Type:application/json
Authorization:AIzaSyZ-1u...0GBYzPu7Udno5aA
{
"to":"App_Token",
"data":{
"push_type":3
},
"content_available":true,
"priority":"high"
}
Пример формата с типом 5:
Content-Type:application/json
Authorization:AIzaSyZ-1u...0GBYzPu7Udno5aA
{
"to":"App_Token",
"data":{
"push_type":5
},
"content_available":true,
"priority":"high"
}