蓝蓝 发表于 2020-12-5 16:23:30

系统管理-功能菜单-触发器和通知

本帖最后由 adminlily 于 2020-12-5 16:26 编辑

触发器和通知
iTop集成了一个连接到对象生命周期的通知系统。这允许管理员在给定类的对象进入或离开特定状态、创建新对象、门户发生更新或达到某些阈值时,定义邮件通知规则。
通知机制分为两部分:

[*]触发器定义了什么时候发送通知。例如:当工单流转到“已分配”状态时。
[*]操作定义了触发时要执行的操作。目前, 仅有的一种操作就是外发邮件。

对于一个触发器可以定义多个执行的动作和执行顺序。同时,一个给定的操作可以由多个触发器触发。
使用“管理工具”菜单的“通知”来管理触发器和动作:
https://www.itophub.io/wiki/media?cache=&media=2_7_0%3Aadmin%3Anotifications.png
[*]“触发器”选项卡显示所有存在的触发器。
[*]“操作”选项卡显示所有动作。

创建一个操作

在创建有用的触发器之前,至少必须定义一个操作。邮件操作是格式化发送的消息、定义的消息内容以及主题、发送人和接收人的模板。要创建一个新操作,进入“操作”选项卡并单击“新建…”。出现以下向导:https://www.itophub.io/wiki/media?media=2_7_0%3Aadmin%3Anew-action.jpg
邮件操作的必填字段有:

[*]主题:消息的主题。可以使用下面描述的占位符动态构建。
[*]正文:消息的正文。可以使用下面描述的占位符动态构建。默认情况下,iTop发送MIME格式类型为text/html的所有消息给邮件主体。
[*]发件人:这个字段包含静态的邮件地址。注意,一些邮件服务器会拒绝"发件人"地址无效的邮件。其他领域:描述:标识发送邮件性能或绩效用途的自由文本。在发送邮件消息内未发送。状况:在生产中:发送邮件发送给通过To,Cc和Bcc查询检索到的人员正在测试中:发送邮件发送到测试收件人发送邮件地址无效:发送邮件未发送测试收件人:测试状况时使用发送邮件地址代替To,Cc和Bcc回复:静态发送邮件地址或占位符,例如$ this→team_id→发送邮件$。这是发送邮件消息的标准属性。当发送邮件在其邮件中的发送邮件上进行“答复”时,邮寄工具会自动将其用作要使用的地址。如果省略,则使用发件人地址。

定义收件人

在收件人、抄送人和秘密抄送人中,要被通知的联系人可以通过OQL查询定义。这允许为这个通知指定多个接收人,比如“所有跟这个工单有关的联系人”或者“所有与受影响网站有关的联系人”……(关于OQL查询的写法参考[:8082/bin/create/iTop/iTop%E6%96%87%E6%A1%A3%202.6/%E7%AE%A1%E7%90%86%E5%91%98%E6%8C%87%E5%8D%97/%E9%80%9A%E7%9F%A5/Object%20Query%20Language%20Reference/WebHome?parent=2+%E7%B3%BB%E7%BB%9F%E7%AE%A1%E7%90%86.2%5C.3+%E5%8A%9F%E8%83%BD%E9%85%8D%E7%BD%AE.%E9%80%9A%E7%9F%A5.WebHome]Object Query Language Reference获取更多信息)。
也就是说,OQL查询必须返回包括email属性的对象列表

[*]联系人
[*]人员
[*]团队

例如,为了通知名字起始为“John”的所有人,接收人字段将填写:
SELECT Person WHERE name LIKE 'John%'
查询可以包含占位符,占位符代表要发送通知的当前对象。this指代要发送的通知的当前对象。语法是:this→attribute。
例如,发送通知给一个工单的“发起人”的那个人,那么收件人字段将填写:
SELECT Person WHERE id= :this->caller_id
查询可以填写当前联系人的占位符,该联系人在事件的最初状态下执行了操作(如果用户没有链接到联系人,则可能会出现问题)。语法是:current_contact->attribute。
例如,当代理亲自触发事件时,不向代理发送通知,那么收件人字段将填写:
SELECT Person WHERE id= :this->agent_id AND id != :current_contact_id
从iTop 2.3开始, :current_contact->id 的语法也可以使用,它等同于current_contact_id ,甚至以更通用的方式 :current_contact->attribute。
如果查询返回为空,将不发送邮件。
通知附属于工单的所有人(好比在“联系人”选项卡的所有人)作为收件人使用的OQL查询如下:

消息内容和占位符

从iTop 2.3.0开始,消息的正文现在可以使用[ ttps://www.itophub.io/wiki/page?id=2_6_0%3Aadmin%3Arich_text_limitations]WYSIWYG HTML编辑器.
在“主题”和”正文”部分,可以使用占位符动态构建。使用的语法为$xxxx$这样的占位符。
对于收件人查询(收件人,抄送,密送)可用的占位符是和消息部分的可用占位符(主体,正文)是不同的。
有多种类型的占位符:

[*]$CONSTANT$ 引用称为常量的固定值。
[*]$this->function()$ 引用在触发操作的对象上下文中执行的内置函数。
[*]$this->attribute$ 引用触发该操作的对象的属性字段。
[*]$this->attribute_external_key->attribute$ 引用触发操作的对象的attribute_external_key字段所指向的对象的属性字段。
[*]$this->representation(attribute)$ 引用触发操作的对象的属性字段的内置表示。例:$ this - > html(name)。

这里查看各种不同的[ ttps://www.itophub.io/wiki/page?id=2_6_0%3Aadmin%3Aplaceholders]占位符类型
通知测试

为了测试一个操作,你可以使用“测试”和使用测试地址填写“测试收件人”。这种情况下,通知将发送到测试地址中。如果通知测试通过,那么改变它的状态为“生产”,让通知流动到它的实际接收人。
如果你想取消动作,只要把它的状态设置为“停用”。
创建触发器

创建一个新的触发器,在“触发器”选项卡给定的目录下拉菜单中,点击“新建”。出现下面的向导:
https://www.itophub.io/wiki/media?w=500&tok=57f084&media=2_7_0%3Aadmin%3Anew-trigger1.png
需要去选择你想创建的触发器的类型:

[*]当新对象被创建的时候 = 触发器 (对象创建时)
[*]当对象进入指定状态的时候 = 触发器 (进入指定状态)
[*]当对象离开指定状态的时候 = 触发器 (离开指定状态时)
[*]当对象通过iTop门户更新的时候 = 触发器 (工单更新时)
[*]当解决时间或指派时间达到指定阈值的时候 = 触发器 (基于阈值)
更多的触发器能够通过诸如以下的特定扩展添加:

[*]触发器 (日志更新) 通过扩展 Email Reply
[*]触发器 (邮件更新) 通过扩展Ticket Creation from eMails

如果您想触发仅限于通过电子邮件创建的工单的通知“(对象创建时)”,请在触发过滤器中使用origin='mail'。一旦选择了触发器的类型,那么可以得到如下表单:
https://www.itophub.io/wiki/media?w=400&tok=d4416d&media=2_7_0%3Aadmin%3Anew-trigger2.png
任何类型的触发器都需要指定三个参数:

[*]描述用来进一步标识触发器的用途。
[*]类定义此触发器适用的对象的类。
[*]过滤器 限制触发器应用的对象.它是一个[ ttps://www.itophub.io/wiki/page?id=2_6_0%3Aoql%3Astart]OQL查询,返回激活触发器的所有对象。留空代表:预期类的所有对象。
https://www.itophub.io/wiki/media?cache=&w=695&h=587&tok=02c493&media=2_7_0%3Aadmin%3Atrigger-context.png
根据触发器的类型,将需要定义附加的参数:

[*]进入/离开一个状态时,都需要状态值。对于“状态”来说,输入的值是数据模型中定义的状态的内部代码。状态代码可以在“数据模型”的“生命周期”选项卡的“状态和转换”区域的中看到。状态代码是在括号里面的值。
[*]基于阈值需要计时器和阈值。计时器的期望值是一个属性代码。用户请求和事件工单附带两个计时器:tto和ttr。阈值是计时器目标的百分比。使用标准数据模型,可以使用75或100。
“触发器操作”选项卡定义了“触发器操作”选项卡定义了这个触发器触发时执行的操作。记住,一个操作可以链接到多个触发器,因此一些操作可以复用。“顺序”字段决定了给定触发器触发的操作的执行顺序(操作按照由小到大的顺序执行)。
测试触发器

强烈建议在转移到生产之前使用“测试”状态测试触发器和操作。对于指定的工单(用户请求,事件,变更),使用在工单详情的选项卡“通知”,可以看到通知已经发送。
https://www.itophub.io/wiki/media?media=2_7_0%3Aadmin%3Arequest-notifications.jpg
你可以使用“管理工具”/“运行查询”页面列出所有已发送和失败的通知,运行查询:SELECT EventNotification
如果你在Linux上运行iTop,那么要确保在php.ini中的变量“sendmail_path”的值。例如:
sendmail_path = "/usr/sbin/sendmail -t -i"
不同的环境,配置不同。例如:可以使用SSMTP作为真实邮件服务器的代理,像下面的链接中所描述的:index.php/2008/10/21/sending-email-from-your-system-with-ssmtp/
如果再Window上运行iTop,你需要确保php.ini文件还有下面语句:SMTP = <smtp server>smtp_port = 25
为了测试邮件通知,可以使用“测试页面”(在“通知”页面上的链接)或者输入:
http://<itop server location>/setup/email.test.php
这个测试页面执行了PHP配置检查,并且允许发送普通文本邮件到你所选的接收人。对于验证服务器的PHP配置能否正确发送电子邮件是很有用的。
 https://www.itophub.io/wiki/media?media=2_7_0%3Aadmin%3Aemail-test.jpg
邮件配置

iTop2.0支持两种方式发送邮件:PHP内置的邮件功能或使用Swift Mailer library的SMTP(与iTop一起安装)。配置参数email_transport决定了iTop采用哪种方式发送邮件。如果email_transport的值是PHPMail(默认),那么就采用内置邮件功能。如果是SMTP,就采用Swift Mailer 的SMTP。
如果使用PHP的邮件功能还需要语言设置。从PHP documentation获取更多信息。
使用SMTP传输时,可以在iTop配置文件中设置以下参数:

配置参数类型可见描述默认值
email_transport_smtp.encryption串不tls 或ssl (可选)
email_transport_smtp.host串不主机名或IP地址(可选)本地主机
email_transport_smtp.password串不身份验证密码(可选)
email_transport_smtp.port整数不端口号(可选)25
email_transport_smtp.username串不身份验证的用户(可选)
使用默认配置(PHP邮件)看起来更简单些,缺点是失败后没有报告。例如,对于一个配置问题,你可能得到错误信息“消息没有有效的收件人”。更多信息参考Swift Mailer transports documentation。因此,我们强烈建议使用能返回详细错误信息的SMTP传输。
通知和应用程序响应

发送邮件是相对慢的操作。取决于邮件服务器,发送邮件会花费几秒时间(建立服务器的连接,发送数据,等等)。当一个工单在iTop中创建或更新时,发送几封邮件要取决于你的通知配置。这可能需要几秒钟来完成。为了改善应用程序的响应,可以在Web服务器后台用异步进程发送邮件。激活异步发送通知的方式是,在配置文件里设置 'email_asynchronous' ⇒ true,还要确保[ ttps://www.itophub.io/wiki/page?id=2_6_0%3Aadmin%3Acron]后台进程启动和运行。
如果你的通知很多,注意直接使用SMTP要比PHP内置邮件功能(PHPMail)快,所以多一些配置也是值得的。
如果非常依赖于通知,请注意,使用SMTP传输的直接SMTP连接通常比PHP内置的邮件函数(PHPMail)快一些,因此额外的配置工作可能是值得的。
循序渐进的例子

教程:创建第一个通知
页: [1]
查看完整版本: 系统管理-功能菜单-触发器和通知