Передача данных по всем уведомлениям в системе через API

Система по умолчанию может отправлять запросы вовне по API при возникновении уведмолений в системе. При этом всегда есть возможность для отдельных случаев сделать дополнительно свои методы API для дополнительных выгрузок.  

Эта статья для программистов. 

Функция dbo.srv_getNotifications управляет выдачей уведомлений пользователяем. Здесь же и вызывается отправка АПИ методов вовне. 

Для этого в /settings необходимо указать следующие настройки: 

  • enableNotificationWebhook - если 1, то будет работать отправка во внешние АПИ уведомлений. 
  • notificationWebhook - URL адрес, куда идет отправка данных по уведомлениям.

Физически внутри вызывается Внешнее действие notificationWebhook, которое передает все параметры созданного уведомления во внешнюю систему по указанному адресу. Какие это параметры: code, itemID, username, clientID, data, text, url.

По умолчанию это Post запрос и данные передаются как параметры формы. 

CREATE PROCEDURE [dbo].[api_notificationWebhook_request]
	@parameters ExtendedDictionaryParameter READONLY,  
	@username nvarchar(32)  
AS
BEGIN
	declare @url nvarchar(max) = dbo.as_setting('notificationWebhook', '')
	if(isnull(@url,'') = '') begin 
    	select 'Wrong URL', 0 Result, '' Url
        return        
    end 
	-- SELECT 1
	select '' Msg, 1 Result, @url Url 

	-- SELECT 2 PARAMETERS 
	select [key] name, value2 value, 'form' [type]
    from @parameters 
END

--------

На принимающей стороне мы получаем данные и выводим из для примера в базу таким образом (создали Входящий метод АПИ на другом сайте Falcon для примера обработки): 

CREATE PROCEDURE [dbo].[api_notifyFromService_notifyFromService]
@parameters ExtendedDictionaryParameter READONLY,
@username nvarchar(256)
as
begin
	insert into as_trace (code, created, text)
    select 'notifyFromService', getdate(),  
    	(SELECT *
		FROM @parameters                                        
		FOR JSON AUTO)	
	-- SELECT 1 
	select 'OK' Msg, 1 Result, 0 errorCode
	
	-- SELECT 2 
	--select * from @parameters 
end
	

В итоге получаем такой JSON, который можно просмотреть через https://jsoneditoronline.org/

[{"Key":"InputStream","Value":"","Value2":"//// тут большое тело в другом формате...."},{"Key":"langID","Value":"","Value2":"2"},{"Key":"falconGuid","Value":"","Value2":"141673b3-7abe-4a2b-194b-d0b19b7752e6"},{"Key":"falconFR","Value":"","Value2":"https:\/\/www.google.com\/"},{"Key":"falconFP","Value":"","Value2":"https:\/\/service.web-automation.ru\/"},{"Key":"userIP","Value":"","Value2":"176.212.180.9"},{"Key":"userPort","Value":"","Value2":"0"},{"Key":"domain","Value":"","Value2":"service.web-automation.ru"},{"Key":"code","Value":"","Value2":"changeOrderStatus"},{"Key":"itemID","Value":"","Value2":"2499"},{"Key":"username","Value":"","Value2":"pointdirector1010240955"},{"Key":"clientID","Value":"","Value2":"2256"},{"Key":"data","Value":"","Value2":"В обработке"},{"Key":"text","Value":"","Value2":"Изменился статус заказа №2499 на \"В обработке\""},{"Key":"url","Value":"","Value2":"\/myorder\/2862"},{"Key":"Connection","Value":"","Value2":"Keep-Alive"},{"Key":"Content-Length","Value":"","Value2":"1452"},{"Key":"Content-Type","Value":"","Value2":"multipart\/form-data; boundary=----------8dcec89dcdad7ef"},{"Key":"Accept","Value":"","Value2":"text\/html, application\/xhtml+xml, application\/xml; q=0.9, *\/*; q=0.8"},{"Key":"Accept-Encoding","Value":"","Value2":"gzip, deflate"},{"Key":"Host","Value":"","Value2":"falconspace.ru"},{"Key":"Request-Id","Value":"","Value2":"|b13bd3ca-47c1c769a4420d40.1."},{"Key":"remoteIP","Value":"","Value2":"188.227.75.146"},{"Key":"FalconApiGuid","Value":"09641f71-023d-4400-9e5d-a59bacb8569f","Value2":"09641f71-023d-4400-9e5d-a59bacb8569f"}]

Подсказка по демо

Это база знаний по основным возможностям решения Service.
Механизм в дальнейшем можно использовать как базу знаний для менеджеров точек.
Сайт использует Cookie. Правила конфиденциальности OK