Внешние действия (уведомления, пуш, email, вызов API)

Что такое внешние действия

Вызов внешних действий - это возможность действия, выходящие за рамки возможности работы с БД через SQL. 

В некоторых процедурах можно вызвать такие внешние действия как отправка почты, СМС, очистка кеша, создание уведомления. Это можно использовать в следующих случаях:

  1. В SaveItem при сохранении формы (SELECT 2)
  2. В выполнении операции у таблицы (SELECT 2)
  3. В периодических вызовах sync (SELECT 2-10)
  4. После смены статуса сущностей в процедуре afterChangeStatus (SELECT 2).
  5. В обновлении поля в Таблице (SELECT 2)
  6. В выполнении Request JS запроса (SELECT 3)

Пример данного select2:

select 'email' type,   -- email, sms, notification, clearcache
    'ru@rudensoft.ru' [to], 'sub1' subject, 'bodyXXX'+@itemIDs body,   ---EMAIL
    'Text 1' msg, '723429234' [number],           --- SMS
    '' prefix,    --CLEAR CACHE
    'text1' text , 'ru@rudensoft.ru' [to], 'ticketExecutor' typeCode, 'http///' url, 'add111' additional  -- notifications

Использоваться будут только те параметры, которые актуальны для выбранного type.

Если необходимо сделать сразу несколько внешних действий - то можно прописать через Union (и в этом случае указать все параметры чтобы была возможность сделать union).

Примечание. Внешние действия могут возвращать результат на front end сторону (внимание! эти данные доступны пользователю в браузере!), где вы можете обработать их через JS и показать пользователю результат (поле data.additionalData в коллбеке сохранения формы). 

Если вызвано было несколько действий, то результаты передаются через конкатенация с "||", например, aa||bbb||c.

Описание параметров внешнего действия

Type -  типы команды (notification, clearcache, email, emailtemplate, sms, apirequest)

Уведомления на сайте

select 'notification' type, 'text1' text , 'demo1' [to], 'ticketExecutor' typeCode, 'http///' url, 'add111' additional
  • text - текст уведомления
  • to - кому уведомление
  • typeCode - код типа уведомления (as_nt_notificationTypes)
  • url - добавочный адрес к уведомлению
  • additional - дополнительная информация к уведомлению

См. подробнее про работу с уведомлениями

Очистка кеша

select 'clearcache' type, '' prefix

Если префикс указан, то кеш будет чистить ключи только с заданным префиксом (по умолчанию это as_).

Отправка в телеграм

-- простая отправка
select 'telegram' type, 'username' [to], 'message text' [text]

-- отправка с кнопками
 select 'telegram' type, 'text1' text, 'admin' [to], 'Btn1||test1' button1, '' button2, 'Google||||https://google.com' button3, 1 isReplyButtons,  '@falconSpaceTest' channel
   
  • to, channel - кому отправляем (если задан channel - то отправляем в канал. to - это username в системе, к которому привязан некий телеграм). 
  • text - сообщение
  • button1, button2, button3 - добавление в сообщение кнопок в виде "text||data||url". url - либо пустой, либо корректный URL вида https://yandex.ru
  • isReplyButtons - если 1, то кнопки будут выводиться под чатом внизу (тип кнопок Reply).

Отправка сообщения в телеграм пользователю (если он подписан на бота системы). 

Подробнее о настройке Telegram бота.

Email

select 'email' type, 'ru@rudensoft.ru' [to], 'sub1' subject, 'body1' body
  • to - кому отправляем сообщение
  • subject - тема сообщения
  • body - тело email
  • from (необязательный) - от кого сообщение. Если не указан, то берется из Настроек сайта (код настройки mail.from)
  • displayName  (необязательный) - отображаемое имя отправителя. Если не указан, то берется из Настроек сайта (код настройки mail.displayName)
  • server (необязательный) - сервер отправки. Если не указан, то берется из Настроек сайта (код настройки mail.server)
  • loginEmail (необязательный) - логин-почта. Если не указан, то берется из Настроек сайта (код настройки mail.loginEmail)
  • password (необязательный) - пароль логина. Если не указан, то берется из Настроек сайта (код настройки mail.password)
  • port (необязательный) - порт (25, 465). Если не указан, то берется из Настроек сайта (код настройки mail.port)
  • ssl (необязательный) - Требуется ли SSL (true). Если не указан, то берется из Настроек сайта (код настройки mail.ssl)
  • bcc (необязательный) - Скрытая копия. Если не указан, то берется из Настроек сайта (код настройки mail.bcc)
  • cc (необязательный) - Копия. Если не указан, то берется из Настроек сайта (код настройки mail.cc).

См. подрообноее про настройки Email

Отправка Email по шаблону

Шаблоны писем создаются в разделе /email-templates

   select 'emailtemplate' type, 'code1' code, 'ru@rudensoft.ru' [to], 'hecrus@mail.ru' bcc, 'Некий параметр' name1, 'Наименование некоего товара' productName1
  • code - это код шаблона уведомления
  • to, cc, bcc - кому отправлять сообщения (можно указывать через запятую в них несколько адресов).
  • Тажке можно передавать необязательные from, displayName, server, loginEmail, password, port, ssl (по аналогии с type=email). 
  • Любые параметры для замены в теле и теме письма, например name1. В теме и теле письма шаблона можно использовать псевдопараметры вида {name1}, которые будут заменяться соответствующим параметром из команды. 

Примечание: для корректной работы отправки в системе должны быть таблицы as_mailing_templates, as_mailing_log

Отправка SMS

select 'sms' type, 'Text 1' msg, '723429234' [number]
  • msg - текст SMS
  • number - телефон получателя

Вызов запроса к внешнему API

select 'apirequest' type, 'code1' code, 'name1' p1_name, 'val1' p1_value,..........'name10' p10_name, 'val10' p10_value
  • code - код запроса к внешнему API
  • p1_name, p1_value - параметры, которые передаются в запрос (может быть до 10 параметров , все параметры необязательные).

См. подробнее про запросы API

Генерация картинок

Вы можете через указание настроек сгенерировать графический файл. В файле вы можете писать некий текст, размещать блоки, линии и добавлять картинки.  Все настройки генерации указываются через JSON в параметре options (обязательно используйте кавычки для имен в JSON). 

Пример: 

 select 'generateImage' type, '
    {
                "ImageModel":{
		"path":"/uploads/image.png",
		"width":"500",
		"height":"500",
		"backColor":"red",
                },
		"ImageText": [
			{
				"Text":"Some text",
				"x":"10",
				"y":"10",
				"width":"400",
				"height":"30",
				"color":"black",
				"backColor":"black",
				"fontSize":"18",
				"fontFamily":"Arial"

            },
			{
				"Text":"Second line",
				"x":"10",
				"y":"40",
				"width":"800",
				"height":"30",
				"color":"blue",
				"backColor":"black",
				"fontSize":"20",
				"fontFamily":"Arial"
			},
			{
				"Text":"третья линия",
				"x":"10",
				"y":"70",
				"width":"400",
				"height":"30",
				"color":"green",
				"backColor":"black",
				"fontSize":"18",
				"fontFamily":"Arial"
			}
		],
		"ImagePicture": [
			{
				"path":"/uploads/Дашборды.gif",
				"x":"0",
				"y":"100",
				"width":"100",
				"height":"75",
				"opacity":"0.9"
			},
			{
				"path":"/uploads/Дашборды.gif",
				"x":"0",
				"y":"175",
				"width":"150",
				"height":"75",
				"opacity":"0.9"
			}
		],
		"ImageLine": [
			{
				"x1":"0",
				"y1":"200",
				"x2":"300",
				"y2":"200",
				"thickness":"3",
				"color":"black"
			},
			{
				"x1":"150",
				"y1":"300",
				"x2":"50",
				"y2":"0",
				"thickness":"20",
				"color":"black"
			},
			{
				"x1":"10",
				"y1":"200",
				"x2":"150",
				"y2":"300",
				"thickness":"3",
				"color":"black"
			},
            {
				"x1":"0",
				"y1":"0",
				"x2":"150",
				"y2":"300",
				"thickness":"3",
				"color":"white"
			}
		]
    }
    ' options

раздел ImageModel  - задает общие параметры: 

  • width, height - ширина и высота изображения в пикселях.
  • path - путь к файлу сохранения 
  • backColor - задает цвет формы

ImageText - это массив объектов Текст, каждый из которых имеет следующие параметры: 

  • text - текст, который требуется написать
  • x, y - координаты расположения блока
  • width, height - ширина и высота блока
  • color, backColor - цвет текста и цвет фона
  • fontSize, fontFamily - установка шрифта

ImagePicture - это массив Картинок, которые будут размещены на выходной картинке. У них следующие параметры: 

  • x, y - координаты расположения блока
  • width, height - ширина и высота блока
  • path - путь к картинке
  • opacity - прозрачность (float от 0 до 1)

ImageLine - это массив Линий, которые будут размещены на выходной картинке. У них следующие параметры: 

  • x1, y1, x2,y2 - координаты точек начала и конца отрезка
  • thickness - толщина линии
  • color - цвет линии

Обработка картинок (processimage)

Вы можете выполнить трансформацию картинок (изменить размеры, качество и т.д.)

Для этого необходимо выполнить следующее действие: 

 select 'processimage' type, '/uploads/viki.png' path, '/uploads/x-viki.png' url, 300 width, 300 height, 50 quality, '1' fitWithWhitespace, '' watermarkUrl
    union
    select 'processimage' type, '/uploads/viki2.png' path, '/uploads/x-viki2.png' url, 100 width, 100 height, 50 quality, '1' fitWithWhitespace, '' watermarkUrl

Таким образом можно сделать пакетную обработку множества картинок. 

Параметры processimage

  • path - путь к исходной картинке.
  • url - путь к новой сохраненной картинке.
  • width - ширина в пикселях выходной картинки.
  • height - ширина в пикселях выходной картинки.
  • quality - качество от 10 до 100. 
  • fitWithWhitespace - если 1, то картинка будет дополняться пробелами с боков. Если не 1 - то трансформироваться по высоту и ширину.
  • watermarkUrl - путь к картинке водяному знаку, который накладывается на исходную картинку.

Важно: path и url должны быть различными. 

Запуск автоматизированных тестов (frontchecker)

Вы можете запустить тесты, указав в actions коды тестов через запятую.

 select 'frontchecker' type, 'action1,action2' actions