Для интеграции с внешними сервисами можно использовать бизнес-хуки – сообщения, добавляемые в очередь Oracle при определенных событиях, которые потом можно задействовать в сторонних приложениях.
Очередь работает в многопотребительском режиме: сообщение доступно нескольким подписчикам. Сообщение остается в очереди, пока его не прочитают все подписчики, подтвердив получение.
Рекомендуется забирать сообщения во внешний сервис не напрямую из очереди Oracle, а с использованием брокеров сообщений, таких как ActiveMQ. Такой подход позволит:
Для базовой настройки передачи сообщений необходимо в конфигурационный файл брокера добавить правило маршрутизации:
<route> <from uri="oracleTopic:topic:AIS_NET.HYDRA_MESSAGES?clientId=ActiveMQ&durableSubscriptionName=HP"/> <to uri="activemq:queue:hydra_messages"/> </route> |
Если ActiveMQ работает не под AIS_NET, может потребоваться выдать права на очередь
После этого ActiveMQ будет забирать сообщения из Oracle и помещать в очередь hydra_messages. |
ActiveMQ должен подключаться к HYDRA_MESSAGES под пользователем AIS_3P_SERVICES, а не AIS_PROVISIONING, как было раньше. |
Другие примеры настройки маршрутизации сообщений доступны в статье Примеры особых конфигураций ActiveMQ |
В версиях 6.0.0.172 и 6.2.0.69 была добавлена возможность отключить отправку бизнес-хуков. Соответствующий чекбокс появился в системных параметрах в ООС.
Бизнес-хуки передаются в формате XML и состоят из элементов:
payload - подробности события, состав зависит от типа сообщения:
Код типа сообщения | Событие | Состав сообщения | |
---|---|---|---|
Элемент | Описание | ||
MESSAGE_TYPE_Payment | Актуализация платёжного поручения или проведение платежа | document_id | Идентификатор платежного поручения |
account_id | Идентификатор лицевого счета, на который зачислен платеж | ||
MESSAGE_TYPE_Charge | Информация о начислении | charge_log_id | Идентификатор акта начислений |
charge_log_line_id | Идентификатор строки акта начислений | ||
change_balance_type_id | Идентификатор значения из базового справочника "Тип изменения баланса" (REF_TYPE_ChangeBalanceType) | ||
MESSAGE_TYPE_CreditLimit | Изменение суммы кредитного лимита | document_id | Документ-основание |
account_id | Идентификатор лицевого счета | ||
MESSAGE_TYPE_Correction | Проведение корректировок | account_id | Идентификатор лицевого счета |
charge_log_id | Идентификатор акта начислений по корректировке | ||
MESSAGE_TYPE_StopSrvProv | Прекращение оказания услуг | charge_log_id | Идентификатор акта начислений |
MESSAGE_TYPE_ArchiveDoc | Архивирование документа | charge_log_id | Идентификатор акта начислений |
MESSAGE_TYPE_AutoTopUp | Подписка на автоплатеж | account_id | Идентификатор лицевого счета |
auto_top_up_id | Идентификатор подписки | ||
auto_top_up_state_id | Состояние автоплатежа | ||
MESSAGE_TYPE_SubjValue | Изменение значения дополнительного параметра субъекта | subject_id | Идентификатор субъекта |
subject_type_id | Тип субъекта | ||
additional_value_type_id | Тип доп. параметра | ||
additional_value_id | Идентификатор доп. параметра | ||
additional_value | Значение доп. параметра | ||
MESSAGE_TYPE_AutoTopUpPayment | Результат проведения автоплатежа. Добавлено в 6.2.0.28 | account_id | Идентификатор лицевого счета |
request_state_id | Статус проведения автоплатежа | ||
refuse_reason_Id | Причина неуспешного проведения автоплатежа. Необязательное поле. | ||
MESSAGE_TYPE_ChangeDocState | Изменение состояния документа (6.2.0.39) | document_id | Идентификатор документа |
document_type_id | Тип документа | ||
new_state_id | Новое состояние документа | ||
old_state_id | Старое состояние документа |
<message> <message_type_id>1208</message_type_id> <message_type_code>MESSAGE_TYPE_Payment</message_type_code> <version/> <created_at>2022-01-28T12:12:00</created_at> <payload> <payment> <document_id>12811629901</document_id> <account_id>178500901</account_id> </payment> </payload> </message> |
<message> <message_type_id>2208</message_type_id> <message_type_code>MESSAGE_TYPE_Charge</message_type_code> <version/> <created_at>2022-07-14T00:08:43</created_at> <payload> <charge> <charge_log_id>289145601</charge_log_id> <charge_log_line_id>409855401</charge_log_line_id> <change_balance_type_id>3210</change_balance_type_id> </charge> </payload> </message> |
<message> <message_type_id>3208</message_type_id> <message_type_code>MESSAGE_TYPE_CreditLimit</message_type_code> <version/> <created_at>2022-07-14T00:25:48</created_at> <payload> <credit_limit> <document_id>411763901</document_id> <account_id>133193991</account_id> </credit_limit> </payload> </message> |
<message> <message_type_id>4208</message_type_id> <message_type_code>MESSAGE_TYPE_Correction</message_type_code> <version/> <created_at>2022-07-13T00:14:30</created_at> <payload> <correction> <charge_log_id>321755501</charge_log_id> <account_id>21121191</account_id> </correction> </payload> </message> |
<message> <message_type_id>5208</message_type_id> <message_type_code>MESSAGE_TYPE_StopSrvProv</message_type_code> <version/> <created_at>2022-06-22T12:05:25</created_at> <payload> <stop_service_provisioning> <charge_log_id>199968101</charge_log_id> </stop_service_provisioning> </payload> </message> |
<message> <message_type_id>6208</message_type_id> <message_type_code>MESSAGE_TYPE_ArchiveDoc</message_type_code> <version/> <created_at>2022-05-22T11:05:25</created_at> <payload> <archive_document> <charge_log_id>188983101</charge_log_id> </archive_document> </payload> </message> |
<message> <message_type_id>7208</message_type_id> <message_type_code>MESSAGE_TYPE_AutoTopUp</message_type_code> <version/> <created_at>2022-04-22T13:23:21</created_at> <payload> <auto_top_up> <account_id>188983101</account_id> <auto_top_up_id>7581101</auto_top_up_id> <auto_top_up_state_id>2195</auto_top_up_state_id> </auto_top_up> </payload> </message> |
<message> <message_type_id>8208</message_type_id> <message_type_code>MESSAGE_TYPE_SubjValue</message_type_code> <version/> <created_at>2022-07-11T08:11:36</created_at> <payload> <subject_value> <subject_id>397259401</subject_id> <subject_type_id>18001</subject_type_id> <additional_value_type_id>18101</additional_value_type_id> <additional_value_id>397259501</additional_value_id> <additional_value/> </subject_value> </payload> </message> |
<message> <message_type_id>13208</message_type_id> <message_type_code>MESSAGE_TYPE_AutoTopUpPayment</message_type_code> <version/> <created_at>2022-04-22T13:23:21</created_at> <payload> <atu_payment> <account_id>188983101</account_id> <request_state_id>3197</request_state_id> <refuse_reason_id>51198</refuse_reason_id> </atu_payment> </payload> </message> |
<message> <message_type_id>14208</message_type_id> <message_type_code>MESSAGE_TYPE_ChangeDocState</message_type_code> <version/> <created_at>2024-04-26T15:19:31</created_at> <payload> <change_doc_state> <document_id>188983101</document_id> <document_type_id>7002</document_type_id> <new_state_id>4003</new_state_id> <old_state_id>3003</old_state_id> </change_doc_state> </payload> </message> |