Триггер в: Логические триггеры: схемы, типы, устройство, назначение

Содержание

Справочник «Цифровые Интегральные Микросхемы»

Справочник «Цифровые Интегральные Микросхемы» [ Содержание ]

2.5.2. D-триггеры

D-триггером называется триггер с одним информационным входом, работающий так, что сигнал на выходе после переключения равен сигналу на входе D до переключения, т. е. Qn+1=Dn Основное назначение D-триггеров — задержка сигнала, поданного на вход D. Он имеет информационный вход D (вход данных) и вход синхронизации С. Вход синхронизации С может быть статическим (потенциальным) и динамическим. У триггеров со статическим входом С информация записывается в течение времени, при котором уровень сигнала C=1. В триггерах с динамическим входом С информация записывается только в течение перепада напряжения на входе С. Динамический вход изображают на схемах треугольником. Если вершина треугольника обращена в сторону микросхемы (прямой динамический вход), то триггер срабатывает по фронту входного импульса, если от нее (инверсный динамический вход) — по срезу импульса. В таком триггере информация на выходе может быть задержана на один такт по отношению к входной информации.

D-триггеры могут быть построены по различным схемам. На рис. 2.43,а показана схема одноступенчатого D-триггера на элементах И-НЕ и его условное обозначение. Триггер имеет прямые статические входы (управляющий сигнал — уровень логической единицы). На элементах DD1.1 и DD1.2 выполнена схема управления, а на элементах DD1.3 и DD1.4 асинхронный RS-триггер.


Рис. 2.43. Синхронный D-триггер: а — схема D-триггера на элементах И-НЕ и условное обозначение;
б — временные диаграммы; в — преобразование синхронного RS-триггера в синхронный D-триггер;
г — временные диаграммы записи и считывания.

Если уровень сигнала на входе С = 0, состояние триггера устойчиво и не зависит от уровня сигнала на информационном входе D. При этом на входы асинхронного RS-триггера с инверсными входами (DD1.3 и DD1.4) поступают пассивные уровни /S = /R = 1.

При подаче на вход синхронизации уровня С = 1 информация на прямом выходе будет повторять информацию, подаваемую на вход D.

Следовательно, при C=0 Qn+1=Qn, а при C=l Qn+1=Dn. Временные диаграммы, поясняющие работу D-триггера, приведены на рис. 2.43,б.

D-триггер возможно получить из синхронного RS-триггера, если ввести дополнительный инвертор DD1.1 между входами S и R (рис. 2.43,в). В таком триггере состояние неопределенности для входов S и R исключается, так как инвертор DD1.1 формирует на входе R сигнал /S. Временные диаграммы записи в D-триггер напряжений высокого и низкого входных уровней и их считывание приведены на рис. 2.43,г. Обязательным условием правильной работы D-триггера является наличие защитного временного интервала после прихода импульса на вход D перед тактовым импульсом (вход С). Этот интервал времени tn+1-tn зависит от справочных данных на D-триггер.

Комбинированные D-триггеры имеют дополнительные входы асинхронной установки логических 0 и 1 — входы S и R. Схема и условное обозначение одного такого триггера представлены на рис. 2.44. Триггер собран на шести элементах И-НЕ по схеме трех RS-триггеров. Входы /S и /R служат для первоначальной установки триггера в определенное состояние.


Рис. 2.44. Комбинированный D-триггер и его условное обозначение.

Если C=D=0, установить /S=0, а /R=1, то элементы DD1.1 … DD1.5 будут закрыты, а элемент DD1.6 будет открыт, т. е. Q=l, /Q=0. При снятии нулевого сигнала со входа /S, откроется элемент DD1.1, состояние остальных элементов не изменится. При подаче единичного сигнала на вход С на всех входах элемента DD1.3 будут действовать единичные сигналы и он откроется, а элемент DD1.6 закроется: /Q = 1. Теперь на всех входах элемента DD1.5 действуют единичные сигналы и он будет открыт: Q = 0. Следовательно, после переключения триггера сигнал на выходе Q стал равным сигналу на входе D до переключения: Qn+1=Dn=0. После снятия единичного сигнала со входа С состояние триггера не изменится.

D-триггер с динамическим входом C может работать как T-триггер. Для этого необходимо вход С соединить с инверсным выходом триггера /Q (рис. 2.45,а). Если на входе D поставить дополнительный двухвходовый элемент И и инверсный выход триггера /Q соединить с одним из входов элемента И, а на второй вход подать сигнал EI, то получим T-триггер с дополнительным разрешением по входу (рис. 2.45,б).


Рис. 2.45. Схемы преобразования D-триггера. а — преобразование D-триггера в T-триггер и его временная диаграмма работы;
б — преобразование D-триггера в в T-триггер с дополнительным входом расширения EI и его временная диаграмма работы;

Микросхема ТМ2 содержит два независимых комбинированных D-триггера, имеющих общую цепь питания. У каждого триггера имеется один информационный вход D, вход синхронизации С и два дополнительных входа /S и /R независимой асинхронной установки триггера в единичное и нулевое состояния, а также комплементарные выходы Q и /Q (рис. 2.46). Логическая структура одного D-триггера (рис. 2.46) содержит следующие элементы: основной асинхронный RS-триггер (ТЗ), вспомогательный синхронный RS-триггер (Т1) записи логической единицы (высокого уровня) в основной триггер, вспомогательный синхронный RS-триггер (Т2) записи логического нуля (низкого уровня) в основной триггер. Входы /S и /R — асинхронные, потому что они работают (сбрасывают состояние триггера) независимо от сигнала на тактовом входе, активный уровень для них низкий (т. е. инверсные входы /S и /R).


Рис. 2.46. Структура D-триггера микросхемы ТМ2

Асинхронная установка D-триггера в единичное или нулевое состояния осуществляется подачей взаимопротивоположных логических сигналов на входы /S и /R. В это время входы D и С не влияют.

Если на входы /S и /R одновременно подать сигнал низкого уровня (логический нуль), то на обоих выходах триггера Q и /Q будет высокий уровень (логическая единица). Однако после снятия этих сигналов со входов /S и /R состояние триггера будет неопределенным. Поэтому комбинация /S=/R=0 для этих входов является запрещенной.

Загрузить в триггер входные уровни В или Н (т. е. логические 1 или 0) можно, если на входы /S и /R подать напряжение высокого уровня: /S=/R=1. Сигнал от входа D передается на выходы триггера при поступлении положительного перепада импульса на вход С (изменение от низкого* к высокому). Однако, чтобы D-триггер переключался правильно (согласно таблице состояний, табл. 2.24), необходимо уровень на входе D зафиксировать заранее, т. е. до прихода перепада на вход С. Причем этот защитный временной интервал должен быть больше времени задержки распространения сигнала в триггере (определяется по справочнику).

Таблица 2.24. Состояния триггера ТМ2
Режим работыВходыВыходы
/S/RDCQ/Q
Асинхронная установка01XX10
Асинхронный сброс
1
0ХХ01
неопределенность00ХХ11
Загрузка «1» (установка)111_/10
Загрузка «0» (сброс)110_/01

Цоколевка микросхемы ТМ2 приведена на рис. 2.47, а основные параметры см. в табл. 2.20а.


Рис. 2.47. Условное обозначение и
цоколевка микросхемы ТМ2

Микросхемы ТM5 и ТМ7 содержат по четыре D-триггера, входы синхронизации которых попарно соединены и обозначены как входы разрешения загрузки EI. Если на такой вход разрешения EI подается напряжение высокого уровня, то информация, поступающая на входы D, передается на выходы триггеров. При напряжении низкого уровня на входе разрешения EI на выходах триггеров сохраняются предыдущие состояния (состояние входов D безразлично).

В триггерах будет зафиксирована информация, имевшаяся на входах D, если состояние входа EI переключить от напряжения высокого уровня к низкому. Такие триггеры используются в качестве четырехразрядного регистра хранения информации с непарным тактированием разрядов, а также в качестве буферной памяти и элемента задержки. Каждый триггер микросхемы ТМ5 имеет только прямой выход Q, а каждый триггер микросхемы ТМ7 имеет прямые Q и инверсные /Q выходы. Функциональные схемы, цоколевка, схема одного D-триггера и временные диаграммы работы приведены на рис. 2.48, а, основные параметры триггеров даны в табл. 2.20, состояния триггеров даны в табл. 2.25.


Рис. 2.48. Функциональные схемы, цоколевки, структура D-триггера и временные диаграммы микросхем ТМ5, ТМ7.
Таблица 2.25. Состояния триггеров ТМ5, ТМ7
Режим работыВходыВыходы
EIDQn+1/Qn+1
Разрешение передачи данных на выход
1001
1110
Защелкивание данных0ХQn=1/Qn=0

Микросхемы. TM8 и ТМ9 содержат четыре и шесть D-триггеров соответственно. Они имеют общие входы синхронного сброса /R (установки в состояние низкого уровня) и входа синхронизации C. Структура ТМ8 и ТМ и их цоколевка приведены на рис. 2.49.


Рис. 2.48. Функциональные схемы и цоколевки микросхем ТМ8 и ТМ9.

Триггеры микросхемы ТМ9 имеют только прямые входы Q, а триггеры ТМ8 — прямые и инверсные выходы Q и /Q. На входах C и /R поставлены дополнительные инверторы. Микросхемы К1533ТМ8, К1533ТМ9 имеют повышенную нагрузочную способность, т.е. на каждом из выходов поставлены дополнительные инверторы. Функционрированне триггеров в микросхемах ТМ8 и ТМ9 соответствует таблице состояний (табл. 2.26).

Таблица 2.26. Состояния триггеров ТМ8 и ТМ9
Режим работыВходыВыходы
/RDCQn+1/Qn+1
Сброс0XX01
Загрузка «1»11_/10
Загрузка «0»10_/01

Установка всех триггеров в состояние Q = 0 произойдет, когда на асинхронный вход /R подать напряжение низкого уровня — 0. Входы С и D в это время не действуют. Информацию от входов D можно загрузить в триггеры, если на вход /R подать напряжение высокого уровня — 1. Тогда при подаче на вход синхронизации С положительного перепада напряжения (фронта импульса) и предварительно поданного на вход D напряжения высокого или низкого уровня появится на выходе Q высокий или низкий уровень.


Триггер как элемент памяти. Схема RS-триггера

Память (устройство, предназначенное для хранения данных и команд) является важной частью компьютера. Можно сказать, что она его и определяет: если вычислительное устройство не имеет памяти, то оно уже не компьютер.

Элементарной единицей компьютерной памяти является бит. Поэтому требуется устройство, способное находиться в двух состояниях, т.е. хранить единицу или ноль. Также это устройство должно уметь быстро переключаться из одного состояния в другое под внешним воздействием, что дает возможность изменять информацию. Ну и наконец, устройство должно позволять определять его состояние, т.е. предоставлять во вне информацию о своем состоянии.

Устройством, способным запоминать, хранить и позволяющим считывать информацию, является триггер. Он был изобретен в начале XX века Бонч-Бруевичем.

Разнообразие триггеров весьма велико. Наиболее простой из них так называемый RS-триггер, который собирается из двух вентилей. Обычно используют вентили ИЛИ-НЕ или И-НЕ.

RS-триггер на вентилях ИЛИ-НЕ

RS-триггер «запоминает», на какой его вход подавался сигнал, соответствующий единице, в последний раз. Если сигнал был подан на S-вход, то триггер на выходе постоянно «сообщает», что хранит единицу. Если сигнал, соответствующий единице, подан на R-вход, то триггер на выходе имеет 0. Не смотря на то, что триггер имеет два выхода, имеется в виду выход Q. (Q с чертой всегда имеет противоположное Q значение.)

Другими словами, вход S (set) отвечает за установку триггера в 1, а вход R (reset) – за установку триггера в 0. Установка производится сигналом, с высоким напряжением (соответствует единице). Просто все зависит от того, на какой вход он подается.

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

Возможны следующие ситуации:

  • Q = 1, сигнал подан на S, следовательно, Q не меняется.
  • Q = 0, сигнал подан на S, следовательно, Q = 1.
  • Q = 1, сигнал подан на R, следовательно, Q = 0.
  • Q = 0, сигнал подан на R, следовательно, Q не меняется.

Ситуация, при которой на оба входа подаются единичные сигналы, недопустима.

Как триггер сохраняет состояние? Допустим, триггер выдает на выходе Q логический 0. Тогда судя по схеме, этот 0 возвращается также и в верхний вентиль, где инвертируется (получается 1) и уже в этом виде передается нижнему вентилю. Тот в свою очередь снова инвертирует сигнал (получается 0), который и имеется на выходе Q. Состояние триггера сохраняется, он хранит 0.

Теперь, допустим, был подан единичный сигнал на вход S. Теперь в верхний вентиль входят два сигнала: 1 от S и 0 от Q. Поскольку вентиль вида ИЛИ-НЕ, то на выходе из него получается 0. Ноль идет на нижний вентиль, там инвертируется (получается 1). Сигнал на выходе Q становится соответствующим 1.

События и триггеры в адаптивных диалогах — Bot Service

  • Чтение занимает 6 мин

В этой статье

применимо к: Пакет SDK v4APPLIES TO: SDK v4

Адаптивные диалоги предлагают новый подход на основе событий для моделирования общения.Adaptive dialogs introduce a new event based approach to model conversations. Любая подсистема в Bot может выдавать события, а все адаптивные диалоговые окна содержат один или несколько обработчиков событий, называемых триггерами , которые позволяют реагировать на эти события.Any subsystem in your bot can emit events and all adaptive dialogs contain one or more event handlers called triggers that enable you to react to these events. При каждом порождении события вычисляются триггеры активного адаптивного диалога и, если какой-либо триггер соответствует текущему событию, выполняются действия, связанные с этим триггером.Any time an event fires, the active adaptive dialog’s triggers are evaluated and if any trigger matches the current event, the actions associated with that trigger execute. Если событие не удалось обработать в активном диалоге, оно передается в родительский диалог для вычисления.If an event is not handled in the active dialog, it will be passed up to its parent dialog to be evaluated. Этот процесс продолжится до тех пор, пока событие не будет обработано или не достигнет корневого диалога бота.This process continues until it is either handled or reaches the bots root dialog. Если обработчик событий (триггер) не найден, событие будет пропущено и никакие действия не будут выполнены.If no event handler (trigger) is found, the event will be ignored and no action will be taken.

Предварительные требованияPrerequisites

Структура триггераAnatomy of a trigger

Триггер состоит из условия и одного или нескольких действий.A trigger is made up of a condition and one or more actions. Пакет SDK для Bot Framework предлагает несколько триггеров, каждый из которых содержит набор предопределенных условий, которые проверяют либо eventName, либо eventValue.Bot Framework SDK offers several triggers, each with a set of predefined conditions that examine either the eventName or eventValue. В триггер можно добавить дополнительные условия, обеспечив расширенный контроль над его выполнением.You can add additional conditions to a trigger, giving you additional control when the trigger executes.

Пакет SDK для Bot Framework предоставляет различные предопределенные триггеры, предназначенные для обработки распространенных типов событий.The Bot Framework SDK provides various pre-defined triggers designed to handle common event types. Например, триггер OnIntent срабатывает, когда распознаватель обнаруживает намерение.For example the OnIntent trigger fires anytime the recognizer detects an intent. При использовании распознавателя LUIS также возвращается оценка прогноза, которая указывает степень достоверности результатов прогноза.If you are using a LUIS recognizer it will also return a prediction score that measures the degree of confidence LUIS has for its prediction results. Чтобы повысить надежность и точность бота, может потребоваться выполнять триггер OnIntent, только если степень достоверности составляет не меньше 80 %.In order to increase the reliability and accuracy of your bot, you may only want to execute the OnIntent trigger if the confidence rating is 80% or higher. Это можно сделать, добавив условие.You can accomplish this by adding a condition. Все триггеры содержат необязательное свойство Condition. Если он определено, то оно должно иметь значение true, чтобы триггер выполнился.Triggers all contain an optional Condition property that when defined, must evaluate to true in order for the trigger to execute. Свойство Condition является строкой, но чтобы оно работало, это свойство должно содержать допустимое адаптивное выражение.The Condition property is a string, but must contain a valid adaptive expression to work. Пример приведенного выше свойства Condition будут выглядеть примерно так: Condition = "#<IntentName>.Score >= 0.8".The above examples Condition property would look something like: Condition = "#<IntentName>.Score >= 0.8". Адаптивные выражения позволяют задавать сложные условия, которые делают возможной реализацию практически любого сценария.Adaptive expressions enable sophisticated conditions that can handle virtually any scenario that you might have.

Все триггеры также содержат список действий.All triggers also contain a list of Actions. Действия представляют операции, выполняемые ботом в ответ на срабатывание триггера.Actions represent what your bot does in response to a trigger. Это основа триггера.This is the heart of the trigger. Узнать больше о действиях и основанных на них элементах в пакете SDK для Bot Framework можно в разделе Действия в адаптивных диалогах.You can learn more about actions and what built in actions are provided in the Bot Framework SDK in the article Actions in adaptive dialogs.

Типы триггеровTrigger types

Триггеры позволяют перехватывать события и реагировать на них.Triggers enable you to catch and respond to events. Самым широким триггером, от которого наследуются все другие триггеры OnCondition , является триггер, который позволяет перехватывать и присоединять список действий, выполняемых при порождении определенного события любой из подсистем программы-роботы. The broadest trigger from which all other triggers are derived is the OnCondition trigger that allows you to catch and attach a list of actions to execute when a specific event is emitted by any of the bots subsystems.

Список триггеров приведен в следующих разделах, где они классифицированы и сгруппированы по типу.Triggers are listed in the following sections, categorized and grouped by trigger type.

В таблицах в следующих разделах перечислены все триггеры, поддерживаемые адаптивными диалогами, которые в настоящее время включены в пакет SDK, а также события, на которых они основаны.Each table in the following sections list all of the triggers supported by adaptive dialogs that are currently in the SDK as well as the events they are based on.

Базовый триггерBase trigger

Триггер OnCondition является базовым триггером, от которого наследуют все остальные триггеры.The OnCondition trigger is the base trigger that all triggers derive from. При определении триггеров в адаптивном диалоговом окне они определяются как список OnCondition объектов.When defining triggers in an adaptive dialog they are defined as a list of OnCondition objects.

Дополнительные сведения и пример см. в разделе базовый триггер в статье о встроенных триггерах адаптивных диалогов.For more information and an example, see the Base trigger section in the Adaptive dialogs prebuilt triggers article.

Триггеры событий распознавателяRecognizer event triggers

Распознаватели извлекают значимые фрагменты информации из входных данных пользователя в виде намерений и сущностей, после чего они порождают события.Recognizers extract meaningful pieces of information from a user’s input in the form of intents and entities and when they do, they emit events. Например, событие recognizedIntent порождается, когда распознаватель выбирает намерение (или извлекает сущности) из заданного речевого фрагмента пользователя. For example the recognizedIntent event fires when the recognizer picks up an intent (or extracts entities) from a given user utterance. Вы обрабатываете эти события с помощью OnIntent триггера.You handle this events using the OnIntent trigger.

В следующем списке показаны некоторые триггеры событий распознавателя , доступные в пакете SDK для Bot Framework:The following list shows some of the recognizer event triggers available in the Bot Framework SDK:

  • Выберите намерение.Choose Intent. OnChooseIntentТриггер выполняется при неоднозначности между определениями из нескольких распознавателей в кросстраинедрекогнизерсет.The OnChooseIntent trigger executes when there is ambiguity between intents from multiple recognizers in a CrossTrainedRecognizerSet.
  • Распознано намерение.Intent recognized. OnIntentТриггер выполняется при распознавании указанной цели.The OnIntent trigger executes when the specified intent is recognized.
  • QnA совпадение.QnA Match. OnQnAMatchТриггер выполняется, когда кнамакеррекогнизер возвращает QnAMatch намерение.The OnQnAMatch trigger executes when the QnAMakerRecognizer has returned a QnAMatch intent.
  • Не удалось распознать цель.No intent was recognized. OnUnknownIntentТриггер выполняется, когда входные данные пользователя не распознаны или не найдены совпадения ни в одном из OnIntent триггеров.The OnUnknownIntent trigger executes when user input is unrecognized or no match is found in any of the OnIntent triggers. Его также можно использовать в качестве первого триггера в корневом диалоге вместо OnBeginDialog, чтобы выполнить все необходимые задачи при первом запуске диалога. You can also use this as your first trigger in your root dialog in place of the OnBeginDialog to preform any needed tasks when the dialog first starts.

Подробные сведения и примеры см. в разделе триггеры событий распознавателя в статье о встроенных триггерах адаптивных диалогов.For detailed information and examples, see the Recognizer event triggers section in the Adaptive dialogs prebuilt triggers article.

Триггеры событий диалогаDialog event triggers

Триггеры диалогового окна обрабатывают события, относящиеся к диалоговому окну, которые связаны с жизненным циклом диалогового окна.Dialog triggers handle dialog specific events that are related to the «lifecycle» of the dialog. В настоящее время в пакете SDK для Bot Framework доступны 6 триггеров диалога, и все они являются производными от класса OnDialogEvent.There are currently 6 dialog triggers in the Bot Framework SDK and they all derive from the OnDialogEvent class.

Совет

Они отличаются от обычных обработчиков событий прерывания, в которых действия дочерних элементов продолжают выполняться после завершения действий обработчиков.These aren’t like normal interruption event handlers where the a child’s actions will continue running after the handlers actions complete. Для каждого события в боте выполняется новый набор действий, по завершении которого завершается и этап диалога.For all of the events below the bot will be running a new set of actions and will end the turn once those actions have finished.

Для триггера диалогового окна :For the dialog trigger to:

  • Выполнить действие немедленно при запуске диалогового окна, даже перед вызовом распознавателя, используйте OnBeginDialog триггер.Take action immediately when the dialog starts, even before the recognizer is called, use the OnBeginDialog trigger.
  • Запретить отмену диалога, когда любое из его дочерних диалоговых окон выполняет CancelAllDialogs действие, используйте OnCancelDialog триггер. Prevent a dialog from being canceled when any of its child dialogs execute a CancelAllDialogs action, use the OnCancelDialog trigger.
  • Предпринимать действия, если все действия и события неоднозначности обработаны, используйте OnEndOfActions триггер.Take action when all actions and ambiguity events have been processed, use the OnEndOfActions trigger.
  • Обработайте условие ошибки, используя OnError триггер.Handle an error condition, use the OnError trigger.

Подробные сведения и примеры см. в разделе события диалога в статье о встроенных триггерах адаптивных диалогов.For detailed information and examples, see the Dialog events section in the Adaptive dialogs prebuilt triggers article.

Триггеры событий действияActivity event triggers

Триггеры действия позволяют связать действия с любым входящим действием клиента. Например, когда новый пользователь присоединяется и бот начинает новую беседу.Activity triggers let you associate actions to any incoming activity from the client such as when a new user joins and the bot begins a new conversation. Дополнительные сведения о действиях можно найти в разделе Схема действия в Bot Framework.Additional information on activities can be found in Bot Framework Activity schema.

Все события действия имеют базовое событие ActivityReceived, которое дополнительно уточняется с помощью типа действия.All activity events have a base event of ActivityReceived and are further refined by their activity type. Базовый класс, от которого наследуются все триггеры действия, — OnActivity.The Base class that all activity triggers derive from is OnActivity.

  • Обновление диалога.Conversation update. Используйте этот параметр для управления событиями, возникающими, когда пользователь начинает новый диалог с Bot.Use this to handle events fired when a user begins a new conversation with the bot.
  • Диалог завершен.Conversation ended. Действия, выполняемые при получении действия типа EndOfConversation.Actions to perform on receipt of an activity with type EndOfConversation.
  • Событие получено.Event received. Действия, выполняемые при получении действия типа Event.Actions to perform on receipt of an activity with type Event.
  • Передачи вам образа для человека.Handover to human. Действия, выполняемые при получении действия типа HandOff.Actions to perform on receipt of an activity with type HandOff.
  • Вызван диалог.Conversation invoked. Действия, выполняемые при получении действия типа Invoke.Actions to perform on receipt of an activity with type Invoke.
  • Пользователь вводит.User is typing. Действия, выполняемые при получении действия типа Typing.Actions to perform on receipt of an activity with type Typing.

Подробные сведения и примеры см. в разделе действия триггеров событий в статье о встроенных триггерах адаптивных диалогов.For detailed information and examples, see the Activity event triggers section in the Adaptive dialogs prebuilt triggers article.

Триггеры событий сообщенияMessage event triggers

Триггеры событий сообщения позволяют реагировать на любое событие сообщения, например, когда сообщение изменено (MessageUpdate) либо удалено (MessageDeletion), или когда кто-либо реагирует (MessageReaction) на сообщение (например, к распространенным реакциям на сообщение относятся такие действия, как отметка «Нравится», «Сердечко», «Смех», «Удивление» и «Злость»).Message event triggers allow you to react to any message event such as when a message is updated (MessageUpdate) or deleted (MessageDeletion) or when someone reacts (MessageReaction) to a message (for example, some of the common message reactions include a Like, Heart, Laugh, Surprised, Sad and Angry reactions).

События сообщения относятся к типу события действия, поэтому все события сообщения имеют базовое событие ActivityReceived, которое дополнительно уточняется с помощью типа действия.Message events are a type of activity event and, as such, all message events have a base event of ActivityReceived and are further refined by activity type. Базовый класс, от которого наследуются все триггеры сообщения, — OnActivity.The Base class that all message triggers derive from is OnActivity.

  • Сообщение получено.Message received. Действия, выполняемые при получении действия типа MessageReceived.Actions to perform on receipt of an activity with type MessageReceived.
  • Сообщение удалено.Message deleted. Действия, выполняемые при получении действия типа MessageDelete.Actions to perform on receipt of an activity with type MessageDelete.
  • Реакция на сообщение.Message reaction. Действия, выполняемые при получении действия типа MessageReaction.Actions to perform on receipt of an activity with type MessageReaction.
  • Сообщение Обновлено.Message updated. Действия, выполняемые при получении действия типа MessageUpdate.Actions to perform on receipt of an activity with type MessageUpdate.

Подробные сведения и примеры см. в разделе сообщения о триггерах событий в статье о встроенных триггерах адаптивных диалогов.For detailed information and examples, see the Message event triggers section in the Adaptive dialogs prebuilt triggers article.

Триггер настраиваемого событияCustom event trigger

Можно порождать собственные события, добавив действие EmitEvent в любой триггер. Затем можно будет обработать это пользовательское событие в любом триггере любого диалога бота, определив триггер настраиваемого события.You can emit your own events by adding the EmitEvent action to any trigger, then you can handle that custom event in any trigger in any dialog in your bot by defining a custom event trigger. Триггер настраиваемого события — это триггер OnDialogEvent, который фактически становится настраиваемым триггером, если для свойства Event задано то же значение, что для свойства EventName действия EmitEvent.A custom event trigger is the OnDialogEvent trigger that in effect becomes a custom trigger when you set the Event property to the same value as the EmitEvent’s EventName property.

Совет

Можно разрешить другим диалогам бота работать с настраиваемым событием, задав для свойства BubbleEvent действия EmitEvent значение true.You can allow other dialogs in your bot to handle your custom event by setting the EmitEvent’s BubbleEvent property to true. Дополнительные сведения и пример см. в разделе [пользовательские события] [Custom-events] статьи о встроенных триггерах адаптивных диалогов.For more information and an example, see the [Custom events][custom-events] section in the Adaptive dialogs prebuilt triggers article.

Подробные сведения и пример см. в разделе [пользовательские триггеры событий] [Custom-Event-Triggers] статьи о встроенных триггерах адаптивных диалогов.For detailed information and an example, see the [Custom event triggers][custom-event-triggers] section in the Adaptive dialogs prebuilt triggers article.

Дополнительные сведенияAdditional Information

Пример использования триггеров в PostgreSQL

Тут по работе возникла небольшая задачка с PostgreSQL. Интересна задача тем, что в ней достаточно оправдано использование триггеров. Как показывает опыт, не каждый разработчик знаком со «столь продвинутыми» возможностями постгреса. Поэтому мне показалось, что будет неплохой идеей написать про задачу и ее решение.

Формулировка задачи

В упрощенной форме задача формулируется так. Есть таблица, в которой хранятся временные метки и некое число, соответствующее временной метке:

CREATE TABLE data_raw(tstamp TIMESTAMP PRIMARY KEY, val INT NOT NULL);

Данных не очень много, десятки записей за сутки. Поэтому их не страшно хранить в PostgreSQL, а не специализированной time seties базе данных. На самом деле, помимо временной метки и значения, каждая запись содержит и другие данные. Но в рамках данной статьи они нас не интересуют. Считается, что временные метки не повторяются, поэтому их допустимо использовать в качестве первичного ключа.

Необходимо сделать следующее. Для каждого дня берется три интервала времени — с 00:00 до 07:59, с 08:00 до 15:59 и 16:00 до 23:59. Необходимо посчитать какие-то агрегаты за эти интервалы. В рамках поста мы будем считать среднее. Выборка агрегатов должна производиться как можно быстрее, поскольку предполагается, что к ним будет много запросов на чтение.

Решение в лоб

Неплохая идея при решении любой задачи — найти простейшее решение, а затем, если нужно, подумать над оптимизацией.

Заполним таблицу случайными данными:

INSERT INTO data_raw (tstamp, val)
  SELECT tstamp, FLOOR(random()*100)
  FROM generate_series (
    ‘2020-01-01 00:00:00’ :: TIMESTAMP,
    ‘2020-01-04 23:00:00’ :: TIMESTAMP,
    ‘1 hour’) AS tstamp;

… и напишем решение в лоб:

SELECT
  tstamp :: DATE +
    concat(
      FLOOR(EXTRACT(HOUR FROM tstamp) / 8)*8,
      ‘:00:00’
    ) :: TIME AS d,
  avg(val) :: FLOAT
FROM data_raw
GROUP BY d
ORDER BY d;

Пример результата:

          d          |  avg
———————+———
 2020-01-01 00:00:00 | 50.125
 2020-01-01 08:00:00 | 56.125
 2020-01-01 16:00:00 | 62.625
 2020-01-02 00:00:00 |   51.5
 2020-01-02 08:00:00 |  54.25
 2020-01-02 16:00:00 | 57.625
 2020-01-03 00:00:00 | 45.625
 2020-01-03 08:00:00 |     27
 2020-01-03 16:00:00 |  44.25
 2020-01-04 00:00:00 |  47.75
 2020-01-04 08:00:00 | 53.875
 2020-01-04 16:00:00 |   53.5
(12 rows)

Разумеется, решение неэффективно, потому что каждый раз выполняется полное сканирование таблицы c группировками, сортировкой и всеми расчетами, см вывод EXPLAIN. Теперь нам нужно получить такой же результат, только быстрее.

Решение на materialized view

Первое, что приходит на ум — это воспользоваться materialized view:

CREATE MATERIALIZED VIEW data_view AS
  SELECT
    tstamp :: DATE +
      concat(
        FLOOR(EXTRACT(HOUR FROM tstamp) / 8)*8,
        ‘:00:00’
      ) :: TIME AS d,
    avg(val)
  FROM data_raw
  GROUP BY d
  ORDER BY d;

— уникальный индекс необходим для использования
— команды refresh materialized view concurrently.
— без concurrently вьюха будет блокироваться на время обновления
CREATE UNIQUE INDEX data_view_idx ON data_view(d);

Теперь закэшированные агрегаты можно читать прямо из data_view. Главное — не забывать делать:

REFRESH MATERIALIZED VIEW CONCURRENTLY data_view;

… после записи очередной пачки данных в data_raw.

Такое решение, в общем-то, имеет полное право на жизнь, но не лишено недостатков. Дело в том, что при каждом рефреше materialized view пересчитывается целиком. Со временем, когда data_raw подрастет, это может стать проблемой.

Решение на триггерах

Триггеры позволяют получить такую же materialized view, только умнее. При каждой записи в data_raw триггер будет обновлять ровно одну строчку нашей самодельной вьюхи.

Итак, создадим новую таблицу:

CREATE TABLE data_agg(
  tstamp TIMESTAMP PRIMARY KEY,
  total BIGINT NOT NULL,
  num INT NOT NULL
);

Напишем небольшой триггер на PL/pgSQL:

CREATE OR REPLACE FUNCTION update_data_agg() RETURNS TRIGGER AS $$
BEGIN
  INSERT INTO data_agg (tstamp, total, num) VALUES (
      NEW.tstamp :: DATE + concat(
        FLOOR(EXTRACT(HOUR FROM NEW.tstamp) / 8)*8,
        ‘:00:00’
      ) :: TIME, NEW.val, 1
    ) ON CONFLICT (tstamp) DO
    UPDATE SET total = data_agg.total + EXCLUDED.total,
               num = data_agg.num + 1;
    RETURN NULL;
END
$$ LANGUAGE ‘plpgsql’;

… и повесим его на INSERT в таблицу data_raw:

CREATE TRIGGER data_agg_trigger
AFTER INSERT ON data_raw
FOR EACH ROW EXECUTE PROCEDURE update_data_agg();

Триггер представляет собой не более, чем UPSERT в табличку data_agg. Неявный аргумент триггера с именем new представляет собой record, который INSERT’ится в таблицу data_raw. Если бы мы писали триггер на UPDATE, он имел бы два неявных аргумента — new и old.

Чтобы триггер сработал для данных, уже записанных в data_raw, сделаем так:

COPY data_raw TO ‘/tmp/data_raw.dat’;
DELETE FROM data_raw;
COPY data_raw FROM ‘/tmp/data_raw.dat’;

Проверяем:

SELECT tstamp, total::FLOAT/num AS avg
FROM data_agg ORDER BY tstamp;

… и видим такой результат:

       tstamp        |  avg
———————+———
 2020-01-01 00:00:00 | 50.125
 2020-01-01 08:00:00 | 56.125
 2020-01-01 16:00:00 | 62.625
 2020-01-02 00:00:00 |   51.5
 2020-01-02 08:00:00 |  54.25
 2020-01-02 16:00:00 | 57.625
 2020-01-03 00:00:00 | 45.625
 2020-01-03 08:00:00 |     27
 2020-01-03 16:00:00 |  44.25
 2020-01-04 00:00:00 |  47.75
 2020-01-04 08:00:00 | 53.875
 2020-01-04 16:00:00 |   53.5
(12 rows)

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

Можно также подстелить себе соломки и запретить операции UPDATE, DELETE и TRUNCATE на таблице data_raw:

CREATE OR REPLACE FUNCTION data_raw_insert_only() RETURNS TRIGGER AS $$
BEGIN
  RAISE ‘UPDATE / DELETE / TRUNCATE are not allowed on data_raw,’
    ‘ because triggers are involved!’;
  RETURN NULL;
END
$$ LANGUAGE ‘plpgsql’;

CREATE TRIGGER data_raw_ins_only BEFORE UPDATE OR DELETE OR TRUNCATE
ON data_raw EXECUTE PROCEDURE data_raw_insert_only();

Если этого не сделать, то выполнение UPDATE, DELETE и TRUNCATE над таблицей data_raw (например, руками через psql) приведет к тому, что таблица data_agg перестанет быть консистентной.

Заключение

Само собой разумеется, у задачи нет единственного правильного решения. Например, data_raw можно было бы вообще не хранить. Но я предпочитаю всегда хранить сырые данные. Опыт показывает, что рано или поздно заказчик попросит посчитать не только среднее, но также минимумы и максимумы.

Иногда триггеры критикуют за то, что якобы из-за них часть логики оказывается в приложении, а часть — в СУБД, за счет чего становится сложнее поддерживать код. Я не особо убежден, что это такая уж большая проблема. В конце концов, в нормальных проектах схема базы данных вместе со всеми триггерами хранится в том же репозитории, что и код приложения. Ведь кто как не приложение выполняет миграцию схему базы данных?

Реализация всей логики на стороне приложения тоже имеет право на жизнь. Но платой за такой подход является увеличение сетевого трафика и реализация своих джоинов, группировок, и вот этого всего. Разумеется, такие реализации редко обходятся без багов. По моим представлениям, данный подход оправдан крайне редко. Например, если требуется произвести тяжелые вычисления, и хочется разгрузить СУБД.

А доводилось ли вам работать с триггерами в PostgreSQL и если да, то для чего вы их использовали?

Дополнение: Примеры рекурсивных запросов в PosrtgreSQL

Метки: PostgreSQL, СУБД.

1 Настройка триггера [Zabbix Documentation 5.2]

1 Настройка триггера

Обзор

Для настройки триггера, сделайте следующее:

  • Перейдите в: НастройкаУзлы сети

  • Нажмите на Триггеры в строке с узлом сети

  • Нажмите на Создать триггер сверху справа (или на имя триггера для изменения уже существующего триггера)

  • Введите в диалоге параметры триггера

Настройка

Вкладка Триггер содержит все существенные атрибуты триггера.

Все обязательные поля ввода отмечены красной звёздочкой.

ПараметрОписание
ИмяИмя триггера.
Имя может содержать поддерживаемые макросы: {HOST.HOST}, {HOST.NAME}, {HOST.CONN}, {HOST.DNS}, {HOST.IP}, {ITEM.VALUE}, {ITEM.LASTVALUE} и {$MACRO}.
Можно использовать макросы $1, $2…$9 как ссылки на первую, вторую… девятую константу из выражения.
Обратите внимание: Макросы $1-$9 будут раскрыты корректно, если константы на которые ссылаются макросы, в относительно простых, понятных выражениях. Например, имя “Загрузка процессора превышает $1 на {HOST.NAME}” будет автоматически изменено на “Загрузка процессора превышает 5 на New host”, если выражение — {New host:system.cpu.load[percpu,avg1].last()}>5
ВажностьОпределение требуемой важности триггера нажатием кнопок.
Выражение проблемыЛогическое выражение, используемое для определения условий проблемы.
Формирование ОК событийОпции формирования ОК событий:
Выражение — ОК события формируются на основе того же выражения что и события о проблемах;
Выражение восстановления — OK события формируются, если выражение проблемы вычисляется как ЛОЖЬ и выражение восстановления вычисляется как ПРАВДА;
Нет — в этом случае триггер никогда самостоятельно не вернётся в состояние ОК.
Поддерживается начиная с Zabbix 3.2.0.
Выражение восстановленияЛогическое выражение, используемое для определения условий, когда проблема решена.
Выражение восстановления вычисляется только после того, как выражение проблемы будет вычислено как ЛОЖЬ. Невозможно решить проблему с помощью выражения восстановления, если условие проблемы всё ещё присутствует.
Это поле опционально и доступно только, если в Формирование ОК событий выбрано ‘Выражение восстановления’.
Поддерживается начиная с Zabbix 3.2.0.
Режим формирования ПРОБЛЕМА событийРежим формирования событий о проблемах:
Одиночный — формируется одно событие, когда триггер переходит в состояние ‘Проблема’ в первый раз;
Множественный — событие формируется на каждое ‘Проблема’ вычисление триггера.
ОК событие закрываетВыберите, если ОК событие закрывает:
Все проблемы — все проблемы этого триггера
Все проблемы, если значение тега совпадает — только те проблемы триггера, значения тегов событий которых совпадает
Поддерживается начиная с Zabbix 3.2.0.
Теги для совпаденияУкажите имя тега события, которое будет использоваться для корреляции событий.
Это поле отображается, если в свойстве ОК событие закрывает выбрано ‘Все проблемы, если значения тегов совпадают’ и в этом случае это поле обязательно.
Поддерживается начиная с Zabbix 3.2.0.
ТегиУкажите пользовательские теги для маркировки событий триггера.
Теги событий могут использоваться для корреляции событий, в условиях действий и будут также видны в МониторингПроблемы и в Проблемы виджете.
Тегами является пара имя тега и значение. Вы можете использовать только имя или на пару имя со значением.
Пользовательские макросы, контекст пользовательских макросов, макросы низкоуровневого обнаружения и макросы функций {{ITEM.VALUE}}, {{ITEM.LASTVALUE}}, а также макросы низкоуровневого обнаружения, поддерживаются в тегах событий. Макросы низкоуровневого обнаружения можно использовать в контексте макросов.
Если суммарная длина раскрытого значения превышает, оно будет обрезано до 255 символов.
Смотрите все поддерживаемые макросы тегами событий.
Поддерживается начиная с Zabbix 3.2.0.
Разрешить закрывать вручнуюВыберите, чтобы разрешить закрывать вручную события о проблемах сформированные этим триггером. Закрытие вручную возможно при подтверждении событий о проблемах.
Поддерживаются начиная с Zabbix 3.2.0.
URLЕсли не пустой, то URL, указанный здесь, доступен в виде ссылки в нескольких местах веб-интерфейса, например при нажатии на имя проблемы в Мониторинг → Проблемы (опция URL в меню Триггер) и в виджете Проблемы на панели.
Поддерживаемые макросы: {ITEM.VALUE}, {ITEM.LASTVALUE}, {TRIGGER.ID}, несколько {HOST.*} макросов, пользовательские макросы.
ОписаниеТекстовое поле используется, для того чтобы сообщить больше информации об этом триггере. Может содержать инструкции по устранению специфичной проблемы, контактные данные ответственного сотрудника и т.п.
Начиная с Zabbix 2.2, описание может содержать тот же набор макросов, что и имя триггера.
АктивированоУберите отметку деактивирует триггер, если это требуется.

Вкладка Зависимости содержит все зависимости триггера.

Нажмите на Добавить для добавления новой зависимости.

Вы также можете настроить триггер, открыв уже существующий триггер, затем нажать на кнопку Клонировать и сохранить его под другим именем.

Тестирование выражений

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

Следующее выражение с официального шаблона взято в качестве примера:

{Template Net Cisco IOS SNMPv2:sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}].avg(5m)}>{$TEMP_WARN}
or
{Template Net Cisco IOS SNMPv2:sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}].last(0)}={$TEMP_WARN_STATUS}

Для тестирования выражения, нажмите на Конструктор выражения под полем выражения.

В Конструкторе выражения перечислены все отдельные выражения. Чтобы открыть окно тестирования, нажмите на Тест ниже списка выражений.

В окне тестирования вы можете задать пробные значения (“80, 70, 0, 1” в этом примере) и затем увидеть результат выражения, нажав на кнопку Тест.

Можно увидеть результат отдельных выражений, наряду со полным выражением.

Результат “ПРАВДА” означает, что введёное выражение корректно. В этом конкретном выражении А, “80” больше чем указанное значение {$TEMP_WARN}, “70” в этом примере. Соответственно, появится результат “ПРАВДА”.

Результат “ЛОЖЬ” означает, что введёное выражение некорректно. В этом конкретном выражении B, {$TEMP_WARN_STATUS}, равно “1” в этом примере, должно быть равно указанному значению 0, и это неправда. Соответственно, появится результат “ЛОЖЬ”.

Выбранным типом выражения является “ИЛИ”/“ПРАВДА”. Если по крайней мере одно из заданных выражений (A или B в этом случае) будет ПРАВДА, общий результат будет также ПРАВДА. Что означает, что текущее значение превысило пороговое значение и возникнет Проблема.

⭐️Как сделать PowerPoint презентацию с триггерами⭐️

В этой статье мы расскажем, как вставить триггеры в PowerPoint-презентацию, сделать с их помощью игру, загрузить ее в блог или отправить по email всему классу.

Триггер в PowerPoint — это инструмент, который позволяет создать «горячую клавишу» для запуска анимации, аудио- и видеоэффектов.

Один клик мышью — и выбранный объект (картинка, фигура, отдельное слово) приходит в движение на слайде. Исчезает, выезжает справа или слева, меняет цвет — действует по заданному сценарию. Например, вот так:

Как сделать триггер в презентации

Посмотрите нашу короткую видеоинструкцию: 

Рассмотрим на конкретном примере, как сделать триггер в PowerPoint. Мне нужно, чтобы при нажатии на портрет Пушкина всплывала подсказка — окошко с фамилией и инициалами поэта. А при нажатии изображения Лермонтова появлялся текст «М.Ю. Лермонтов». Итак, цель задана. Рассмотрим создание триггеров в презентации пошагово.

1. Создаем пустой слайд

Запускаем PowerPoint. В нашем случае это версия 13-го года. Перед нами первый слайд с графами Заголовок и Подзаголовок. Для удобства сделаем его пустым. Наведите курсор на свободное место на слайде, кликните по нему один раз правой кнопкой мыши, выберите пункт Макет и Пустой слайд.

2. Добавляем изображения для анимации

Для этого на вкладке Вставка в группе Изображения нажмите кнопку Рисунки.

В открывшемся диалоговом окне найдите нужное изображение, выберите его и нажмите кнопку Вставить.

СОВЕТ: если вы хотите одновременно вставить несколько рисунков, выберите необходимые файлы, удерживая клавишу CTRL.

3. Вставляем подсказки

Для этого выбираем меню Вставка — Фигуры — Выноска.

После вставляем в фигуру текст с подсказкой. Выполняем данные действия для двух фото. Должно получиться так:

4. Создаем анимацию

Для этого выделяем фигуру с текстом, выбираем меню Анимация — Добавить анимацию — Появление.

5. Настраиваем триггер

Для этого выделяем подсказку, далее Анимация — Область анимации — Триггер — По щелчку — Рисунок 3.

Для второй подсказки применяем ту же схему. Только в конце выбираем Рисунок 4. В итоге должно получиться следующее:

Точно так же можно поставить триггеры на другие объекты слайда: надписи, рисунки, автофигуры, добавить анимацию, аудио- и видеоэффекты. Именно триггеры «прокачают» вашу PowerPoint-презентацию до уровня:

Как поделиться интерактивной презентацией с учениками

Вы создали презентацию с триггерами, курс или тест и хотите поделиться ими с учениками. Можно провести урок в компьютерном классе или показать презентацию через проектор. А можно расширить «географию». Например, залить материал в интернет и скинуть ссылку школьникам соцсетях или по почте. Тогда дети смогут ознакомиться с презентацией в удобное время.

Простой способ поделиться презентацией в интернете — загрузить материалы в «облачный» сервис iSpring Cloud. Программа предлагает четыре удобных варианта распространения презентаций, которые можно будет открыть на любом компьютере:

  1. Короткая ссылка — вы можете просто скопировать ссылку и отправить ее ученикам по смс, через Skype или любой другой сервис для обмена сообщениями. Вставьте ссылку в рекламный баннер или промо материалы.
  2. Email — укажите адрес электронной почты получателя, и из iSpring Cloud придет приглашение к просмотру материала.
  3. Социальные сети — делитесь презентацией с учениками в социальных сетях (Facebook, Twitter, LinkedIn, Вконтакте).
  4. Embed-код — скопируйте код и разместите презентацию на сайте или в блоге.

В iSpring Cloud можно не только делиться курсами, но и смотреть по ним статистику: кто открывал, сколько слайдов просмотрено, сколько в среднем тратят времени на изучение.

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

Читайте подробную инструкцию о том, как поделиться презентацией с помощью iSpring Cloud.

Если вам понравилась статья, дайте нам знать  —  нажмите кнопку Поделиться.

А если у вас есть идеи для полезных статей на тему электронного обучения  —  напишите нам в комментариях, и мы будем рады поработать над новым материалом.

Триггеры — Workbench

Триггер является элементом хранения информации, который широко применяется при построении счетчиков, регистров и других устройств памяти. Одним из наиболее важных свойств триггера является его способность устанавливать состояние своего выхода в одно из двух возможных состояний, которые могут быть представлены как логические нуль и единица. В соответствие с этим состояние триггера может рассматриваться как бит информации.

Триггер — цифровой автомат, имеющий два устойчивых состояния рав­но­ве­сия либо 0, либо 1.

Состояние триггера распознается по его входному сигналу. Под влиянием входного сигнала триггер скачкообразно переходит из одного устойчивого состояния в другое, при этом скачкообразно изменяется уровень напряжения его выходного сигнала. Для удобства использования в схемах вычислительных устройств триггеры обычно имеют два выхода: прямой Q (называется также «выход 1») и инверсный ?Q («выход 0»). В единичном состоянии триггеры на выходе Q имеют высокий уровень сигнала, а в нулевом — низкий. На выходе ?Q наоборот.

Если хотя бы с одного входа информации в триггер заносится принудительно под воздействием синхронизирующего сигнала, то триггер называется синхронизируемым (синхронным). Если занесение информации в триггер с любого входа производится без синхронизирующего сигнала, то триггер называется несинхронизируемым (асинхронным).

Состояние триггера определяется сигналом Q на прямом выходе триггера (или сигналом ?Q на его инверсном выходе).

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

Типы триггеров

Триггер типа RS имеет два входа раздельной установки в нулевое и единичное состояния. Воздействие по входу S (обозначен по первой букве слова set – установка) приводит триггер в единичное состояние, а воздействие по входу R (от первой буквы слова reset – сброс) – в нулевое. Одновременная подача сигналов S и R не допускается, что является недостатком для RS-триггера.

Асинхронный RS-триггер на вентилях ИЛИ-НЕ показан на рисунке.

Рис. Схема исследования RS-триггера

Триггер образован из двух комбинационных схем ИЛИ-НЕ, соединенных таким образом, что возникают положительные обратные связи, благодаря которым в устойчивом состоянии выходной транзистор одной схемы ИЛИ-НЕ закрыт, а другой открыт. Ниже представлена таблица закона функционирования асинхронного RS-триггера.

Таблица переходов асинхронного RS-триггера на элементах ИЛИ-НЕ

R

S

Q

Примечание

0

0

Q

Хранение

0

1

1

Установка 1

1

0

0

Установка 0

1

1

Запрещено

При R=1 и S=0 триггер устанавливается в нулевое состояние Q=0; при R=0 и S=1 он устанавливается в единичное состояние Q=1; при R=S=0 триггер сохраняет состояние, в котором он находился до момента поступления на его входы нулевых сигналов. При R=S=1 на прямом и инверсном выходах устанавливается нулевой сигнал. Триггерное кольцо превращается в два независимых инвертора, и при переходе к хранению (R=S=0) триггер может устанавливаться в любое состояние. Поэтому такая комбинация входных сигналов запрещена.

В Electronics Workbench RS-триггер обознается .

D-триггер

D-триггер (от слова delay – задержка) принимает информацию по одному входу и реализует функцию временной задержки. D-триггер имеет только режимы установки 1 и 0. В связи с этим несинхронизируемый D-триггер не применяется, т.к. его выход будет просто повторять входной сигнал. Синхронизируемый однотактный D-триггер задерживает распространение входного сигнала на время паузы между синхросигналами (задержка на полпериода).

JK-триггер

JK-триггер — универсален, с раздельной установкой нулевого и единичного состояния, в зависимости от соединения его входов он может работать как RS, T, D триггера. В отличие от триггера типа RS в нем не запрещена одновременная подача сигналов на оба входа. Входы J и K эквивалентны входам S и R установки триггера соответственно в состояния «1» и «0».При объединении входов J и K и при подаче на них счетных импульсов. Вход J при раздельном использовании входов играет роль входа установки в единицу, а вход K — роль входа установки в нуль.

В Electronics Workbench JK-триггер обознается .

T-триггер

T-триггер — является триггером со счетным входом (или счетным триггером). Он изменяет свое состояние на противоположное каждый раз, когда на его вход приходит очередной сигнал. Обозначение триггера пришло от первой буквы английского слова toggle — защелка.

Определение триггера по Merriam-Webster

триггер | \ ˈTri-gər \

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

б : аналогичная подвижная часть, с помощью которой приводится в действие механизм. курок краскопульта

2 : нечто, что действует как механический спусковой механизм при запуске процесса или реакции.

срабатывает; запуск \ ˈTri-g (ə-) riŋ \

переходный глагол

: для разблокировки или активации с помощью триггера особенно : для стрельбы нажатием на механический спусковой крючок. спускать винтовку

б : , чтобы вызвать взрыв вызвать ракету с бесконтактным взрывателем

2 : для запуска, срабатывания или срабатывания триггера. нескромное замечание, вызвавшее драку, раздражитель, вызвавший рефлекс

3 : , чтобы вызвать сильную и обычно негативную эмоциональную реакцию у (кого-то) У воды был способ спровоцировать моего брата и сделать обычную повседневную погоду пугающей.- Ингрид Ло

Определение

в кембриджском словаре английского языка

槍 的 部件, (槍 的) 扳機, 開始…

Узнать больше

tetiklemek, başlatmak, harekete geçirmek…

Узнать больше

déclencher, détente [женский род], déclencheur [мужской род]…

Узнать больше

spoušť, spouštěč, spustit…

Узнать больше

aftrækker, udløser, udløse…

Узнать больше

ไก ปืน, ตัวนำ, จุด ชนวน…

Узнать больше

cò, sự khởi động một quá trình, khởi động…

Узнать больше

der Abzug, der Auslöser, auslösen…

Узнать больше

utløse, avtrekker, utløsende årsak…

Узнать больше

枪 的 部件, (枪 的) 扳机, 开始…

Узнать больше

грильетто, скатто, провокация…

Узнать больше

вызывать, давать начало…

Узнать больше

gatillo, desencadenar, gatillo [мужской род …

Узнать больше

Триггеры MySQL

В MySQL триггер — это сохраненная программа, автоматически вызываемая в ответ на такое событие, как вставка, обновление или удаление, которое происходит в связанной таблице.Например, вы можете определить триггер, который запускается автоматически перед вставкой новой строки в таблицу.

MySQL поддерживает триггеры, которые вызываются в ответ на событие INSERT , UPDATE или DELETE .

Стандарт SQL определяет два типа триггеров: триггеры на уровне строк и триггеры на уровне операторов.

  • Триггер на уровне строки активируется для каждой вставленной, обновленной или удаленной строки. Например, если в таблице вставлено, обновлено или удалено 100 строк, триггер автоматически запускается 100 раз для 100 затронутых строк.
  • Триггер уровня оператора выполняется один раз для каждой транзакции независимо от того, сколько строк вставлено, обновлено или удалено.

MySQL поддерживает только триггеры на уровне строк. Он не поддерживает триггеры на уровне операторов.

Преимущества триггеров

  • Триггеры предоставляют еще один способ проверки целостности данных.
  • Триггеры обрабатывают ошибки на уровне базы данных.
  • Триггеры предоставляют альтернативный способ запуска запланированных задач. Используя триггеры, вам не нужно ждать запуска запланированных событий, потому что триггеры вызываются автоматически перед или после , когда в данные в таблице вносятся изменения.
  • Триггеры могут быть полезны для аудита изменений данных в таблицах.

Недостатки триггеров

  • Триггеры могут обеспечивать только расширенные проверки, но не все проверки. Для простых проверок можно использовать ограничения NOT NULL , UNIQUE , CHECK и FOREIGN KEY .
  • Триггеры сложно устранить, поскольку они автоматически выполняются в базе данных, что может быть незаметно для клиентских приложений.
  • Триггеры могут увеличить нагрузку на сервер MySQL.

Управление триггерами MySQL

CREATE TRIGGER — База знаний MariaDB

Синтаксис

 СОЗДАТЬ [ИЛИ ЗАМЕНИТЬ]
    [DEFINER = {пользователь | CURRENT_USER | роль | ТЕКУЩАЯ РОЛЬ }]
    ТРИГГЕР [ЕСЛИ НЕ СУЩЕСТВУЕТ] имя_ триггера время_пуска_события
    НА tbl_name ДЛЯ КАЖДОЙ СТРОКИ
   [{СЛЕДУЕТ | PRECEDES} other_trigger_name]
   trigger_stmt;
 

Описание

Этот оператор создает новый триггер.Триггер — это именованная база данных объект, связанный с таблицей, который активируется, когда для таблицы происходит определенное событие. Триггер становится связанным с таблицей с именем имя_таблицы , которая должна относиться к постоянной таблице. Вы не можете связать триггер с таблицей TEMPORARY или представлением.

CREATE TRIGGER требует привилегии TRIGGER для связанной таблицы с курком.

MariaDB, начиная с 10.2.3

У вас может быть несколько триггеров для одного и того же trigger_time и trigger_event .

Сведения о допустимых идентификаторах для использования в качестве имен триггеров см. В разделе «Имена идентификаторов».

ИЛИ ЗАМЕНИТЬ

MariaDB, начиная с 10.1.4

Если используется и триггер уже существует, вместо того, чтобы возвращать ошибку, существующий триггер будет отброшен и заменен вновь определенным триггером.

DEFINER

Предложение DEFINER определяет контекст безопасности, который будет использоваться, когда проверка прав доступа во время активации триггера. Для использования требуется привилегия SUPER или MariaDB 10.5.2, привилегия SET USER.

ЕСЛИ НЕ СУЩЕСТВУЕТ

MariaDB, начиная с 10.1.4

Если используется предложение IF NOT EXISTS , триггер будет создан только в том случае, если триггер с таким же именем не существует. Если триггер уже существует, по умолчанию будет возвращено предупреждение.

trigger_time

trigger_time — время срабатывания триггера. Это может быть ДО или ПОСЛЕ до указывают, что триггер активируется до или после каждой строки, которая должна быть изменен.

trigger_event

trigger_event указывает тип оператора, который активирует спусковой крючок. trigger_event может быть одним из следующих:

  • INSERT : триггер активируется всякий раз, когда в таблицу вставляется новая строка; например, с помощью операторов INSERT, LOAD DATA и REPLACE.
  • ОБНОВЛЕНИЕ : триггер активируется при изменении строки; например, с помощью операторов UPDATE.
  • DELETE : триггер активируется всякий раз, когда строка удаляется из таблицы; например, с помощью операторов DELETE и REPLACE.Однако операторы DROP TABLE и TRUNCATE в таблице не активируют этот триггер, поскольку они не используют DELETE . Удаление раздела также не активирует триггеры DELETE .
ПОДПИСЫВАЕТСЯ / ПРЕДЫДУЩАЕТСЯ other_trigger_name
MariaDB, начиная с 10.2.3

Параметры FOLLOWS other_trigger_name и PRECEDES other_trigger_name были добавлены в MariaDB 10.2.3 как часть поддержки нескольких триггеров за время действия.Это тот же синтаксис, который используется в MySQL 5.7, хотя MySQL 5.7 не имеет поддержки нескольких триггеров.

FOLLOWS добавляет новый триггер после другого триггера, а PRECEDES добавляет новый триггер перед другим триггером. Если ни одна из опций не используется, новый триггер добавляется последним для данного действия и времени.

FOLLOWS и PRECEDES не сохраняются в определении триггера. Однако порядок срабатывания гарантированно не изменится со временем.mariadb-dump / mysqldump и другие методы резервного копирования не изменяют порядок запуска. Вы можете проверить порядок запуска из столбца ACTION_ORDER в таблице INFORMATION_SCHEMA.TRIGGERS.

 ВЫБЕРИТЕ имя_триггера, порядок_действия из схемы_информации.triggers
  ГДЕ event_object_table = 't1';
 

Примеры

 CREATE DEFINER = `root` @` localhost` TRIGGER increment_animal
  ПОСЛЕ ВСТАВКИ НА животных ДЛЯ КАЖДОГО РЯДА
   ОБНОВЛЕНИЕ animal_count SET animal_count.animals = animal_count.животные + 1;
 

ИЛИ ЗАМЕНИТЬ И ЕСЛИ НЕТ

 CREATE DEFINER = `root` @` localhost` TRIGGER increment_animal
  ПОСЛЕ ВСТАВКИ НА животных ДЛЯ КАЖДОГО РЯДА
    ОБНОВЛЕНИЕ animal_count SET animal_count.animals = animal_count.animals + 1;
ОШИБКА 1359 (HY000): триггер уже существует.

СОЗДАТЬ ИЛИ ЗАМЕНИТЬ DEFINER = `root` @` localhost` TRIGGER increment_animal
  ПОСЛЕ ВСТАВКИ НА животных ДЛЯ КАЖДОГО РЯДА
    ОБНОВЛЕНИЕ animal_count SET animal_count.animals = animal_count.animals + 1;
Запрос в порядке, затронуто 0 строк (0,12 секунды)

CREATE DEFINER = `root` @` localhost` ТРИГГЕР, ЕСЛИ НЕ СУЩЕСТВУЕТ, increment_animal
  ПОСЛЕ ВСТАВКИ НА животных ДЛЯ КАЖДОГО РЯДА
    ОБНОВИТЬ animal_count УСТАНОВИТЬ animal_count.животные = animal_count.animals + 1;
Запрос выполнен, затронуты 0 строк, 1 предупреждение (0,00 сек)

ПОКАЗАТЬ ПРЕДУПРЕЖДЕНИЯ;
+ ------- + ------ + ------------------------ +
| Уровень | Код | Сообщение |
+ ------- + ------ + ------------------------ +
| Примечание | 1359 | Триггер уже существует |
+ ------- + ------ + ------------------------ +
1 ряд в наборе (0,00 сек)
 

См. Также

1 Настройка триггера [Zabbix Documentation 5.2]

1 Настройка триггера

Обзор

Чтобы настроить триггер, сделайте следующее:

  • Перейти к: Конфигурация Хосты

  • Нажмите на Триггеры в строке хоста

  • Нажмите Создать триггер справа (или на имени триггера, чтобы изменить существующий триггер)

  • Введите параметры триггера в виде

Конфигурация

Вкладка Trigger содержит все основные атрибуты триггера.

Все обязательные поля ввода отмечены красной звездочкой.

Параметр Описание
Имя Имя триггера.
Поддерживаемые макросы: {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {HOST.CONN}, {HOST. DNS }, {HOST.IP}, {ITEM.VALUE}, {ITEM.LASTVALUE}, {ITEM.LOG. *} И {$ MACRO} пользовательские макросы.
Макросы $ 1, $ 2… $ 9 могут использоваться для ссылки на первую, вторую… девятую константу выражения.
Примечание : макросы $ 1–9 будут разрешены правильно, если они ссылаются на константы в относительно простых, понятных выражениях. Например, имя «Загрузка процессора выше $ 1 на {HOST.NAME}» автоматически изменится на «Загрузка процессора выше 5 на новом хосте», если выражение будет {New host: system.cpu.load [percpu, avg1] .last ()}> 5
Имя события Если определено, это имя будет использоваться для создания имени проблемного события вместо имени триггера.
Имя события может использоваться для создания значимых предупреждений, содержащих данные о проблеме (см. Пример).
Поддерживается тот же набор макросов, что и в имени триггера, плюс макросы выражений {TIME} и {? EXPRESSION}.
Поддерживается начиная с Zabbix 5.2.0.
Рабочие данные Рабочие данные позволяют определять произвольные строки вместе с макросами. Макросы будут динамически преобразовываться в данные в реальном времени в Мониторинг Проблемы .В то время как макросы в имени триггера (см. Выше) будут преобразованы в свои значения в момент возникновения проблемы и станут основой для статического имени проблемы, макросы в рабочих данных сохраняют возможность динамического отображения самой последней информации.
Поддерживается тот же набор макросов, что и в имени триггера.
Поддерживается начиная с Zabbix 4.4.0.
Уровень серьезности Установите необходимый уровень серьезности триггера, нажимая кнопки.
Выражение Логическое выражение, используемое для определения условий проблемы.
Проблема возникает после того, как все условия, включенные в выражение, выполнены, то есть выражение оценивается как ИСТИНА. Проблема будет решена, как только выражение будет оценено как ЛОЖЬ, если дополнительные условия восстановления не указаны в Выражение восстановления .
Генерация OK событий Опции генерации OK событий:
Выражение — OK события генерируются на основе того же выражения, что и проблемные события;
Выражение восстановления — События ОК генерируются, если выражение проблемы оценивается как ЛОЖЬ, а выражение восстановления оценивается как ИСТИНА;
Нет — в этом случае триггер никогда не вернется в состояние ОК сам по себе.
Поддерживается начиная с Zabbix 3.2.0.
Выражение восстановления Логическое выражение (необязательно), определяющее дополнительные условия, которые должны быть выполнены, прежде чем проблема будет решена после того, как исходное выражение проблемы уже было оценено как FALSE.
Выражение восстановления полезно для гистерезиса триггера. , а не , возможно решить проблему одним только выражением восстановления, если выражение проблемы все еще ИСТИНА.
Это поле доступно только в том случае, если «Выражение восстановления» выбрано для Создание события OK .
Поддерживается начиная с Zabbix 3.2.0.
Режим генерации ПРОБЛЕМНОГО события Режим генерации проблемных событий:
Одиночный — единичное событие генерируется, когда триггер впервые переходит в состояние «Проблема»;
Несколько — событие генерируется после каждой оценки триггера «Проблема».
OK событие закрывается Выберите, если OK событие закрывается:
Все проблемы — все проблемы этого триггера
Все проблемы, если значения тегов совпадают с — только те триггерные проблемы с совпадающими значениями тегов событий
Поддерживается начиная с Zabbix 3.2.0.
Тег для сопоставления Введите имя тега события, которое будет использоваться для корреляции событий.
Это поле отображается, если для события выбрано «Все проблемы, если значения тегов совпадают». Событие OK закрывает свойство и является обязательным в этом случае.
Поддерживается начиная с Zabbix 3.2.0.
Разрешить закрытие вручную Установите этот флажок, чтобы разрешить ручное закрытие проблемных событий, созданных этим триггером. Ручное закрытие возможно при подтверждении проблемных событий.
Поддерживается начиная с Zabbix 3.2.0.
URL Если не пустой, введенный здесь URL доступен в виде ссылки в нескольких местах внешнего интерфейса, например при нажатии на название проблемы в Мониторинг → Проблемы ( URL параметр в меню Триггер ) и Проблемы виджета приборной панели.
Поддерживается тот же набор макросов, что и в имени триггера, плюс {EVENT.ID}, {HOST.ID} и {TRIGGER.ID}. Обратите внимание, что пользовательские макросы с секретными значениями не будут разрешены в URL-адресе .
Описание Текстовое поле, используемое для предоставления дополнительной информации об этом триггере. Может содержать инструкции по устранению конкретной проблемы, контактные данные ответственного персонала и т. Д.
Поддерживается тот же набор макросов, что и в имени триггера.
Включено Если снять этот флажок, триггер будет отключен.

Вкладка Tags позволяет определять теги уровня триггера. Все проблемы этого триггера будут отмечены введенными здесь значениями.

Кроме того, опция Inherited и trigger tags позволяет просматривать теги, определенные на уровне шаблона, если триггер исходит из этого шаблона. Если существует несколько шаблонов с одним и тем же тегом, эти теги отображаются один раз, а имена шаблонов разделяются запятыми. Триггер не «наследует» и не отображает теги уровня хоста.

Параметр Описание
Имя / значение Установите пользовательские теги для отметки событий запуска.
Теги — это пара имени и значения тега. Вы можете использовать только имя или связать его со значением. Триггер может иметь несколько тегов с одинаковым именем, но разными значениями.
Пользовательские макросы, контекст пользовательского макроса, макросы низкоуровневого обнаружения и макрофункции с {{ITEM.VALUE}} , {{ITEM.LASTVALUE}} и макросы низкоуровневого обнаружения поддерживаются в тегах событий.Макросы низкоуровневого обнаружения можно использовать в контексте макроса.
Макрос {TRIGGER.ID} поддерживается в значениях тега триггера. Это может быть полезно для идентификации триггеров, созданных из прототипов триггеров, и, например, для подавления проблем, связанных с этими триггерами во время обслуживания.
Если общая длина развернутого значения превышает 255, оно будет сокращено до 255 символов.
Просмотреть все макросы, поддерживаемые для тегов событий. Теги событий
могут использоваться для корреляции событий в условиях действия, а также будут отображаться в виджете Monitoring Problems или в виджете Problems .
Поддерживается начиная с Zabbix 3.2.0.

Вкладка Dependencies содержит все зависимости триггера.

Щелкните Добавить , чтобы добавить новую зависимость.

Вы также можете настроить триггер, открыв существующий, нажав кнопку Clone , а затем сохранив его под другим именем.

Проверка выражений

Можно проверить настроенное выражение триггера на предмет того, каким будет результат выражения в зависимости от полученного значения.

В качестве примера взято следующее выражение из официального шаблона:

 {Cisco IOS SNMPv2: sensor.temp.value [ciscoEnvMonTemperatureValue. {# SNMPINDEX}]. Avg (5m)}> {$ TEMP_WARN}
или же
{Cisco IOS SNMPv2: sensor.temp.status [ciscoEnvMonTemperatureState. {# SNMPINDEX}]. Last (0)} = {$ TEMP_WARN_STATUS} 

Чтобы проверить выражение, щелкните Конструктор выражения под полем выражения.

В конструкторе Expression перечислены все отдельные выражения.Чтобы открыть окно тестирования, щелкните Test под списком выражений.

В окне тестирования вы можете ввести значения выборки (в данном примере «80, 70, 0, 1»), а затем просмотреть результат выражения, нажав кнопку Test .

Виден результат как отдельных выражений, так и всего выражения.

Результат «ИСТИНА» означает, что указанное выражение верное. В этом конкретном случае A, «80» больше, чем указанное значение {$ TEMP_WARN}, в этом примере «70».Соответственно появляется «ИСТИННЫЙ» результат.

Результат «ЛОЖЬ» означает, что указанное выражение неверно. В этом конкретном случае B, {$ TEMP_WARN_STATUS}, «1» в этом примере, должно быть равно указанному значению «0», что неверно. Соответственно появляется результат «ЛОЖЬ».

Выбранный тип выражения — «ИЛИ» / «ИСТИНА». Если хотя бы одно из указанных условий (в данном случае A или B) — ИСТИНА, общий результат также будет ИСТИННЫМ. Это означает, что текущее значение превышает значение предупреждения и возникла проблема.

Преимущества видео-триггера в проблемном обучении

Фон: Традиционно бумажные футляры используются как «триггеры» для стимулирования обучения в рамках проблемного обучения (PBL). Однако видео может быть лучшим средством, поскольку оно сохраняет исходный язык, способствует активному извлечению информации, позволяет избежать обезличивания пациентов и позволяет напрямую наблюдать за клиническими консультациями.Короче говоря, он знакомит студентов со сложностью реальных клинических проблем.

Цель: Целью исследования является выяснить, предпочитают ли студенты и фасилитаторы, привыкшие к бумажным футлярам, ​​видео-триггеры или бумажные футляры, а также причины их предпочтения.

Метод: После того, как студенты и фасилитаторы завершили видеоурок по PBL, их ответы были измерены с помощью структурированного вопросника с использованием модифицированной шкалы Лайкерта.

Полученные результаты: Ответили в общей сложности 257 студентов (92%) и 26 фасилитаторов (100%). Большинство студентов и фасилитаторов считали, что использование видео-триггеров может улучшить наблюдательность и клиническое мышление учащихся, помочь им интегрировать различную информацию, лучше понять случаи и мотивировать их к обучению. Они нашли PBL с использованием видео-триггеров более интересным и предпочли PBL с использованием бумажных футляров.

Вывод: И студенты, и фасилитаторы предпочитают видео-триггеры бумажным футлярам в PBL.

триггеров | Документация по пользовательскому интерфейсу платформы Zapier

Каждый Zap запускается с помощью триггера, основанного либо на подписке на веб-перехватчик, которая отслеживает новые данные по мере их поступления, либо на запросе API GET для периодической проверки наличия новых данных.

Триггеры — это то, как пользователи вашего приложения могут запускать автоматизированные рабочие процессы всякий раз, когда они добавляют или обновляют что-то в вашем приложении. Новые электронные письма, сообщения, сообщения в блогах, подписчики, записи форм, коммиты и многое другое — это исходные данные, лежащие в основе каждого Zap.

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

Примечание : триггеры отображаются в том порядке, в котором они добавлены к интеграции Zapier, поэтому не забудьте сначала добавить наиболее важные триггеры вашего приложения.

Типы триггеров

Zapier включает только один шаг Trigger , но ваше приложение может использовать триггеры несколькими способами. Большинство триггеров Zapier запускаются, когда новые элементы добавляются в приложение, базу данных, проект или файл. Некоторые приложения также включают триггеры обновления, которые запускаются всякий раз, когда в приложении обновляется элемент, что полезно, чтобы помочь пользователям поддерживать актуальность данных во всех приложениях, использующих Zapier.

Чтобы создать стандартный триггер, используйте конечную точку API, которая перечисляет новые элементы в массиве, отсортированном в обратном хронологическом порядке. Обычно это наиболее распространенные конечные точки API для чтения данных с платформы. Если ваш API по умолчанию перечисляет элементы в другом порядке, но позволяет сортировку, включите поле порядка или сортировки в свой вызов API.

Чтобы создать триггер обновления, используйте конечную точку API, которая перечисляет все элементы, как новые, так и обновленные, или, альтернативно, конечную точку, которая перечисляет только обновленные элементы.Zapier требуется составное поле id , которое изменяется при каждом обновлении элемента (в идеале z.hash ('md5', item.id + item.updated_at) ), поэтому последующие обновления не будут отфильтрованы дедуппером Zapier. Опять же, это должно вернуть массив в обратном хронологическом порядке. Обязательно включите в описание триггера подробные сведения, которые позволят пользователям узнать, какие обновления будут запускать этот триггер.

1. Сконфигурируйте настройки триггера

Начните создание триггера с добавления подробностей о том, что этот триггер делает.Вам необходимо добавить как внутренние данные для идентификации вашего триггера, так и текст, предназначенный для пользователя, чтобы описать триггер пользователям.

Добавьте к триггеру каждое из следующих значений:

  • Ключ : Уникальный идентификатор этого триггера для ссылки на него внутри Zapier. Необязательно использовать тот же идентификатор, что и в вашем API. Не показывается пользователям.
  • Имя : понятное для человека простое текстовое имя для этого триггера, обычно с таким глаголом, как New или Updated , за которым следует имя элемента, который отслеживается в вашем приложении.Отображается в редакторе Zap и на маркетинговых страницах каталога приложений Zapier.
  • Существительное : единственное существительное, которое описывает то, что отслеживает этот триггер, используется Zapier для автоматической генерации текста в Zaps о вашем триггере.
  • Описание : текстовое предложение, описывающее, что делает триггер и когда его следует использовать. Отображается в редакторе Zap и на маркетинговых страницах каталога приложений Zapier.
  • Параметры видимости : возможность выбрать, когда будет отображаться этот триггер. Важно выбран по умолчанию, и по умолчанию этот триггер будет отображаться внутри шагов триггера Zap. Выберите Нет , если вы хотите, чтобы этот триггер был скрыт по умолчанию, полезно для редко используемых триггеров. Или выберите Скрытый , если этот триггер не должен показываться пользователям.

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

2. Форма ввода триггера сборки (необязательно)

Большинство триггеров не требуют настройки пользователем. Когда что-то новое добавляется в приложение, API отправляет данные в Zapier, чтобы запустить Zap, без каких-либо подробностей. Если ваш API поддерживает фильтрацию или требует конкретных сведений о проекте, папке или других сведениях о расположении данных, вам может потребоваться добавить форму ввода, в которую пользователи могут добавлять необходимые сведения.

На второй вкладке настроек триггера визуального конструктора добавьте поля ввода для каждого элемента данных, который вам нужен от пользователей для триггера.Ознакомьтесь с нашим Руководством по конструктору ввода, чтобы получить полную информацию о том, как создать форму ввода, а также о каждом из доступных типов полей и опций.

После заполнения формы — или если вам не нужно добавлять форму ввода — щелкните вкладку API Configuration settings, чтобы указать, как Zapier будет получать данные из вашего приложения и протестировать триггер.

3. Войдите в конфигурацию API

Последняя часть добавления триггера — настройка — это настройка API.

Zapier использует либо вызов API опроса для периодической проверки наличия новых или обновленных данных, либо ловушку REST с URL-адресом подписки, где Zapier может подписаться для автоматического получения новых или обновленных данных.

Ожидается, что результаты API опроса

будут массивом с 0 или более объектами, которые будут переданы в модуль дедупликации Zapier. Дедуппер вернет все элементы, которые не были получены ранее, и использует их для выполнения последующих шагов в пользовательском Zap.

Триггер опроса

Zapier по умолчанию выбирает триггер Polling , где Zapier отправляет запрос GET на URL-адрес конечной точки API для запроса новых данных, а в Live Zap Zapier автоматически дедуплицирует и сортирует самые новые данные из API.Live Zaps автоматически опрашивает URL-адрес на предмет новых данных каждые 5–15 минут, в зависимости от тарифного плана Zapier пользователя.

Чтобы добавить триггер опроса, выберите Опрос в верхней части страницы настроек, затем введите URL-адрес API в поле Конечная точка API . Если ваш URL-адрес API требует определенных данных в URL-адресе, введите следующий текст в URL-адрес, где ваш API-интерфейс ожидает эти данные, заменив ключ для ключа поля ввода соответствующими данными из формы ввода, созданной вами ранее:

{{связка.inputData.key}}

В противном случае Zapier автоматически отправит любые другие данные поля ввода в теле запроса с вызовом API.

Если вы планируете использовать этот триггер для включения раскрывающихся меню на других этапах Zap (например, для поиска пользователей, проектов, папок и других данных приложений, часто используемых для создания новых элементов), и если ваш вызов API может разбивать данные на страницы, проверьте Поддержка разбивки на страницы (подробнее о разбивке на страницы см. Ниже).

Если вашему API требуются какие-либо дополнительные данные, вы можете добавить их с помощью кнопки Показать параметры .Или, если необходимо, нажмите Перейти в режим кода , чтобы написать собственный вызов API в коде JavaScript. При первом переключении в режим кода Zapier переведет настройки формы в код, чтобы вы могли начать с уже настроенными основами. Однако, если вы переключитесь обратно в режим формы, Zapier не перенесет никаких изменений из режима кода в форму.

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

Спусковой крючок для упора

В качестве альтернативы, если ваше приложение поддерживает перехватчики REST или подписки на веб-перехватчики, которыми можно управлять с помощью REST API, выберите Перехватчик REST для своего триггера. Более подробная информация о хуках REST находится здесь, но обратите внимание, что реализация Zapier не поддерживает подтверждение личности. Это позволит вашему триггеру работать почти в реальном времени, когда ваше приложение отправляет данные в Zapier, запускает Zaps, как только новые данные поступают в ваше приложение, вместо того, чтобы ждать, пока Zapier получит новые данные из вашего API.

С триггером REST Hook вам необходимо добавить URL-адрес подписки и отказа от подписки, который Zapier может использовать для настройки и удаления подписки на перехватчик.

В дополнение к URL-адресам подписки и отмены подписки полезно добавить URL-адрес списка выполнения, где Zapier должен проверять наличие недавних элементов. Это будет использоваться для получения данных, когда пользователи тестируют Zap, поэтому им не нужно отключаться во время тестирования.

Наконец, вы можете настроить код для оценки данных, которые веб-перехватчики вашего приложения передают Zapier.По умолчанию Zapier включает return [bundle.cleanedRequest]; , чтобы вернуть объект из предыдущего шага. Если ваши данные необходимо преобразовать или они включают несколько объектов, добавьте пользовательский код для анализа данных ответа в bundle.cleanedRequest в Perform и превратите его в массив объектов, как в этом примере кода.

Оба метода Perform и Perform List должны возвращать массивы. Объект (ы) в массивах должен иметь одинаковую структуру данных, чтобы данные в реальном времени вели себя так, как ожидалось, на основе тестовых данных, отображаемых пользователем.Подробнее об этом см. В разделе «Образцы данных» в FAQ.

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

→ Узнайте больше о том, как работают крючки Zapier REST, в нашем FAQ

Тестовые вызовы триггера API

После того, как вы закончите добавлять настройки триггера для опроса или отдыха, пора убедиться, что все, что вы создали, работает и получает правильные данные из Zapier.В разделе Test Your API Request вы должны увидеть учетную запись приложения, которую вы добавили при тестировании аутентификации. Если нет, сначала добавьте учетную запись приложения.

Затем, если вы добавили форму ввода для триггера, добавьте данные для каждого из этих полей. Обязательно используйте реальные данные, которые будут работать в вашем приложении, так как Zapier будет использовать их в вызове API к вашему приложению для получения данных в реальном времени из вашей аутентифицированной учетной записи приложения.

Нажмите Проверить результат , и если ваш триггер настроен правильно, вы увидите зеленую галочку и сообщение Request Successful в правом верхнем углу.

Zapier покажет необработанный ответ в формате JSON от вашего API на вкладке Response с каждым полем вывода, которое ваше приложение отправляет в Zapier. Вы можете увидеть данные, отправленные Zapier в ваш API, на вкладке Bundle или необработанный HTTP-запрос на вкладке HTTP .

Определить образцы данных и поля вывода

Sample Data — это пример данных Zapier, если пользователи не тестируют триггер или действие. Поля вывода дают вашим данным API понятные имена в последующих шагах Zap.

Последний шаг в создании нового триггера для интеграции Zapier — это Определить ваш выход . Здесь Zapier запрашивает как образцы данных, так и поля вывода. И то, и другое поможет улучшить работу с Zapier для ваших пользователей, а образцы данных особенно важны для триггеров.

Sample Data — это данные по умолчанию, которые Zapier показывает пользователям при создании Zap с помощью этого триггера. В редакторе Zap Zapier попросит протестировать шаг Zap после того, как пользователи его настроят.С помощью триггеров Zapier будет пытаться получить недавно добавленные или обновленные элементы во время теста.

Если пользователи торопятся, они могут пропустить этап тестирования. Вместо этого Zapier покажет образцы данных. Или, если в подключенной учетной записи еще нет данных для этого элемента, Zapier по умолчанию будет отображать образцы данных вместо того, чтобы отображать ошибку, что элементы недоступны.

Обратите внимание, что независимо от того, сколько элементов было извлечено при тестировании, Zap Editor покажет только до трех образцов во время первоначального теста.Если позже будут добавлены новые элементы, их можно будет вытащить с помощью «Загрузить еще», но старые элементы использоваться не будут.

В поле Sample Data либо нажмите кнопку Use Response from Test Data , чтобы импортировать поля, отправленные вашим приложением в Zapier в предыдущем тесте, либо добавьте свои собственные поля в формате JSON. Сохраняйте только самые важные поля и убедитесь, что данные, которые вы включаете в эти поля, не являются личными, неидентифицируемыми данными тестирования, которые могут быть общедоступными.

Затем нажмите Generate Output Field Definitions , и Zapier построит таблицу ваших полей под Output Fields .Добавьте удобное имя для каждого поля и выберите тип поля. Щелкните Save Output & Finish , чтобы завершить последнюю часть триггера.

Теперь вы можете создать новый Zap, используя свой триггер, чтобы протестировать триггер вживую внутри Zapier.

Как изменить порядок триггеров в интеграции Zapier

Когда пользователи выбирают ваше приложение в качестве шага триггера в Zap, они будут видеть триггеры, помеченные по умолчанию как Important , а при любой другой интеграции, скрытой в меню , отображаются менее общие параметры .

Триггеры изначально перечислены в том порядке, в котором вы добавляете их в свою интеграцию. Когда люди будут использовать вашу интеграцию, Zapier будет сначала показывать самые популярные триггеры вашей интеграции, автоматически меняя их порядок в зависимости от популярности. Вы не можете настроить триггер так, чтобы он всегда располагался в определенном порядке в списке триггеров интеграции.

Однако вы можете изменить важность триггера и, таким образом, выбрать, будет ли он отображаться по умолчанию или нет в любой момент. Откройте триггер в визуальном конструкторе Zapier, прокрутите страницу вниз до меню Visibility Options .Выберите Важный , чтобы триггер отображался по умолчанию, Нет , чтобы триггер в отображал менее распространенные параметры меню , и Скрытый , если вы хотите, чтобы пользователи не могли использовать этот триггер (часто используется, если триггер используется только для питания динамических полей).

Как удалить триггеры из интеграции Zapier

Если ваше приложение больше не поддерживает триггер или вы хотите полностью его пересобрать, вы можете удалить его из Zapier в любое время.Чтобы удалить триггер из интеграции, откройте вкладку Триггеры в визуальном конструкторе Zapier, щелкните значок шестеренки рядом с триггером, который вы хотите удалить, выберите Удалить и подтвердите, что хотите удалить триггер.

Вы не можете восстановить удаленные триггеры, поэтому убедитесь, что вы выбрали правильные триггеры для удаления.

Примечание : удаляйте триггеры только из предварительных версий интеграции или из новых версий, которые позже будут развернуты для пользователей. Никогда не удаляйте триггер из общедоступной версии интеграции.

Триггеры Zapier по умолчанию выбирают новые или недавно обновленные данные для запуска Zaps, и ему нужно найти только последний добавленный элемент. Тем не менее, триггеры также могут быть встроены в раскрывающиеся меню действий Zapier, и там им нужно найти все возможные элементы для заполнения меню.

Вместо одного элемента в вызовах API этих триггеров для динамических меню часто обнаруживаются десятки или сотни элементов. Многие API-интерфейсы позволяют разбивать результаты на страницы, похожие на страницы результатов поиска или записи в блогах.Первый вызов API вернет первый набор результатов — часто от 20 до 100. Если вам нужны дополнительные записи, вы можете сделать новый вызов API, запрашивая страницу 2 и получить следующий набор результатов, повторяя страницы до тех пор, пока API не отправит всевозможные варианты.

Пример раскрывающегося меню в редакторе Zap с возможностью загрузки дополнительных вариантов через разбивку на страницы

Чтобы включить разбиение на страницы, установите флажок Support Paging в настройках API при создании триггера Zapier.Это включает значение bundle.meta.page Zapier, которое отслеживает, какая страница загружена Zapier, а также Проверить приложение и перезагрузить, чтобы ввести новые варианты выбора. вариант в раскрывающихся меню редактора Zapier, обращенных к пользователю.

В визуальном редакторе Zapier включите значение bundle.meta.page, чтобы запросить правильную страницу результатов

Затем вам нужно включить этот bundle.meta.page в вызов API, чтобы Zapier динамически извлекал правильную страницу, поскольку Zapier не включает ее автоматически.Сначала установите флажок Support Paging . Затем нажмите кнопку Показать параметры конечной точки API и добавьте новый параметр URL для параметра разбиения на страницы вашего API (или, при желании, добавьте его в заголовки HTTP, если ваш API ожидает там значение разбиения на страницы). Используйте имя поля запроса страницы из вашего API слева и {{bundle.meta.page}} справа, чтобы Zapier вставил правильное значение страницы.

Режим кода Zapier позволяет настраивать вызовы API и группировать анализ ответов

Набор

Zapier’s .Значение meta.page использует нумерацию с отсчетом от нуля. В первый раз, когда Zapier извлекает данные из вашего API, он использует значение страницы 0 , затем 1 во второй раз и так далее. Если ваш API ожидает, что первый вызов API запросит страницу 1 , с 2 для второй страницы и т. Д., Вам необходимо настроить вызов API в редакторе кода Zapier.

Самый простой способ сделать это — сначала установить вызов API в режиме формы, а затем щелкнуть переключатель Переключиться в режим кода .Zapier преобразует значения вашей формы в код, и если ваш API работает правильно, помимо разбивки на страницы, значения по умолчанию в режиме кода будут работать. Все, что вам нужно сделать, это отредактировать код нумерации страниц. Если вам нужна нумерация, отличная от нуля, следующий код для вашего заголовка разбивки на страницы должен работать (с заменой правильного термина, который ваш API использует для разбивки на страницы):

'страница': bundle.meta.page + 1,

Чтобы проверить триггер разбиения на страницы, сначала создайте действие Zapier, которое использует этот триггер в динамическом раскрывающемся списке.Затем создайте новый Zap в редакторе Zap, доступном пользователю, который использует ваше действие с раскрывающимся списком. Щелкните раскрывающийся список, прокрутите до конца и нажмите кнопку Проверить приложение и ввести дополнительные варианты .

Post A Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *