×

微信扫一扫,快捷登录!

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

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

触发器和通知

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

通知机制分为两部分:

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


对于一个触发器可以定义多个执行的动作和执行顺序。同时,一个给定的操作可以由多个触发器触发。

使用“管理工具”菜单的“通知”来管理触发器和动作:

  • “触发器”选项卡显示所有存在的触发器。
  • “操作”选项卡显示所有动作。


创建一个操作

在创建有用的触发器之前,至少必须定义一个操作。邮件操作是格式化发送的消息、定义的消息内容以及主题、发送人和接收人的模板。
要创建一个新操作,进入“操作”选项卡并单击“新建…”。出现以下向导:

邮件操作的必填字段有:

  • 主题:消息的主题。可以使用下面描述的占位符动态构建。
  • 正文:消息的正文。可以使用下面描述的占位符动态构建。默认情况下,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[/url]获取更多信息)。

也就是说,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编辑器[/url].

在“主题”和”正文”部分,可以使用占位符动态构建。使用的语法为$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]占位符类型[/url]

通知测试

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

如果你想取消动作,只要把它的状态设置为“停用”。

创建触发器

创建一个新的触发器,在“触发器”选项卡给定的目录下拉菜单中,点击“新建”。出现下面的向导:


需要去选择你想创建的触发器的类型:

  • 当新对象被创建的时候 = 触发器 (对象创建时)
  • 当对象进入指定状态的时候 = 触发器 (进入指定状态)
  • 当对象离开指定状态的时候 = 触发器 (离开指定状态时)
  • 当对象通过iTop门户更新的时候 = 触发器 (工单更新时)
  • 当解决时间或指派时间达到指定阈值的时候 = 触发器 (基于阈值)

更多的触发器能够通过诸如以下的特定扩展添加:

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


如果您想触发仅限于通过电子邮件创建的工单的通知“(对象创建时)”,请在触发过滤器中使用origin='mail'。
一旦选择了触发器的类型,那么可以得到如下表单:


任何类型的触发器都需要指定三个参数:

  • 描述用来进一步标识触发器的用途。
  • 类定义此触发器适用的对象的类。
  • 过滤器 限制触发器应用的对象.它是一个[ ttps://www.itophub.io/wiki/page?id=2_6_0%3Aoql%3Astart]OQL[/url]查询,返回激活触发器的所有对象。留空代表:预期类的所有对象。


根据触发器的类型,将需要定义附加的参数:

  • 进入/离开一个状态时,都需要状态值。对于“状态”来说,输入的值是数据模型中定义的状态的内部代码。状态代码可以在“数据模型”的“生命周期”选项卡的“状态和转换”区域的中看到。状态代码是在括号里面的值。
  • 基于阈值需要计时器和阈值。计时器的期望值是一个属性代码。用户请求和事件工单附带两个计时器:tto和ttr。阈值是计时器目标的百分比。使用标准数据模型,可以使用75或100。

“触发器操作”选项卡定义了
“触发器操作”选项卡定义了这个触发器触发时执行的操作。记住,一个操作可以链接到多个触发器,因此一些操作可以复用。“顺序”字段决定了给定触发器触发的操作的执行顺序(操作按照由小到大的顺序执行)。

测试触发器

强烈建议在转移到生产之前使用“测试”状态测试触发器和操作。
对于指定的工单(用户请求,事件,变更),使用在工单详情的选项卡“通知”,可以看到通知已经发送。


你可以使用“管理工具”/“运行查询”页面列出所有已发送和失败的通知,运行查询: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配置能否正确发送电子邮件是很有用的。

&#8195;

邮件配置

iTop2.0支持两种方式发送邮件:PHP内置的邮件功能或使用Swift Mailer library的SMTP(与iTop一起安装)。配置参数email_transport决定了iTop采用哪种方式发送邮件。如果email_transport的值是PHPMail(默认),那么就采用内置邮件功能。如果是SMTP,就采用Swift Mailer 的SMTP。

如果使用PHP的邮件功能还需要语言设置。从[  /manual/en/mail.configuration.php]PHP documentation[/url]获取更多信息。

使用SMTP传输时,可以在iTop配置文件中设置以下参数:

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

通知和应用程序响应

发送邮件是相对慢的操作。取决于邮件服务器,发送邮件会花费几秒时间(建立服务器的连接,发送数据,等等)。当一个工单在iTop中创建或更新时,发送几封邮件要取决于你的通知配置。这可能需要几秒钟来完成。为了改善应用程序的响应,可以在Web服务器后台用异步进程发送邮件。激活异步发送通知的方式是,在配置文件里设置 'email_asynchronous' &#8658; true,还要确保[ ttps://www.itophub.io/wiki/page?id=2_6_0%3Aadmin%3Acron]后台进程[/url]启动和运行。

如果你的通知很多,注意直接使用SMTP要比PHP内置邮件功能(PHPMail)快,所以多一些配置也是值得的。

如果非常依赖于通知,请注意,使用SMTP传输的直接SMTP连接通常比PHP内置的邮件函数(PHPMail)快一些,因此额外的配置工作可能是值得的。

循序渐进的例子

教程:创建第一个通知

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x




上一篇:系统管理-功能菜单-总体配置
下一篇:系统管理-后台管理-数据库集成
蓝蓝

写了 314 篇文章,拥有财富 1668,被 6 人关注

您需要登录后才可以回帖 登录 | 立即注册
B Color Link Quote Code Smilies

成为第一个吐槽的人

Powered by IT 运维管理
返回顶部