Вызываем каждый раз при входе в приложение.
POST {YourHost}/method/messages/DeviceTokenRegister
Параметр в JSON-формате
{
"db" : "{Здесь_передаем_имя_вашей_базы_данных}",
"params" :
[
{
"YourReferenceOperationID" :1,
"jparams":
{
"service":"название приложения/сервиса, например ru.tezarius.app",
"appVersion":"Версия приложения",
"deviceID":"ID девайса",
"token":"Токен девайса для пуш",
"platform":"Платформа {Android,iOs и т.д}",
"platformV":"Версия платформы",
"manufacturer":"Производитель, например samsung",
"model":"Модель устройства"
}
}
]
}
Ответ сервера
[
{
"YourReferenceOperationID": 1,
"result": [
{
"isGood": "1"
}
]
}
]
POST {YourHost}/method/messages/GetNotReadCount
Параметр в JSON-формате
{
"db" : "{Здесь_передаем_имя_вашей_базы_данных}",
"params" :
[
{
"YourReferenceOperationID" :1,
"jparams":
{
"SocketID":"0 - передаем 0, если нет подключения к серверу вебсокетов, иначе передаем ID соединения с серверов вебсокетов"
}
}
]
}
Ответ сервера
[
{
"YourReferenceOperationID": false,
"result": [
{
"type": "User",
"kol": "0" // Количество новых сообщений от пользователей программы
},
{
"type": "Group",
"kol": "0" // Количество новых сообщений от группового чата
},
{
"type": "CustomerSess",
"kol": "0" // Количество новых сообщений от не авторизированных клиентов с сайта
},
{
"type": "CustomerId",// Количество новых сообщений от авторизированных клиентов с сайта
"kol": "0"
},
{
"type": "Notice", // Количество новых уведомлений
"kol": "22"
},
{
"type": "request", // Количество новых запросов
"kol": "90"
}
]
}
]
Для получения общего количества сообщений, необходимо просуммировать значения поля kol
POST {YourHost}/method/messages/MyChats
Параметр в JSON-формате
{
"db" : "{Здесь_передаем_имя_вашей_базы_данных}",
"params" :
[
{
"YourReferenceOperationID" :1,
"jparams":
{
"OnlyTypes":"CustomerId,CustomerSess,Group,User"
}
}
]
}
Ответ сервера
[
{
"YourReferenceOperationID": 1,
"result":
[
{
"type": "тип чата, нужен будет для запроса диалога, варианты {CustomerId,CustomerSess,Group,User}",
"iconInx": "индекс иконки для декстопной версии программы",
"dd": "дата/время последнего сообщения, уже форматированное, показать как есть, в правом нижнему углу записи",
"mess": "Последнее сообщение",
"name": "Наименование отправителя",
"noticeImg": "1",
"read_not": "Количество не прочитанных, если больше нуля, показать в красным цветом",
"uid": "ID диалога, для чтения и отправки сообщения",
"online": "если 1, то отправитель в сети",
"id_mess_last": "ID последнего сообщения",
"data_upd": "фактическое дата и время добавления сообщения"
},
........
]
}
]
- Для списка чата с типом "CustomerId" и "CustomerSess" показывать иконку воплощающую веб-клиентов
- Для типа "Group" иконку группы сотрудников
- Для типа "User" иконку пользователя
POST {YourHost}/method/messages/MyChats
Параметр в JSON-формате
{
"db" : "{Здесь_передаем_имя_вашей_базы_данных}",
"params" :
[
{
"YourReferenceOperationID" :1,
"jparams":
{
"OnlyTypes":"Notice"
}
}
]
}
Ответ сервера
[
{
"YourReferenceOperationID": 1,
"result":
[
{
"type": "Notice",
"iconInx": null,
"dd": "дата/время последнего уведомления, уже форматированное, показать как есть, в правом нижнему углу записи",
"mess": "Текст последнего уведомления",
"name": "Наименование уведомления",
"noticeImg": "1",
"read_not": "Количество необработанных уведомлений, если больше нуля, показать в красным цветом",
"uid": "ID уведомления",
"online": -1,
"id_mess_last": "ID сообщения последнего уведомления",
"data_upd": "фактическое дата и время создания"
},
........
]
}
]
POST {YourHost}/method/messages/read
Параметр в JSON-формате
{
"db" : "{Здесь_передаем_имя_вашей_базы_данных}",
"params" :
[
{
"YourReferenceOperationID" :1,
"jparams":
{
"chatKind":"Тип - поле type из API списка сообщений/уведомлений",
"recipientUID":"ID сообщения, поле uid из API списка сообщений/уведомлений",
"Limit":"25 - количество сообщений",
"LimitPos": "1 - номер страницы результируещего набора"
}
}
]
}
Ответ сервера
[
{
"YourReferenceOperationID": 1,
"result":
[
{
"id": "id сообщения",
"data": "дата и время добавления",
"sender": "тип отправителя {CustomerId,CustomerSess,Group,User}",
"recipient": "тип получателя {CustomerId,CustomerSess,Group,User}",
"senderId": "ID отправителя",
"recipientId": "ID получателя",
"mess": "Текст сообщения",
"foto_path": "url на изображение, если нет то будет пусто",
"read_flag": "Если равно 1 и поле isGreen=1, то наше сообщение прочитано, 0 - сообщение не прочитано",
"read_data": "Дата прочтения нашего сообщения",
"background_add": "1",
"ip": "",
"isGreen": "0 - если нам отправили сообщение, 1 - если я отправил сообдение",
"SenderName": "",
"dd": "Форматированное дата и время сообщения для показа",
"dt": "Форматированное время"
},
.......
]
}
]
Вызывает АПИ при открытии диалога, а также если поступило сообщение по пуш и у нас открыт диалог с данным отправителем сообщения
POST {YourHost}/method/messages/SetRead
Параметр в JSON-формате
{
"db" : "{Здесь_передаем_имя_вашей_базы_данных}",
"params" :
[
{
"YourReferenceOperationID" :1,
"jparams":
{
"type":"Тип - поле type из API списка сообщений",
"uid":"ID сообщения, поле uid из API списка сообщений/уведомлений"
}
}
]
}
Если сообщение успешно переведено в статус прочитано, то ответ приходит пустой
Если пользователь выбрал фото/файл для добавления в диалог, то сперва загружаем файл в хранилище через АПИ, которое вернет веб-ссылку
POST {YourHost}/method/messages/add
Параметр в JSON-формате
{
"db" : "{Здесь_передаем_имя_вашей_базы_данных}",
"params" :
[
{
"YourReferenceOperationID" :1,
"jparams":
{
"sender":"User",
"recipient":"Тип - поле type из API списка сообщений",
"recipientUID":"ID сообщения, поле uid из API списка сообщений/уведомлений",
"msg":"Текст сообщения",
"photoPath":"здесь можно передать url - картинки, иначе передаем пустую значение",
"background_add":0
}
}
]
}
Ответ сервера, при успешном выполнении запроса, вернется такой же, как в ответе апи
просмотра сообщения и уведомления
POST {YourHost}/method/messages/add
Параметр в JSON-формате
{
"db" : "{Здесь_передаем_имя_вашей_базы_данных}",
"params" :
[
{
"YourReferenceOperationID" :1,
"jparams":
{
"sender":"User",
"recipient":"Notice",
"recipientUID":"ID уведомдения, поле uid из API списка уведомлений",
"msg":":msg",
"background_add":0
}
}
]
}
Ответ сервера
[
{
"YourReferenceOperationID": 1,
"result": [
{
"idIns": "ID нового сообщения в диалоге"
}
]
}
]
POST {YourHost}/method/any/RequestReport
1. Активные запросы. Параметр в JSON-формате
{
"db" : "{Здесь_передаем_имя_вашей_базы_данных}",
"params" :
[
{
"YourReferenceOperationID" :1,
"jparams":
{
"isActiveRequests":1,
"OfficeID":"0 - передаем если без фильтра по офису, иначе ID текущего офиса ",
"isOnlyMy":"0 - все запросы, 1 - только мои запросы или где не указан менеджер",
"isExecute":1
}
}
]
}
2. Показать запросы за период. Параметр в JSON-формате
{
"db" : "YourDataBase",
"params" :
[
{
"YourReferenceOperationID" :1,
"jparams":
{
"FilterData":1,
"d1":"дата начала периода в формате yyyy.mm.yy",
"d2":"дата окончания периода в формате yyyy.mm.yy",
"OfficeID":"0 - передаем если без фильтра по офису, иначе ID текущего офиса ",
"isOnlyMy":"0 - все запросы, 1 - только мои запросы или где не указан менеджер",
"isExecute":1
}
}
]
}
3. Поиск по последним 4 цифрам номера телефона клиента. Параметр в JSON-формате
{
"db" : "YourDataBase",
"params" :
[
{
"YourReferenceOperationID" :1,
"jparams":
{
"phone":"5575",
"OfficeID":"0 - передаем если без фильтра по офису, иначе ID текущего офиса ",
"isOnlyMy":"0 - все запросы, 1 - только мои запросы или где не указан менеджер",
"isExecute":1
}
}
]
}
Ответ сервера
[
{
"YourReferenceOperationID": 1,
"result":
[
{
"id": "ID запроса",
"date_ins": "дата и время добавления",
"date_fixed": "если null то не обработан, иначе дата и время обработки",
"date_inf": "если null то не клиент не информирован, иначе дата и время информирования",
"id_rbUsers_inf": "id клиента кто проинформировал клиента",
"id_rbCounterparts": "ID глобальный клиента",
"subject": "Тема запроса",
"body": "Тело сообщения запроса",
"id_rbStock": "ID офиса на который добавлен запрос",
"id_rbUsers_manager": "ID пользователя-менеджера",
"note": "Комментарий к запросу",
"id_rbCustomersSource": "id источника откуда клиента пришел",
"id_rbCustomersReasonsRefusal": "id причины отказа клиентом от обслуживания",
"isExistDocs": "0 - нет продаж по запросу, 1 - есть продажи на основании запроса",
"users_notice": "список id пользователей через запятую, кто проинформирован о поступлении запроса",
"total": "Сумма продаж по запросу",
"marja": "Маржа по запросу",
"docsId": "Список ID документов продаж на основании запроса",
"ManagerName": "Менеджер",
"FixedName": "Пользователь кто перевел в статус обработано",
"InformName": "Пользователь кто перевел в статус информирован",
"dd": "дата запроса в формате dd.mm.yy",
"isFixed": "0 - запрос не обработан, 1 - запрос обработан",
"isInform": "0 - клиент не проинформирован, 1 - сообщили клиенту",
"TimePassed": "",
"OfficeName": "Наименование офиса",
"CustomerName": "Наименование клиента",
"phone_formated": "Телефон клиента для отображения",
"id_rbCountry_phone": "ID страны телефона клиента",
"phone": "Телефон клиента без коды страны",
"MonthName": "Месяц даты добавления",
"SourceName": "Описание источника клиента",
"RefusalName": "Описание причины отказа клиента",
"docs": "Номер доментов продаж через запятую",
"isScheduler": "0",
"data_start": null,
"data_end": null,
"StockBoxName": null,
"LabelColor": null,
"id_rbStockBoxes": null,
"isSmsInf": null
},
.......
]
}
]
POST {YourHost}/method/any/RequestAdd
Если для запроса нужно сменить клиента, то для поиска клиента по ФИО, номеру телефона использовать АПИ Поиск клиентов
Для показа списка менеджеров использовать API Список пользователей
Для показа списка офисов использовать API Список офисов
Параметр в JSON-формате
{
"db" : "YourDataBase",
"params" :
[
{
"YourReferenceOperationID" :1,
"jparams":
{
"id_rbCounterparts":"Если новый клиент, то передаем 0, иначе ID глобал.клиента",
"CustomerName":"Наименование клиента, если новый клиент",
"CustomerPhone":"Номер телефона, если новый клиент",
"subject":"Тема обращения",
"body":"Описание",
"id_rbStock":"ID офиса, куда нужно разместить запрос",
"id_rbUsers_manager":"ID менеджера, можно передать 0, чтобы запрос забрал первый менеджер, кто успел",
"note":"можено передать комментарий, иначе пусто",
"isScheduler":0
}
}
]
}
Ответ сервера
[
{
"YourReferenceOperationID": 1,
"result": [
{
"NewRec": "ID нового добавленного запроса"
}
]
}
]
POST {YourHost}/method/any/RequestUpdate
Параметр в JSON-формате
{
"db" : "YourDataBase",
"params" :
[
{
"YourReferenceOperationID" :1,
"jparams":
{
"id":"ID запроса",
"id_rbCounterparts":"ID глобал.клиента, если нужно указать нового клиента, то передать 0",
"CustomerName":"Наименование клиента, если новый клиент",
"CustomerPhone":"Номер телефона, если новый клиент",
"subject":"Тема обращения",
"body":"Описание",
"id_rbStock":"ID офиса, куда нужно разместить запрос",
"id_rbUsers_manager":"ID менеджера, можно передать 0, чтобы запрос забрал первый менеджер, кто успел",
"note":"можено передать комментарий, иначе пусто",
"isScheduler":0,
"isFixed":"1 - если обработали, 0 - если не обработан запрос",
"isInform":"1 - если информировали клиента, 0 - если не информирован",
}
}
]
}
Ответ сервера
[
{
"YourReferenceOperationID": 1,
"result": [
{
"UpdRec": "возвращает ID текущего запроса"
}
]
}
]
Для подключения к серверу вебсокетов (WebSocket Server), нужны два параметра:
1. Хост - данное значение возвращается, при самом первом запросе получения параметров проекта, а именно значение из поля webSocketHost
2. Порт 8009
При успешном подключении к серверу вебсокетов, будет возвращет ответ, содержащий слово "socket" (включая кавычки). В этом случае нужно вызывать АПИ, чтобы закрепить за текущим пользователем ID сокета:
POST {YourHost}/method/any/socketIdFix
Параметр в JSON-формате
{
"db" : "{Здесь_передаем_имя_вашей_базы_данных}",
"params" :
[
{
"YourReferenceOperationID" :1,
"jparams":
{
"socketInfo":"здесь передаем полученный ответ от сервера вебсокетов после успешного подключения"
}
}
]
}
ОТВЕТ СЕРВЕРА:
[
{
"YourReferenceOperationID": 1,
"result": [
{
"SocketID": "ID текущего вашего сокет-соединения"
}
]
}
]
Запоминаем значение SocketID, также если был обрыв связи и последующее обновление связи, то обновляем переменную SocketID
Достаточно выполнения каждые 30 секунд апи получения кол-ва сообщений, описанный выше где, в параметре SocketID передаем id соединения с сервером вебсокетов
Если входящее сообщение содержит все слова вместе type, uid и senderId, тогда обновляем количество сообщений и текущий активный диалог, если он открыт.
В этом случае выполняем заново подключение и выполняем ШАГ 2.
POST {YourHost}/method/calls/add
1. Для входящего и исходящего звонка, параметр в JSON-формате
{
"db" : "{Здесь_передаем_имя_вашей_базы_данных}",
"params" :
[
{
"YourReferenceOperationID" :1,
"jparams":
{
"phone":"номер телефона", /* например +79881234567 */
"type":"тип звонка, варианты: Out, In", /* Out -исходящий, In -входящий*/
}
}
]
}
ОТВЕТ СЕРВЕРА:
[
{
"YourReferenceOperationID": 1,
"result": [
{
"idcall" : "ID добавленного звонка",
"sockets": "список id-сокетов куда ушла команда о звонке"
}
]
}
]
2. Для пропущенного звонка или когда не удалось дозвониться до номера, параметр в JSON-формате
{
"db" : "{Здесь_передаем_имя_вашей_базы_данных}",
"params" :
[
{
"YourReferenceOperationID" :1,
"jparams":
{
"id":"ID добавленного звонка", /* Из предыдущего запроса */
"type":"тип статуса: CallsMissed, CallsNotAvble", /* CallsMissed - пропущенный, CallsNotAvble - номер не доступен */
}
}
]
}