Вы можете добавить проверку орфографии прямо в личном кабинете. По нажатию на некоторую кнопку будет отправляться запрос к Яндекс Speller и выводиться таблица возможных ошибок по тексту.
Как внедрить интеграцию:
1. Создаем исходящий API метод с кодом yandexspell (с POST JSON)
процедура Request:
CREATE PROCEDURE [dbo].[api_yandexspell_request]
@parameters ExtendedDictionaryParameter READONLY, -- входящие параметры для внутренней обработки (используйте Key, Value2)
@username nvarchar(32) -- текущий пользователь.
AS
BEGIN
declare @text nvarchar(max)='', @itemID nvarchar(256), @id int
select @itemid = isnull(Value2, Value) from @parameters where lower([Key])='itemid'
if(left(@itemID, 8)='article_') begin
set @id = try_cast(substring(@itemID, 9, 100) as int)
select top 1 @text = text1 from as_articles where id = @id
end
if(len(@text)=0) begin
select top 1 @text = text1 from as_articles
end
set @text = dbo.as_stripHTML(@text)
-- SELECT 1 Msg, Result, Url (адрес, куда будет идти запрос)
select '' Msg, 1 Result, 'https://speller.yandex.net/services/spellservice.json/checkText?options=4' Url -- skip addressed
-- SELECT 2 PARAMETERS - параметры, которые будут передаваться во внешний источник
select 'text' name, @text value, 'form' [type] -- form (в форме передается), header (в http headers), get запросы передавайте прямо в URL
END
Процедура Response:
CREATE PROCEDURE [dbo].[api_yandexspell_response]
@response nvarchar(max),
@parameters ExtendedDictionaryParameter READONLY, -- входящие параметры для внутренней обработки (используйте Key, Value2 - те же что и на request)
@username nvarchar(32)
AS
BEGIN
-- SELECT 1
select '' Msg, 1 Result, @response Response
-- SELECT 2 Внешние действия
END
2. Реализуем обработку вывода в таблице (обязательно ставим в настройках таблицы Источник API = yandexspell) и @filters параметр имеет тип ExtendedDictionaryParameter.
Процедура GetItems:
CREATE PROCEDURE [dbo].[crud_spellText_getItems]
@filters ExtendedDictionaryParameter READONLY,
@sort sql_variant,
@direction nvarchar(8),
@page int,
@pageSize int,
@username nvarchar(32)
AS
BEGIN
-- filters...
declare @resp nvarchar(max)
select @resp = Value2 from @filters where [Key] = 'yandexspell'
SELECT word text,
'Code: '+ isnull(code,'') + ', Pos: ' + isnull(pos, '') + ', Row: '+ isnull([row], '') + ', Col: '+ isnull(col, '') desc_text,
isnull( STUFF(
(
SELECT ', ' + value
FROM openjson(s) AS t
FOR XML PATH('')
), 1, 2, N''
), '') s
FROM OPENJSON(@resp, '$')
WITH (
code nvarchar(512) '$.code',
pos nvarchar(512) '$.pos',
[row] nvarchar(512) '$.row',
col nvarchar(512) '$.col',
word nvarchar(max) '$.word',
s nvarchar(max) '$.s' as json
)
-- SELECT 2
select 1
-- SELECT 3
select 1 HideTitleCount, 1 Compact
END
В итоге для каждой статьи можно вызвать эту таблицу в модальном окне, которая покажет ошибки в тексте.
Примечание: