Создаем исходящий метод API в /asapi.
Это может быть Get/Post метод с некими параметрами (в простейшем случае get метод без параметров).
Процедура request:
CREATE PROCEDURE [dbo].[api_checksomeapi_request]
@parameters ExtendedDictionaryParameter READONLY,
@username nvarchar(32)
AS
BEGIN
-- SELECT 1 Msg, Result, Url (адрес, куда будет идти запрос)
select '' Msg, 1 Result, 'XXXXXXXXX' Url
-- SELECT 2 PARAMETERS - параметры, которые будут передаваться во внешний источник
select 1
END
Процедура response:
CREATE PROCEDURE [dbo].[api_checksomeapi_response]
@response nvarchar(max),
@parameters ExtendedDictionaryParameter READONLY,
@username nvarchar(32)
AS
BEGIN
-- SELECT 1
select '' Msg, 1 Result, @response Response
declare @success bit = iif(isjson(@response) =1 and JSON_VALUE(@response, '$.success')='true', 1, 0)
-- SELECT 2 Внешние действия
if(@success =0) begin
select 'notification' type, 'Внешний API не отвечает (ping запрос с сайта)' text , username [to], 'common' typeCode, '' url, '' additional
from dbo.sec_getRoleUsers('admin')
end
END
В процедуре мы разбираем ответ и если у нас неверный отклик, то создаем уведомления для админов сайта.
И последний шаг - вызывать это в периодических действиях в /syssp создаем команду, которая выполняется каждые 5 минут. Для нее прописываем процедуру:
CREATE PROCEDURE [dbo].[sync_checksomeapi]
@code nvarchar(128),
@result bit output,
@msg nvarchar(max) output
AS
BEGIN
select 'apirequest' type, 'checksomeapi' code
set @result = 1
set @msg = 'ok'
END
Таким образом мы настроили периодическую проверку внешнего сервиса. Также эти данные можно собирать в некую таблицу и вести лог доступности внешнего сервиса.