Настройка веб-хуков

Веб-хуки, настройка веб-хуков

1. Создать страничку или API, на которую будет присылаться хук. Она должна успешно отвечать на запрос: 

curl -X POST https://exemple.com -d "name=sessionUpdate&data[id]=5&data[user_id]=1&data[session_key]=11111111111111111111111111111111&data[create_date]=2019-09-12%2013:29:51&data[update_date]=now()&data[php_session]=22222222222222222222222222&data[IP]=172.18.0.1&data[is_support]=0]&params[dop_param1]=param1&params[dop_param2]=param2&params[dop_param3]=param3"

где exemple.com — это полный путь к файлу обработчика

2. В настройках Ветменеджера перейдите в раздел Справочники -> Сервисы для хук-уведомлений -> Добавить. Заполните поля и нажмите кнопку «Сохранить»

  • Название — наименование хук-уведомления.
  • Урл —  ссылка к файлу обработчику.
  • Параметр 3 — необходимо указать список интересующих событий через запятую. Оставлять поле пустым нельзя. Ниже есть список событий.
  • Параметр 1 и Параметр 2 (не обязательные) — для необходимости передать доп. информацию.

 3. Пример получения данных на событие goodEdit (редактирование товара). Ваш сайт получит данные в виде массива: 

[
     ["name"]=> "goodEdit"
     ["data"]=> [
          ["id"]=> "5380"
          ["group_id"]=>"65"
          ["title"]=>"sfsdf"
          ["unit_storage_id"]=>"5"
          ["is_warehouse_account"]=>"1"
          ["is_active"]=>"1"
          ["code"]=>""
          ["is_call"]=>"0"
          ["is_for_sale"]=>"1"
          ["barcode"]=>""
          ["description"]=>""
          ["prime_cost"]=>"0.0000000000"
     ]
     ["params"]=> [
               ["dop_param1"]=>"1" <- здесь будет значение, которое было введено в настройках хука в поле "Параметр 1"
               ["dop_param2"]=>"2"
               ["dop_param3"]=>"3"
          ]
]


  • name — название события; 
  • data — данные о событии; 
  • params — те параметры, которые вводятся при создании хук-уведомления.

Не отправленные хуки можно посмотреть, используя api: Доступ к хукам, которые не удалось отправить.

Если вебхук был активен, но сообщения по нему перестали приходить, проверьте количество записей в FailedHook.
Когда количество неотправленных хуков (FailedHook) превышает 1000, вебхук автоматически деактивируется, даже если ранее был настроен корректно.

Это основной лимит, из-за которого может прекратиться отправка вебхуков.
После очистки списка FailedHook нужно повторно активировать вебхук — после этого отправка возобновится.

Чтобы восстановить работу, необходимо почистить список упавших хуков, как описано в инструкции.

Ветменеджер поддерживает следующие события:

Приемы

Название события
Описание
admissionAddсрабатывает при добавлении записи на приём
admissionEditсрабатывает при редактировании записи на приём
admissionChangedсрабатывает при изменении ключевых полей записи на приём
admissionPlannedсрабатывает при создании запланированной записи на приём
admissionSetDeletedсрабатывает при пометке записи на приём как удалённой
admissionRestoredсрабатывает при восстановлении записи на приём
admissionDirectedсрабатывает при переводе клиента к врачу
admissionInTreatmentсрабатывает при переводе приёма в статус «у врача» / in_treatment
admissionAcceptedсрабатывает при переводе приёма в статус accepted. Это не событие создания или обычного редактирования записи.
admissionDelayedсрабатывает, если клиент просрочил приём
admissionConfirmсрабатывает при подтверждении записи на приём
admissionConfirmedсрабатывает, если запись подтверждена
admissionInvoicesSumChangedсрабатывает при изменении суммы счетов по приёму

Данные:

  • id — ID записи на приём
  • admission_date — дата и время записи
  • description — описание причины
  • client_id — ID клиента
  • patient_id — ID питомца
  • type_id — номер типа приёма (цель обращения)
  • user_id — ID доктора
  • admission_length — длительность приёма
  • status — save - сохранен, delayed - просрочен, directed - направлен, in_treatment - у врача, accepted - принят, not_confirmed - не подтвержден, not_approved
  • clinic_id — ID клиники
  • create_date — дата создания записи
  • direct_direction — 1 — направлен к врачу или 0
  • creator_id — ID сотрудника, который создал запись
  • escort_id — 0
  • reception_write_channel — канал создания записи (vetmanager — из программы, website — через WEB-сайт)
  • is_auto_create — признак автоматического создания записи
  • invoices_sum — сумма счетов по приёму
  • confirmation — данные/статус подтверждения записи

Данные:

  • invoices_sum — сумма счетов по приёму

Товары и услуги

Название события
Описание
goodAddСрабатывает при добавлении товара или услуги
goodEditСрабатывает при редактировании товара или услуги
goodDeactivateСрабатывает при деактивации (удалении) товара или услуги
goodActivateСрабатывает при активации товара или услуги
goodGroupAddСрабатывает при добавлении группы товаров
goodGroupEditСрабатывает при редактировании группы товаров
goodGroupDeleteСрабатывает при удалении группы товаров

Данные событий:

Для goodAdd, goodEdit, goodDeactivate и goodActivate:

id — ID товара или услуги;
group_id — ID группы товаров;
title — название товара;
unit_storage_id — номер склада или пустая строка;
is_warehouse_account — 0 — не числится на складе, 1 — числится на складе;
is_active — 0 — неактивный, 1 — активный;
code — артикул или пустая строка;
is_call — 1 — товар или услуга относится к вызову, 0 — нет;
is_for_sale — 1 — для продажи, 0 — нет;
barcode — номер штрихкода или пустая строка.

Для goodGroupAdd, goodGroupEdit и goodGroupDelete:

id — ID группы товаров;
title — название группы товаров;
markup — наценка, %;
is_service — 0 — товар, 1 — услуга;
is_show_in_vaccines — 0 — не показывать в вакцинациях, 1 — показывать в вакцинациях.

Сотрудники

Название события
Описание
userAddсрабатывает при добавлении сотрудника
userEditсрабатывает при редактировании сотрудника

Данные:

  • id — ID сотрудника
  • last_name — Фамилия
  • first_name — Имя
  • middle_name — Отчество
  • login — Логин
  • passwd — зашифрованный пароль
  • position_id — ID должности
  • email — email
  • phone — домашний телефон
  • cell_phone — мобильный телефон
  • address — адрес
  • role_id — ID роли доступа в программу
  • is_active — 0 — неактивный, 1 — активный
  • calc_percent — 1 — участвует ли врач в продаже товаров или 0
  • nickname — никнейм
  • last_visit — дата последнего посещения
  • youtrack_login — не используется
  • youtrack_password — не используется
  • last_change_pwd_date — дата редактирования записи
  • is_limited — 0 — нет ограничения доступа в программу, 1 — есть ограничения
  • sip_number — SIP номер
  • user_inn — ИНН пользователя

Рабочий график

Название события
Описание
timesheetAddсрабатывает при добавлении смены в график
timesheetEditсрабатывает при редактировании смены в графике
timesheetDeleteсрабатывает при удалении смены в графике
timesheetMassChangesсрабатывает при массовом добавлении, редактировании или копировании смены

Данные:

  • id — ID графика работы
  • doctor_id — номер сотрудника
  • shedule_id — номер шаблона интервала или 0
  • begin_datetime — дата и время начала смены
  • end_datetime — дата и время окончания смены
  • type — номер типа рабочего времени
  • shift — не используется
  • title — название
  • all_day — 0 — по выбранному времени, 1 — весь день
  • night — 0 — дневной, 1 — ночной
  • action_id — не используется
  • clinic_id — ID клиники
  • action — editSmena — добавление или редактирование, deleteSmena — удаление
  • users_ids — Array, где [0] — ID выбранного сотрудника, [1] — ID выбранного сотрудника

Кассы

Название события

Описание
cassaAddсрабатывает при добавлении кассы
cassaEditсрабатывает при редактировании кассы
cassacloseAddсрабатывает при добавлении документа закрытия кассы
cassacloseExecсрабатывает при выполнении документа о закрытии кассы

Данные:

  • id — ID кассы
  • title — название кассы
  • assigned_user_id — ответственный по кассе
  • summa_cash — сумма наличными
  • summa_schass — сумма электронными
  • client_cass — 1 — установлен прием оплаты со счетов или 0
  • main_cass — 1 — установлена главная касса или 0
  • is_blocked — 0 — не заблокирована, 1 — заблокирована
  • has_unfinished_docs — 1 — есть незаконченные документы или 0
  • status — active — активная, deactivated — не активная
  • clinic_id — ID клиники
  • is_system — 1 — системная касса или 0

Данные (для cassacloseAdd и cassacloseExec):

  • id — ID документа
  • id_cassa — ID кассы
  • status — save — документ сохранен, exec — документ выполнен
  • closed_user_id — ID сотрудника, который закрыл кассу
  • amount — сумма на момент закрытия
  • amount_cashless — сумма электронными на момент закрытия

Счета

Название события
Описание
invoiceAddсрабатывает при добавлении и сохранении счета (без оплаты)
invoiceEditсрабатывает при редактировании счета
invoiceRunсрабатывает при выполнении счета
invoiceRollbackсрабатывает при откате счета
invoiceDeleteсрабатывает при отмене счета

Данные:

id — ID счета;
doctor_id — ID доктора;
client_id — ID клиента;
pet_id — ID питомца;
description — примечание;
percent — суммарное значение скидки и надбавки;
amount — сумма счета;
status — save — сохранен;
invoice_date — дата сохранения/проведения счета;
create_date — дата создания строки счета;
night — 1 — ночной счет, 0 — нет;
increase — надбавка в %;
discount — скидка в %;
call — отметка, если счет создан на вызове;
paid_amount — оплаченная сумма по счету или 0;
payment_status — none — не оплачен, partial — частично оплачен, full — полностью оплачен;
clinic_id — ID клиники;
creator_id — ID сотрудника, создавшего счет.


Клиенты

Название события
Описание
clientAddсрабатывает при добавлении клиента
clientEditсрабатывает при редактировании клиента
clientDeactivateсрабатывает при удалении клиента
clientActivateсрабатывает при активации клиента
clientBalanceEditсрабатывает при изменении баланса клиента

Данные:

id — ID клиента;
address — адрес;
home_phone — домашний телефон; work_phone — рабочий телефон; cell_phone — мобильный телефон;
note — описание; type_id — ID типа клиента; how_find_id — ID источника, откуда узнали о клинике;
balance — сумма баланса; email — email;
city — нет данных; city_id — ID города;
date_register — дата регистрации; zip — почтовый индекс;
vip — не используется;
last_name — фамилия;
first_name — имя;
middle_name — отчество;
status — ACTIVE — активный, DISABLED — неактивный, DELETED — неактивный, TEMPORARY — временный;
discount — скидка в %;
passport_series — паспортные данные;
lab_number — лабораторный номер;
street_id — ID улицы;
apartment — номер дома и квартиры;
number_of_journal — номер по журналу;
unsubscribe — 1 — отказ от рассылок, 0 — нет;
in_blacklist — 1 — клиент в черном списке, 0 — нет;
phone_prefix — код страны;
last_visit_date — дата последнего посещения.

Питомцы

Название события
Описание
petAddсрабатывает при добавлении питомца
petEditсрабатывает при редактировании питомца
petDeleteсрабатывает при удалении питомца
petDiedсрабатывает, если указать, что питомец умер

Данные:

id — ID питомца;
owner_id — ID владельца (клиента);
type_id — ID вида питомца;
alias — кличка;
sex — female — Ж;
birthday — дата рождения;
note — примечание;
breed_id — ID породы;
color_id — ID окраса;
chip_number — номер чипа;
lab_number — лабораторный номер;
status — alive — активный, dead — умер, deleted — неактивный;
weight — вес;
deathnote — причина смерти;
deathdate — дата смерти.

Складские документы

Название события
Описание
storeDocumentAddсрабатывает при добавлении документа по складу
storeDocumentDeleteсрабатывает при удалении документа по складу
storeDocumentEditсрабатывает при редактировании документа по складу
storeDocumentExecсрабатывает при выполнении документа по складу
storeDocumentRollbackсрабатывает при откате документа по складу

Данные:

id — ID документа по складу;
document_type — prihod — приходная накладная, rashod — расходная накладная, inventar — инвентаризация, transfer_receiver — передача товара между складами (получение), transfer_sender — передача товара между складами (списание), invoice — создание счета из заказа клиента;
status — save — сохранен, exec — выполнен, deleted — удален;
store_id — ID склада;
receiver_store_id — ID склада получателя при передаче товара между складами или 0;
supplier_id — ID поставщика; receiver_id — ID контрагента;
add_dt — дата создания документа; edit_dt — дата редактирования документа;
exec_dt — дата выполнения документа;
prihod_number — номер приходной накладной; prihod_date — дата приходной накладной;
creator_id — ID пользователя, создавшего документ;
executor_id — ID пользователя, выполнившего документ;
sender_user_id — ID пользователя текущего склада или отправителя;
receiver_user_id — ID пользователя, выполнившего передачу товара;
transfer_sender_store_doc_id — ID документа, в котором списался товар при передаче товара между складами, или 0.

Медицинские карты

Название события
Описание
medicalCardsAddсрабатывает при добавлении медкарты
medicalCardsEditсрабатывает при редактировании медкарты

Общие данные: 

  • id — ID медкарты; 
  • patient_id — ID питомца; 
  • date_create — дата создания; 
  • date_edit — дата редактирования; 
  • diagnos — JSON с ID и типом диагноза; 
  • recomendation — рекомендации и назначения; 
  • admission_type — ID основания приёма; 
  • weight — вес; 
  • temperature — температура; 
  • meet_result_id — результат посещения; 
  • description — описание лечения; 
  • next_meet_id — ID следующего визита; 
  • doctor_id — ID доктора; 
  • creator_id — ID создавшего сотрудника; 
  • status — active; 
  • calling_id — номер запланированного звонка; 
  • admission_id — ID текущего визита; 
  • diagnos_text — название диагноза; 
  • diagnos_type_text — тип диагноза; 
  • clinic_id — ID клиники.

Сессии

Название события
Описание
sessionCreateсрабатывает при входе в программу
sessionDestroyсрабатывает при выходе из программы
sessionUpdateсрабатывает каждую минуту
execClientOrderсрабатывает при выполнении счёта из заказа клиента

Общие данные: id — ID сессии; user_id — ID пользователя; session_key — ключ сессии; create_date — дата создания; update_date — дата обновления; php_session — ключ PHP; IP — IP-адрес компьютера; is_support — 0.

Данные: id, client_id, order_status (wait — ожидает, done — выполнен), clinic_id, good_id, unit_sale_id, quantity, create_date.

Для создания или изменения самой записи на приём до выставления счёта используйте события admissionAdd, admissionEdit и admissionChanged.

4. Пример запроса на получение id справочника с хук-уведомлениями 

curl --location --request GET 'https://{Domain URL}/rest/api/ComboManualName?filter=[{'property':'name', 'value':'services_for_hooks'}]' \
--header 'Content-Type: application/json' \
--header 'X-REST-API-KEY: {REST API KEY}' \

Ответ сервера: 

{
     "success": true,
     "message": "Records Retrieved Successfully",
     "data": {
          "totalCount": "1",
          "comboManualName": [
               {
                    "id": "11",
                    "title": "Сервисы для хук-уведомлений",
                    "is_readonly": "0",
                    "name": "services_for_hooks",
                    "comboManualItems": [
                         {
                              "id": "199",
                              "combo_manual_id": "11",
                              "title": "admissionAccepted",
                              "value": "value",
                              "dop_param1": "1", <-параметры введённые в настройках Хука
                              "dop_param2": "2",
                              "dop_param3": "3",
                              "is_active": "0"
                         },

                         ....

                         {
                              "id": "187",
                              "combo_manual_id": "11",
                              "title": "noName",
                              "value": "value",
                              "dop_param1": "1",
                              "dop_param2": "2",
                              "dop_param3": "3",
                              "is_active": "0"
                         }
                    ]
               }
          ]
     }
}


5. Пример запроса на получение списка хук-уведомлений с фильтром по id справочника

curl --location --request GET 'https://{Domain URL}/rest/api/ComboManualItem?filter=[{'property':'combo_manual_id', 'value':'{{ID}}'},{'property':'is_active', 'value':'1'}]' \
--header 'Content-Type: application/json' \
--header 'X-REST-API-KEY: {REST API KEY}' \

Параметры:

is_active: 0 - неактивный, 1 - активный
is_active: 0 - хук уведомления не отправляются

Ответ сервера:

{
     "success": true,
     "message": "Records Retrieved Successfully",
     "data": {
          "totalCount": "1",
          "comboManualItem": [
               {
                    "id": "251",
                    "combo_manual_id": "11",
                    "title": "startInvoiceRun",
                    "value": "value",
                    "dop_param1": "1", <- параметры введённые в настройках Хука
                    "dop_param2": "2",
                    "dop_param3": "3",
                    "is_active": "1",
                    "comboManualName": {
                         "id": "11",
                         "title": "Сервисы для хук-уведомлений",
                         "is_readonly": "0",
                         "name": "services_for_hooks"
                    }
               }
          ]
     }
}

6. Отключенные события


Сессия:
'sessionCreate'
'sessionUpdate'
'sessionDestroy'

Телефония:
'cdrSyncEvent'

Тарифы:
'changeTariff'
'updateTariff'
'endOfTariffPlan'

Рассылки:
'AddSenderTaskQueue'
'DeleteSenderTaskQueue'
'ResendTaskQueueMessage'
'SetOldTasksAsErrors'
'SetSenderTaskAsInProgress'
'SetSenderTaskAsSaved'
'SetTaskSendResponse'
'SetTaskResponseStatus'

Powered by