Show last authors
1 = 通知 =
2
3
4 iTop 集成了与生命周期相关的通知系统 的对象。这允许管理员定义电子邮件 给定类的对象进入或离开时的通知规则 指定状态、创建新对象时、更新 从门户发生,或者当达到特定阈值时发生。
5
6
7 通知机制分为两部分:
8
9 * (((
10 触发器定义**何时**通知 必须发送。示例:当票证达到状态 “已分配”。
11 )))
12 * (((
13 操作**定义将**要执行的操作。 在当前版本的 iTop 中,唯一可用的 action 类型 包括发送电子邮件。
14 )))
15
16
17 对于给定的触发器,您可以定义多个操作 执行了 (Executed) 及其顺序。此外,还可以执行给定的操作 通过几个触发器。
18
19 使用“管理工具”菜单中的“通知”链接进行管理 触发器和操作:
20
21 [[image:https://www.itophub.io/wiki/media?w=500&tok=d3b973&media=3_0_0:admin:notifications.png]]
22
23 * (((
24 “Triggers” 选项卡显示所有已创建 触发器。
25 )))
26 * (((
27 “Actions” 选项卡显示所有操作
28 )))
29
30 (% class="wikigeneratedid" %)
31 == ==
32
33 (% class="wikigeneratedid" %)
34 == ==
35
36 == 创建一个 行动 ==
37
38
39 在创建有用的触发器之前,必须至少有一个操作是 定义。电子邮件操作是用于将邮件格式化为的模板 被发送,则定义消息的内容以及 主题、发件人和收件人。
40
41 要创建新操作,请转到“操作”选项卡并单击 “新...”。此时将显示以下向导:
42
43 [[[[image:https://www.itophub.io/wiki/media?w=400&tok=aabd40&media=3_0_0:admin:new-action.png||alt="新建操作"]]>>url:https://www.itophub.io/wiki/media?media=3_0_0:admin:new-action.png]]
44
45
46 电子邮件操作的必填字段包括:
47
48 * (((
49 **Name**:此的标识符 操作,以便您可以检索它。
50 **名称**:此操作的标识符,以便您可以检索它。
51 )))
52 * (((
53 **Subject**:的 消息。可以使用占位符动态构建,例如 如下所述。
54 **主题**:消息的主题。可以使用占位符动态构建,如下所述。
55 )))
56 * (((
57 **Body**:消息的正文。五月 使用占位符动态构建,如下所述。 默认情况下,iTop 发送所有带有 MIME 类型的 text/html 的消息 对于电子邮件的正文。
58 )))
59 * (((
60 **From (email):**静态 电子邮件地址或类似 .请注意,某些电子邮件 如果 “from” 地址不是 “from” 地址,服务器将拒绝邮件 有效。$this->agent_id->email$
61 )))
62 * (((
63 **From (label):**静态 label 或占位符(如 .$this->agent_id->friendlyname$
64 )))
65
66
67 当然,您必须指定**至少一个** 3 个字段,用于邮件收件人,**收件人、 抄送**或**密件抄送**。
68
69
70 其他字段:
71
72 * (((
73 **描述**:可识别的自由文本 电子邮件操作的用途。未在电子邮件中发送 消息。
74 )))
75 * (((
76 **状态**:
77
78 * 在生产中:将电子邮件发送给检索到的人员 按 To、Cc 和 Bcc 查询
79 * 正在接受测试:电子邮件将发送到电子邮件地址Test recipient
80 * Inactive:不发送电子邮件
81 )))
82 * (((
83 **Language**:要使用的语言 生成的电子邮件中插入的占位符。这会影响 主要是枚举的标签(如工单的状态)和 日期和时间格式。
84 )))
85 * (((
86 **HTML 模板**:一个文件 包含一个 HTML 模板,用于以良好的格式包装您的电子邮件。上传的 HTML 文件可以 包含所有常用占位符以及一个特定的占位符,该占位符指示内容所在的区域 将插入 **Body 的 Body**。$content$
87 )))
88 * (((
89 **测试收件人**:使用的电子邮件地址 而不是 To、Cc 和 Bcc (当状态为Being tested
90 )))
91 * (((
92 **回复 (email):**静态 电子邮件地址或类似 .这是一个标准 电子邮件消息的属性。它通过邮件自动使用 工具作为要使用的地址,当用户在 电子邮件。如果省略,则地址为 使用。$this->team_id->email$from
93 )))
94 * (((
95 **回复 (label):**静态 label 或占位符(如 .这是一个标准 电子邮件消息的属性。它通过邮件自动使用 tools 作为标签,当用户对电子邮件执行 “回复” 操作时 在他的邮件中。如果省略,则标签为 使用。$this->team_id->friendlyname$from
96 )))
97 * (((
98 **Ignore Notify Flag**: Whether or not to take into account the **Notify** flag on Contacts when determining the list of contacts to notify (in each of the To: CC: and Bcc: fields). When this field is set to “Yes”, the list of contacts to notify is exactly what is specifed by the OQL expression. If set to “No” a condition is automatically added to the OQL expression to exclude the Contacts which “Notify flag” is set to “No”.
99 **忽略通知标志**:在确定要通知的联系人列表时(在每个 收件人:CC: 和 Bcc: 字段中),是否考虑联系人上的**通知**标志。当此字段设置为“Yes”时,要通知的联系人列表正是 OQL 表达式指定的内容。如果设置为“否”,则会自动向 OQL 表达式添加一个条件以排除联系人,其中“通知标志”设置为“否”。
100 )))
101
102 (% class="wikigeneratedid" %)
103 === ===
104
105 (% class="wikigeneratedid" %)
106 === ===
107
108 === Defining recipients 定义收件人 ===
109
110 The contacts to be notified in the “To”, “Cc”, and “Bcc” are defined by an OQL query. This allows to specify multiple recipients for the notification, like “all the contacts attached to a ticket” or “all the contacts on the impacted site”.
111 要在“收件人”、“抄送”和“密件抄送”中通知的联系人由 OQL 查询定义。这允许为通知指定多个收件人,例如 “附加到工单的所有联系人” 或 “受影响站点上的所有联系人”。
112
113 If all list returned by the OQL queries are empty no email will be sent.
114 如果 OQL 查询返回的所有列表都为空,则不会发送电子邮件。
115
116 If the field “Ignore Notify flag” of this action is set to “No”, the condition is automatically appended to the OQL.notify = 'yes'
117 如果此操作的“忽略通知标志”字段设置为“否”,则该条件将自动附加到 OQL。notify = 'yes'
118
119 (% class="wikigeneratedid" %)
120 === ===
121
122 (% class="wikigeneratedid" %)
123 === ===
124
125 === Using predefined queries 使用预定义查询 ===
126
127 The easiest mean to define who will receive those notifications is to retrieve the query using the magnifier icon and select the appropriate query
128 定义谁将接收这些通知的最简单方法是使用放大镜图标检索查询并选择适当的查询
129
130 [[image:https://www.itophub.io/wiki/media?w=600&tok=d5166d&media=3_0_0:admin:predefined-queries-search.png]][[[[image:https://www.itophub.io/wiki/media?w=400&tok=ae4cfe&media=3_0_0:admin:predefined-queries.png]]>>url:https://www.itophub.io/wiki/media?media=3_0_0:admin:predefined-queries.png]]
131
132
133 它会在字段中复制相应的 OQL。你可以选择一个 每个字段的不同预定义查询:
134
135 |[[[[image:https://www.itophub.io/wiki/media?w=500&tok=369e0d&media=3_0_0:admin:predefined-queries-results.png]]>>url:https://www.itophub.io/wiki/media?media=3_0_0:admin:predefined-queries-results.png]]|To: 中的调用方:
136
137 {{{SELECT Person WHERE id= :this->caller_id}}}
138
139 (((
140 在 抄送 中,链接到工单的联系人:
141
142 {{{SELECT Contact
143 JOIN lnkContactToTicket AS L ON L.contact_id = Contact.id
144 WHERE L.ticket_id = :this->id}}}
145
146
147 在 Bcc 中,票证所属的团队成员 派出:
148
149 {{{SELECT Person AS P
150 JOIN lnkPersonToTeam AS L ON L.person_id=P.id
151 WHERE L.team_id = :this->team_id}}}
152 )))
153
154 如果查询不是 100% 的需要,您可以修改查询。
155
156 (% class="wikigeneratedid" %)
157 === ===
158
159 (% class="wikigeneratedid" %)
160 === ===
161
162 === 编写 自己的查询 ===
163
164 您可以从头开始编写自己的查询并对其进行测试:请参阅 [[Object Query 有关>>url:https://www.itophub.io/wiki/page?id=3_0_0:oql:start]]编写 OQL 的更多信息,请参阅语言 查询
165
166 [[[[image:https://www.itophub.io/wiki/media?w=600&tok=7a33de&media=3_0_0:admin:predefined-queries-test.png||alt="Icon to test a query"]]>>url:https://www.itophub.io/wiki/media?media=3_0_0:admin:predefined-queries-test.png]][[[[image:https://www.itophub.io/wiki/media?w=600&tok=a21b24&media=3_0_0:admin:run-query.png||alt="Run Query screen"]]>>url:https://www.itophub.io/wiki/media?media=3_0_0:admin:run-query.png]]
167
168
169 此 OQL 查询必须返回包含**单个** email 属性的对象列表,即:
170
171 * (((
172 联系
173 )))
174 * (((
175
176 )))
177 * (((
178 团队
179 )))
180
181
182 例如,要通知所有名字以 John 开头的人, **To** 字段可以包含:
183
184 {{{SELECT Person WHERE name LIKE 'John%'}}}
185
186 要通知所有附加到 CI 的 Person,请将其附加到 票证,用途:
187
188 {{{SELECT Person AS P
189 JOIN lnkContactToFunctionalCI AS L1 ON L1.contact_id = P.id
190 JOIN FunctionalCI AS CI ON L1.functionalci_id = CI.id
191 JOIN lnkFunctionalCIToTicket AS L2 ON L2.functionalci_id = CI.id
192 WHERE L2.ticket_id = :this->id}}}
193
194
195 如果您不想通知 标志设置为 、 的人员 将此条件添加到 WHERENotificationNo
196
197 {{{ Person.notify = 'yes'}}}
198
199
200 **从 iTop 3.1.0 开始**,您可以实现相同的功能 结果,只需设置字段 **Ignore Notify flag** 设置为 “No” 以执行此操作。
201
202 (% class="wikigeneratedid" %)
203 === ===
204
205 (% class="wikigeneratedid" %)
206 === ===
207
208 === 用 占位符 ===
209
210 查询可以包含引用
211
212 * (((
213 **当前对象**,其中 正在发送通知。语法为 **:this->attribute**。
214 )))
215 * (((
216 已完成 事件源处的操作。语法为 **:current_contact->attribute**。
217 )))
218
219 例如,仅当代理执行 不会自行触发事件,**则 To** 字段将 包含:
220
221 {{{SELECT Person WHERE id= :this->agent_id AND id != :current_contact->id}}}
222
223 //此语法也有效: :current_contact_id 等效于 :current_contact->id
224 此语法也有效: :current_contact_id 相当于 :current_contact->id//
225
226 ==
227 ==
228
229 (% class="wikigeneratedid" %)
230 == 消息内容和占位符 ==
231
232
233 邮件正文使用 [[WYSIWYG HTML 编辑器>>url:https://www.itophub.io/wiki/page?id=3_0_0:admin:rich_text_limitations]]进行编辑。
234
235 **从 iTop 3.1.0 开始**,您还可以上传自己的 HTML 模板 电子邮件。**HTML 模板**和 **Body** 字段都可以通过插入 placeholder **$content$** 在 HTML 模板中。这 content 将替换占位符。$content$
236 **从 iTop 3.1.0 开始**,您还可以为电子邮件上传自己的 HTML 模板。通过在 HTML 模板中插入占位符 **$content$**,可以组合 **HTML 模板**和 **Body** 字段。**Body** 字段的内容将替换占位符。$content$
237
238 **自 iTop 3.1.0 起**, **一旦 Action** 具有 得救了。您可以使用它来检查电子邮件的内容和 可视化占位符。但是,请注意,将 HTML 位于 浏览器可能与电子邮件中呈现的内容完全不同 客户。
239 **从 iTop 3.1.0 开始**,保存 Action 后即可使用 **Preview** 选项卡。您可以使用它来检查电子邮件的内容并可视化占位符。但是,请注意,浏览器中 HTML 的呈现可能与电子邮件客户端中呈现的内容完全不同。[[[[image:https://www.itophub.io/wiki/media?w=800&tok=dd506f&media=3_0_0:admin:email-notification-preview.png]]>>url:https://www.itophub.io/wiki/media-detail?id=3_0_0:admin:notifications&media=3_0_0:admin:email-notification-preview.png]]
240
241 “Subject” 和 “Body” 部分可以使用 占位符。用于此类占位符的语法为 。$xxxx$
242 “Subject” 和 “Body” 部分可以通过使用占位符动态构建。用于此类占位符的语法为 。$xxxx 美元
243
244 |用于 ... 用于 ...|具有不同的语法 具有不同的语法|例 例
245 |收件人查询(TO、CC、BCC...)
246 收件人查询(TO、CC、BCC...)|在 **OQL** 中,占位符以 **:** //colon//
247 在 **OQL** 中,placeholder 以 **:**//冒号// 开头|例如。**:current_contact->友好名称**
248 例如。 **:current_contact->friendlyname**
249 |消息部分(主题、正文)
250 消息部分(主题、正文)|在 **HTML** 文本中, 占位符 开头和结尾为**$**
251 在 **HTML** 文本中,占位符以 $ 开头和结尾|例如。**$current_contact->friendlyname$**
252
253
254 有几种类型的占位符:
255
256 * (((
257 $CONSTANT$指固定值 命名为 //constant//。
258 $CONSTANT$ 是指名为 //constant// 的固定值。
259 )))
260 * (((
261 $this->function()$指的是 内置//函数//执行的 触发操作的对象。
262 $this->function()$ 是指在触发操作的对象上下文中执行的内置//函数//。
263 )))
264 * (((
265 $this->attribute$指的是 field //属性//触发了 行动。
266 $this->attribute$ 是指触发该操作的对象的 field //属性//。
267 )))
268 * (((
269 $this->attribute_external_key->attribute$指 指向对象的 field //属性//,//attribute_external_key// it-self 是对象的一个字段 触发了该操作。
270 $this->attribute_external_key->attribute$ 指 //attribute_external_key// it-self 所指向的对象的 field 属性,该//属性//是触发该动作的对象的 field。
271 )))
272 * (((
273 $this->representation(attribute)$是指触发操作的对象的 field //属性//的内置//表示//形式。例如:。$this->html(name)$
274 $this->representation(attribute)$ 是指触发操作的对象的 field //属性//的内置//表示//形式。例如:。$this->html(名称)$
275 )))
276 * (((
277 特定占位符可以 **仅在 HTML 模板中使用**,以 指示在以下情况下必须插入 **Body** 的位置 生成电子邮件。$content$
278 特定占位符**只能在 HTML 模板内**使用,以指示生成电子邮件时必须插入 **Body** 的位置。$content 美元
279 )))
280
281
282 在此处查看这些[[不同类型占位符>>url:https://www.itophub.io/wiki/page?id=3_0_0:admin:placeholders]]的详细信息
283
284 == 测试 通知 ==
285
286
287 要测试新操作,您可以使用状态 “正在测试” 和 在“测试收件人”中填写测试地址。在这种情况下, 通知将发送到后一个地址。一旦 通知已经过测试,请将其状态更改为 “In Production” 以将通知流向其实际收件人。
288
289
290 要测试新操作,您可以使用状态“正在测试”,并在“测试收件人”中填写测试地址。在这种情况下,通知将发送到后一个地址。测试通知后,将其状态更改为“In Production”,以使通知流向其实际收件人。
291
292 如果要停用操作,只需将其状态设置为 “非活动”。
293 如果要停用某个操作,只需将其状态设置为“非活动”即可。
294
295 (% class="wikigeneratedid" %)
296 == ==
297
298 (% class="wikigeneratedid" %)
299 == ==
300
301 == 创建 触发 创建触发器 ==
302
303 要创建新触发器,请单击“新建”下拉列表 对于 “Trigger” 选项卡中的给定类别。以下向导 出现:
304 要创建新触发器,请单击“触发器”选项卡中给定类别的“新建”操作下拉列表。此时将显示以下向导:
305
306 [[image:https://www.itophub.io/wiki/media?w=600&tok=2fd8e4&media=3_0_0:admin:new-trigger1.png]]
307
308 您必须选择要创建的触发器类型:
309 您必须选择要创建的触发器类型:
310
311 * (((
312 当对象进入给定状态时 = Trigger (进入一个州时)
313 当对象进入给定状态时 = Trigger(在进入状态时)
314 )))
315 * (((
316 当对象离开给定状态时 = Trigger (在 离开状态)
317 当对象离开给定状态时 = Trigger(离开状态时)
318 )))
319 * (((
320 创建新对象时 = 触发器(在对象上 创建)
321 创建新对象时 = 触发器(在创建对象时)
322 )))
323 * (((
324 删除对象时 = 触发器(在对象上 删除)
325 删除对象时 = 触发器(删除对象时)
326 )))
327 * (((
328 当日志中提及对象时 = Trigger (在 对象提及)
329 当日志中提及对象时 = Trigger(提及对象时)
330 )))
331 * (((
332 修改对象时 = 触发器(在对象上 更新)
333 修改对象时 = 触发器(在对象更新时)
334 )))
335 * (((
336 下载附件时 = 触发(打开 对象的附件下载)
337 下载附件时 = 触发器(在下载对象的附件时)
338 )))
339 * (((
340 下载文档时 = 触发(打开 对象的文档下载)
341 下载文档时 = 触发器(在对象的文档下载时)
342 )))
343 * (((
344 当解决时间 (TTR) 或达到拥有时间 (TTO) = 触发器(阈值)
345 当达到解决时间 (TTR) 或拥有时间 (TTO) 的给定阈值时 = 触发器(阈值)
346 )))
347 * (((
348 当需要批准工单时 = 触发 (当 请求批准)//由扩展带来[[审批流程 自动化>>url:https://www.itophub.io/wiki/page?id=extensions:approval_extended]]//
349 当需要审批工单时 = Trigger(请求审批时)//由分机带来的[[审批流程自动化>>url:https://www.itophub.io/wiki/page?id=extensions:approval_extended]]//
350 )))
351 * (((
352 在 Console 中更新日志时 = Trigger (当日志更新时)//由分机带来 [[电子邮件回复>>url:https://www.itophub.io/wiki/page?id=extensions:email_reply]]//
353 当日志在控制台中更新时 = 触发器(当日志更新时),//由分机[[带来 电子邮件回复>>url:https://www.itophub.io/wiki/page?id=extensions:email_reply]]//
354 )))
355 * (((
356 当通过电子邮件更新日志时 = 触发器(当 通过邮件更新)//由扩展 [[Ticket Creation 从 电子邮件>>url:https://www.itophub.io/wiki/page?id=extensions:ticket-from-email]]//
357 当通过电子邮件更新日志时 = 由//扩展 [[电子邮件中的票证创建>>url:https://www.itophub.io/wiki/page?id=extensions:ticket-from-email]]带来的//触发器(通过邮件更新时)
358 )))
359 * (((
360 从 iTop 门户更新对象时 = 触发器(从门户更新时)
361 从 iTop 门户更新对象时 = 触发器(从门户更新时)
362 )))
363
364 最后三个可以替换为 combined with the context 和字段Trigger (on object update)
365 最后三个可以替换为与上下文和字段Trigger (on object update) 的组合
366
367 其他扩展可以添加更多 Triggers。例如。[[Notify On Expiration>>url:https://www.itophub.io/wiki/page?id=extensions:combodo-notify-on-expiration]] & [[Send updates by email>>url:https://www.itophub.io/wiki/page?id=extensions:email_reply]]
368 其他扩展可以添加更多 Triggers。例如。[[到期通知>>url:https://www.itophub.io/wiki/page?id=extensions:combodo-notify-on-expiration]]并[[通过电子邮件发送更新>>url:https://www.itophub.io/wiki/page?id=extensions:email_reply]]
369
370 选择触发器类型后,您将获得以下内容 形式:
371 选择触发器类型后,您将获得以下表单:
372
373 [[image:https://www.itophub.io/wiki/media?w=400&tok=311fe1&media=3_0_0:admin:new-trigger2.png]]
374
375 === 常见字段 常见字段 ===
376
377 任何类型的触发器都需要您指定三个 参数:
378 任何类型的触发器都需要您指定三个参数:
379
380 * (((
381 //描述//留给您进一步 确定此触发器的用途。
382 //Description// 留给您进一步确定此触发器的用途。
383 )))
384 * (((
385 //Target class// 定义对象的类 此触发器适用。
386 //Target 类// 定义此触发器适用的对象类。
387 )))
388 * (((
389 //Filter// 限制 trigger 适用。它是一个 [[OQL 查询>>url:https://www.itophub.io/wiki/page?id=3_0_0:oql:start]],返回所有 将激活触发器。将其留空意味着:所有对象 预期类。
390 //Filter// 限制触发器应用到的对象。它是一个 [[OQL 查询>>url:https://www.itophub.io/wiki/page?id=3_0_0:oql:start]],返回将激活触发器的所有对象。将其留空意味着:预期类的所有对象。
391 )))
392
393 ==== 滤波器 滤波器 ====
394
395 OQL 筛选器不应引用当前的 object,它没用且不起作用。OQL 何时为 执行时,iTop 会检查当前对象是否是 范围。
396 OQL 过滤器不应对当前对象进行任何引用,它毫无用处且不起作用。当 OQL 执行时,iTop 会检查当前对象是否属于 scope。
397
398 示例:调用方请求的用户请求,他本人是 负责在该服务上交付 Tickets 的团队 subcategory (//请注意,这是一个非标准数据模型,也是 一个有意义的!//)
399 示例:调用者请求的用户请求,他自己是负责在该服务子类别上交付 Tickets 的团队的一员(//请注意,这是一个非标准数据模型,也是一个有意义的数据模型!//
400
401 ; [[不工作 例>>url:https://www.itophub.io/wiki/page?do=export_code&id=3_0_0:admin:notifications&codeblock=6]]
402 :
403
404 {{{SELECT UserRequest AS u
405 JOIN ServiceSubcategory AS s ON u.servicesubcategory_id = s.id
406 JOIN Team AS t ON s.delivery_team_id = t.id
407 JOIN lnkPersonToTeam AS lnk ON lnk.team_id = t.id
408 WHERE lnk.person_id = :this->caller_id}}}
409
410 无需在当前对象上添加任何条件。
411 无需在当前对象上添加任何条件。
412
413 ; [[更好>>url:https://www.itophub.io/wiki/page?do=export_code&id=3_0_0:admin:notifications&codeblock=7]]
414 :
415
416 {{{SELECT UserRequest AS u
417 JOIN ServiceSubcategory AS s ON u.servicesubcategory_id = s.id
418 JOIN Team AS t ON s.delivery_team_id = t.id
419 JOIN lnkPersonToTeam AS lnk ON lnk.team_id = t.id
420 WHERE lnk.person_id = u.caller_id}}}
421
422 iTop 可能会添加 也许不是这样,但会添加完全相同的 结果。AND u.id=:this→id
423 iTop 可能会添加,但结果完全相同。AND u.id=:this→id
424
425 如果要触发 通知仅限于通过电子邮件创建的工单,请使用 origin='mail' 在 Trigger Filter 中。
426 如果要触发仅限于通过电子邮件创建的工单的通知,请在触发器过滤器中使用 origin='mail'。
427
428 (% class="wikigeneratedid" %)
429 ==== ====
430
431 ==== 上下文 上下文 ====
432
433 //上下文//允许您指定在哪些[[上下文中>>url:https://www.itophub.io/wiki/page?id=3_0_0:customization:context]],触发器应为 激活。
434 //上下文//允许您指定应在哪些[[上下文中>>url:https://www.itophub.io/wiki/page?id=3_0_0:customization:context]]激活触发器。
435
436 * (((
437 警告:某些上下文在 Trigger 上不可用 (特定的 Datasynchro 或特定的 CRON 任务不能是 指定)
438 警告:某些上下文在 Trigger 上不可用(无法指定特定的 Datasynchro 或特定的 CRON 任务)
439 )))
440
441 [[image:https://www.itophub.io/wiki/media?w=400&tok=96b53a&media=3_0_0:admin:trigger-context.png]]
442
443 使用上下文//在对象更新时//触发 = 可以在//从门户更新时//替换触发器,并且更具体,如下所示 指定特定门户和/或特定修改 领域Portal
444 使用上下文//在对象更新时//触发 = 可以在//从门户更新时//替换触发器,并通过指定特定门户和/或特定修改的字段门户来更具体地
445
446 旧版本扩展带来的触发器不会提出 上下文。
447 旧版本的扩展带来的触发器不会建议 Context。
448
449 * (((
450 对于//阈值//触发器,上下文为 CRON, 所以如果你定义了 Contexts,请确保把它放进去。
451 对于 //on threshold// trigger,context 是 CRON,因此如果您定义了 Contexts,请确保输入它。
452 )))
453 * (((
454 对于 Email Reply,上下文仅限于扩展的设计。Console
455 对于 Email Reply,上下文仅限于扩展的设计。安慰
456 )))
457 * (((
458 对于“Notify on Expiration”等其他功能,请使用 Contexts 是扩展设计的 CRON。
459 对于其他功能,如“Notify on Expiration”,上下文在扩展的设计上是 CRON。
460 )))
461
462 ==== 触发的操作 触发的操作 ====
463
464 “Triggered Actions” 选项卡定义将要执行的操作 在此触发器触发时执行。请记住,一个操作可以是 链接到多个触发器,因此可以重用某些操作。 “Order” 字段确定给定触发器的 操作被执行(操作以升序方式启动 order) 的
465 “Triggered Actions” 选项卡定义此触发器触发时将执行哪些操作。请记住,一个操作可以链接到多个触发器,因此可以重复使用某些操作。“Order”字段确定对于给定触发器,操作的执行顺序(操作按升序启动)。
466
467 查看[[步骤 例>>url:https://www.itophub.io/wiki/page?id=3_0_0:admin:notifications-step-by-step#link_the_trigger_to_the_email_action]]
468 查看[[分步示例>>url:https://www.itophub.io/wiki/page?id=3_0_0:admin:notifications-step-by-step#link_the_trigger_to_the_email_action]]
469
470 ----
471
472 //检查下面的触发器特定参数和 行为:
473 请查看以下内容,了解触发器特定的参数和行为://
474
475 === 在对象上 更新 对象更新时 ===
476
477 此触发器建议指定 //Target 字段//。 指定 none 表示任何字段都将触发触发器。 否则,至少需要更改一个指定的字段 以激活触发器。
478 此触发器建议指定 //Target 字段//。指定 none 表示任何字段都将触发触发器。否则,至少需要更改一个指定的字段才能激活触发器。
479
480 过滤器是在对象写入数据库**后**应用的,因此 编写 OQL Filter 以测试 object 之后的新值 修改。
481 筛选器已应用 在将对象写入数据库**后**,请编写 OQL Filter 以测试对象修改后的新值。
482
483 === 上 进入/离开状态
484 进入/离开状态时 ===
485
486 两个触发器都需要 //State//。要为 为 “state” 输入的是 state 的内部代码,因为 在数据模型中定义。州代码可以在“Life Cycle“ 选项卡的 ”Data Model“,部分 ”Transitions”。价值 code 是括号之间列出的值。
487 两个触发器都需要 //State//。要为 “state” 输入的值是 state 的内部代码,如数据模型所定义。状态代码可以在 “Data Model” 的 “Life Cycle” 选项卡的 “Transitions” 部分看到。值代码是括号中列出的值。
488
489 === 阈值时 阈值时 ===
490
491 此触发器需要秒表和阈值。预期的 秒表的值是属性代码。用户请求和 事故票附带两个秒表:**tto** 和 **ttr**。阈值是目标的百分比 秒表。对于标准数据模型,您可以使用 75 或 100.
492 此触发器需要秒表和阈值。秒表的预期值是属性代码。User Requests 和 Incident 工单附带两个秒表:**tto** 和 **ttr**。阈值是秒表目标的百分比。使用标准数据模型,您可以使用 75 或 100。
493
494 对于那些特定的触发器 要发生,iTop [[cron.php>>url:https://www.itophub.io/wiki/page?id=3_0_0:admin:cron]] 必须正在运行
495 要发生这些特定触发器,iTop [[cron.php>>url:https://www.itophub.io/wiki/page?id=3_0_0:admin:cron]]必须正在运行
496
497 === 当 log 为 更新 更新日志时 ===
498
499 此触发器需要在 //Class// 上指定 log code 属性。然后**,仅当**配置了**触发器和活动操作**时,它才会在 仅限控制台,编辑该日志时有一个复选框,以手动允许 用户可以根据需要禁用通知。
500 此触发器需要在 //类//。然后**,仅当**触发器和 **active** 操作,它会在编辑该日志时仅在 Console 上添加一个复选框,以允许用户根据需要手动禁用通知。
501
502 === 提及时 提及时 ===
503
504 此触发器需要指定 //Mentioned 过滤器//,该过滤器是指定 Object 的 OQL 查询(通常为 Persons),该对象可以在特定的 //Target 类//对象上提及。此查询可以使用占位符来限制返回的 Person 基于目标类对象属性。
505 此触发器需要指定 //Mentioned 筛选条件// ,这是一个指定 Object 的 OQL 查询(通常, 人员),该类可以在特定 //Target 类//中提及 对象。此查询可以使用占位符来限制返回的 Person 基于目标类对象属性。
506
507 ==== 行为 行为 ====
508
509 此功能目前为 仅限于 iTop 控制台
510 此功能目前仅限于 iTop 控制台
511
512 在类上设置此类 Trigger 后,**在编辑 一个日志**,如果用户输入特殊字符(默认为 @ 对于 Person,它在配置文件中定义),后跟一个 几个字符,然后 iTop 搜索与输入的 Person 匹配的 Person 字符。返回的 Person 可以受现有 的限制。Trigger (on mention)
513 在类上设置了这样的 Trigger 后,在**编辑日志**时,如果用户输入一个特殊字符(Person 默认为 @,它在配置文件中定义),后跟几个字符,则 iTop 会搜索与输入的字符匹配的 Person。返回的 Person 可以受现有 的限制。触发器(提及时)
514
515 * (((
516 触发器必须适用于当前的 object 类,因此将 //Target 类//作为父类 class 或被编辑对象的类本身。
517 Triggers 必须适用于当前对象类,因此 //Target 类//是父类或已编辑对象的类本身。
518 )))
519 * (((
520 Trigger 上的 //Mentioned 过滤器//必须 return Person (或 Contact 或任何类)
521 Trigger 上的 //Mentioned 过滤器//必须返回 Person(或 Contact 或任何类)
522 )))
523 * (((
524 当有多个适用的 时,iTop 会执行 各种 //Mentioned 过滤器//Trigger (on mention)
525 )))
526 * (((
527 返回的 Person 数量限制为 配置参数max_autocomplete_results
528 返回的 Person 数量限制为 Configuration Parameter max_autocomplete_results
529 )))
530 * (((
531 触发器适用,即使它们不适用 链接到活动电子邮件通知,则应考虑 filter 人员
532 的 触发器 ,即使它们未链接到活动的电子邮件通知,也会考虑在内以筛选人员
533 )))
534
535 通过此机制,如果您使用的是 iTop as a Service 提供商,您可以避免在 工单 上提及客户联系人 这将是针对另一个不相关的客户。
536 通过这种机制,如果您使用 iTop 作为服务提供商,您可以避免在工单上提及客户联系人,这将是另一个不相关的客户。
537
538 当然,相同的行为也适用于其他类,而不是 Person,如果配置文件提到了其他允许的类,则 具有自己的特殊字符(见下文)
539 当然,如果配置文件提到其他允许的类,并且具有它们自己的特殊字符(见下文),则相同的行为也适用于 Person 以外的其他类
540
541 这仅适用于 Caselog, 无法处理其他文本或 HTML 字段
542 这仅适用于 Caselog,不适用于其他文本或 HTML 字段
543
544 ==== 配置 配置 ====
545
546 此触发器有一个特殊的配置,它来自 自然而然:
547 此触发器有一个特殊的 Configuration,它会自动出现:
548
549 ; [[配置 文件>>url:https://www.itophub.io/wiki/page?do=export_code&id=3_0_0:admin:notifications&codeblock=8]]
550 :
551
552 {{{ // mentions.allowed_classes: Classes which can be mentioned through the autocomplete in the logs.
553 // Key of the array must be a single character that will trigger the autocomplete,
554 // Value must be a DM class (eg. "@" => "Person", "?" => "FAQ")
555 'mentions.allowed_classes' => ('@' => 'Person'),}}}
556
557 要完全禁用 OnMention 功能,请按以下方式设置:
558 要完全禁用 OnMention 功能,请按以下方式进行设置:
559
560 {{{'mentions.allowed_classes' => array('@' => 'NonExistingCLassName'), \\}}}
561
562 在 iTop Setup 过程中,对于每个具有 caselog 的类, 系统会自动为此类创建一个 Trigger (mention 时) 作为 //Target 类//。
563 在 iTop Setup 过程中,对于每个具有 caselog 的类, 会自动为此类创建一个 Trigger(提及时),作为 //Target 类//。
564
565 * (((
566 触发器的范围不受限制。我们 考虑一下这个功能在该类的日志中提及某人 在所有对象上都可用,但可以更改此设置。
567 触发器的范围不受限制。我们认为在该类的日志中提及某人的功能在所有对象上都可用,但这是可以更改的。
568 )))
569 * (((
570 设置 //Mentioned 过滤器//,以便检索 当前用户组织的任何活动人员。如果 //Target 类//有一个字段,则任何 active Person 属于当前对象的 Organization 也被提议。org_id
571 设置 //Mentioned 过滤器//,以便检索当前用户组织的任何活动 Person。如果 //Target 类//有一个字段,则还会建议属于当前对象的 Organization 的任何活动 Person。org_id
572 )))
573
574 {{{SELECT Person WHERE ((`status` = 'active')
575 AND ((`org_id` = :current_contact->org_id) OR (`org_id` = :this->org_id)))}}}
576
577 并且每个 Trigger 都链接到一个创建的 Email 通知 with:
578 每个触发器都链接到一个已创建的电子邮件通知,其中包含:
579
580 * (((
581 //从//成为提及 that Person 在 Log 中,因此当前用户
582 //从//在日志中提及该 Person 的 person 电子邮件,到当前用户
583 )))
584 * //To// 应该是被提及的人, 你可以这样得到:
585 //To// 应该是被提及的 Person,你可以这样得到:
586
587 {{{SELECT Contact WHERE id = :mentioned->id}}}
588
589 * (((
590 //主题//是“您已被提及 XXXX“,XXXX 是您所在的日志的对象的名称 提到
591 //主题//是“您在 XXXX 中被提及”,XXXX 是您在日志中被提及的对象的名称
592 )))
593 * (((
594 电子邮件通知的//正文//为:
595 )))
596
597 ; [[身体>>url:https://www.itophub.io/wiki/page?do=export_code&id=3_0_0:admin:notifications&codeblock=11]]
598 :
599
600 {{{ Hello $mentioned->first_name$,
601
602 You have been mentioned by $current_contact->friendlyname$ in $this->hyperlink()$}}}
603
604 将占位符记为 use 字段 Person.
605 对于任何消息,您可以使用标准占位符(请参阅 下面)$mentioned->attribute$
606
607 当然,您可以自定义 //Subject// 和 //Body//,但不建议更改 //To//!
608 当然,您可以自定义 //Subject// 和 //Body//,但不建议更改 //To//!
609
610 您还可以拆分此通用通知,以便为每个 触发器,以便提供更准确的 修改已完成,例如最后一个 caselog 条目。
611 您还可以拆分此通用通知,以便使用它为每个触发器创建一个,以便它提供有关已完成修改的更准确信息,例如最后一个 caselog 条目。
612
613 当前限制:您有 没有意思知道您在哪个日志中被提及,以防 对象具有多个日志。所以使用 $this->head_html(public_log)$ 可能会返回与 提及操作(如果在工单的 private_log 中完成) 例如。
614 当前限制:如果对象有多个日志,则无法知道在哪个日志中提到了您。因此,如果在 //Ticket//(工单)的private_log中使用 $this->head_html(public_log)$ 可能会返回与提及操作完全无关的内容。
615
616 您可以使用此机制来 通知与上述业务流程关联的联系人, 应用程序、服务器、更改、常见问题解答,...
617 您可以使用此机制通知与上述 Business Process、Application、Server、Change、FAQ 关联的联系人,...
618
619 === 在文档上 下载 下载文件时 ===
620
621 的 当有人下载 file 属性(例如 在类中)在 Backoffice 或 End-User Portal 的 Portal。Trigger (on object's document download)FileDocument File
622 当有人在后台或最终用户门户中下载文件属性(例如,在类上)时,将激活 。 Trigger (on object's document download) 文件文档 文件
623
624 此触发器允许您访问操作中的新占位符 (当然,标准的仍然可用):
625 此触发器允许您访问操作中的新占位符(当然,标准占位符仍然可用):
626
627 * (((
628 $file->mime_type$MIME 类型的 文件(例如。“image/png”)
629 $file->mime_type$ 文件的 MIME 类型(例如。“image/png”)
630 )))
631 * (((
632 $file->file_name$文件名、 如上传。
633 $file->file_name$ 上传的文件的名称。
634 )))
635 * (((
636 $file->downloads_count$数量 下载文件的时间。请注意,它是 BEFORE 的计数 当前下载,因此您可以挂接一些检查来防止它 超出阈值。
637 $file->downloads_count$ 文件下载的次数。请注意,这是当前下载之前的计数,因此您可以挂接一些检查,以便在超过阈值时防止它。
638 )))
639 * (((
640 $file->data$的二进制内容 文件
641 $file->data$ 文件的二进制内容
642 )))
643 * (((
644 $file->data_as_base64$基地 64 编码内容,可用于与 其他应用
645 文件的 $file->data_as_base64 Base64 编码内容可用于与其他应用程序的集成
646 )))
647
648 === 附着时 下载 在附件下载时 ===
649
650 的 当有人在后台下载附件时激活,或者 最终用户门户。Trigger (on object's attachment download)
651 当有人在后台或最终用户门户中下载附件时,将激活 。 Trigger (on object's attachment download)
652
653 此触发器允许您访问操作中的新占位符 (当然,标准的仍然可用):
654 此触发器允许您访问操作中的新占位符(当然,标准占位符仍然可用):
655
656 * (((
657 $attachment->xxx$相同 可能性至于但与 attachment 本身( 是 object it is attached to)$this->xxx$$this
658 $attachment->xxx$ 与 for 相同,但附件本身(即它所连接的物体)$this->xxx$$this
659 )))
660 * (((
661 $attachment->mime_type$MIME 类型 的文件(例如。“image/png”)
662 $attachment->mime_type$ 文件的 MIME 类型(例如。“image/png”)
663 )))
664 * (((
665 $attachment->file_name$名称 文件,如上传时所示。
666 $attachment->file_name$ 上传的文件的名称。
667 )))
668 * (((
669 $attachment->downloads_count$文件已下载的次数。请注意,它是 count 之前,这样你就可以将一些检查挂接到 如果超过阈值,则阻止它。
670 $attachment->downloads_count$ 下载文件的次数。请注意,这是当前下载之前的计数,因此您可以挂接一些检查,以便在超过阈值时防止它。
671 )))
672 * (((
673 $attachment->data$二进制内容 的文件
674 $attachment->data$ 文件的二进制内容
675 )))
676 * (((
677 $attachment->data_as_base64$基地 64 编码内容,可用于与 其他应用
678 文件的 $attachment->data_as_base64$ Base64 编码内容可用于与其他应用程序的集成
679 )))
680
681 谨慎使用它们的输出可能会 巨大。$xxx->data$$xxx->data_as_base64$
682 请谨慎使用,因为它们的输出可能很大。$xxx->data$$xxx->data_as_base64$
683
684 == 测试 触发 测试触发器 ==
685
686 我们强烈建议您进行测试 触发器和操作,在将它们移动到生产环境之前,通过使用 操作的 “Being Tested” 状态。
687 我们强烈建议您在将触发器和操作移至生产环境之前,通过在操作上使用“正在测试”状态来测试它们。
688
689 您可以查看为给定工单发送了哪个通知 (用户请求、事件、更改)使用 工单的详细信息。
690 您可以使用工单详细信息中的“通知”选项卡查看为给定工单(用户请求、事件、更改)发送的通知。
691
692 [[[[image:https://www.itophub.io/wiki/media?w=600&tok=2c7e14&media=3_0_0:admin:notifications-ur.png||alt="Notifications tab on ticket|"]]>>url:https://www.itophub.io/wiki/media?media=3_0_0:admin:notifications-ur.png]]
693
694 您还可以列出所有已发送和 使用“管理工具”/“运行”页面失败的通知 Queries“并运行查询:
695 您还可以使用“管理工具”/“运行查询”页面并运行查询来列出所有已发送和失败的通知:
696
697 {{{SELECT EventNotification}}}
698
699 如果您在 Linux 服务器,sendmail_path请确保 php.ini. 例如:
700 如果你在 Linux 服务器上运行 iTop,请确保变量 “sendmail_path” 值php.ini。例如:
701
702 {{{sendmail_path = "/usr/sbin/sendmail -t -i"}}}
703
704 根据您的实际环境,配置可能是 不同。例如,也可以使用 SSMTP 作为代理 到实际的电子邮件服务器,如以下链接中所述:[[http:~~/~~/tombuntu.com/index.php/2008/10/21/sending-email-from-your-system-with-ssmtp/>>url:http://tombuntu.com/index.php/2008/10/21/sending-email-from-your-system-with-ssmtp/]]
705 根据您的实际环境,配置可能是 不同。例如,也可以使用 SSMTP 作为代理 到实际的电子邮件服务器,如以下链接所述: [[http:~~/~~/tombuntu.com/index.php/2008/10/21/sending-email-from-your-system-with-ssmtp/>>url:http://tombuntu.com/index.php/2008/10/21/sending-email-from-your-system-with-ssmtp/]]
706
707 如果您在 Windows 服务器,您需要确保 php.ini 文件 包含以下行:
708
709 {{{SMTP = <smtp server>
710 smtp_port = 25}}}
711
712 为了测试您可以使用的电子邮件通知,“测试 Page“(点击”通知“页面中的链接)或键入:
713
714 http:~/~/<itop 服务器位置>/setup/email.test.php
715 http:~/~/<itop 服务器位置>/setup/email.test.php
716
717 测试页面对 PHP 执行许多检查 配置,并允许您将纯文本电子邮件发送到 收件人。这对于验证 服务器的 PHP 配置确实适合发送 电子邮件。
718
719 [[[[image:https://www.itophub.io/wiki/media?w=500&tok=9a0811&media=3_0_0:admin:email-test.png||alt="Email sending test page"]]>>url:https://www.itophub.io/wiki/media?media=3_0_0:admin:email-test.png]]  
720
721 === 电子邮件 配置 电子邮件配置 ===
722
723 iTop 支持两种发送电子邮件的方式:PHP 或 SMTP 的内置功能通过 [[Swift Mailer 库>>url:http://http//swiftmailer.org/]](随 iTop 一起安装)。配置参数确定使用哪种方法 从 iTop 发送电子邮件。如果参数的值为 (这是默认值),则使用内置函数。如果值为 SMTP,则 SMTP 使用 Swift Mailer 的运输。mailemail_transportemail_transportPHPMailmail()SMTP
724
725 当使用 PHP 的函数时,语言的 设置。有关更多信息,请查看 [[PHP 文档>>url:http://www.php.net/manual/en/mail.configuration.php]]。mail
726
727 使用 SMTP 传输时,以下参数可以是 在 iTop 配置文件中设置:
728
729 |=配置参数|=类型|=可见|=描述 描述|=默认值
730 |email_transport_smtp.encryption|字符串|不|TLS 或 SSL(可选)|
731 |email_transport_smtp.host|字符串|不|主机名或 IP 地址(可选)|本地主机
732 |email_transport_smtp.password|字符串|不|身份验证密码(可选)|
733 |email_transport_smtp.port|整数|不|端口号(可选)|25
734 |email_transport_smtp.username|字符串|不|身份验证用户(可选)|
735 |email_transport_smtp.verify_peer|布尔|不|验证对等证书|真
736
737 虽然使用 默认传输方式(PHP 邮件),缺点是缺少报告 当它失败时。例如,您可能会收到错误消息“//否 此邮件的有效收件人。//对于配置问题。 有关更多信息,请参阅 [[Swift Mailer 传输文档>>url:http://swiftmailer.org/docs/sending.html#the-mail-transport]]。 因此,我们强烈建议您使用 SMTP 传输 ,这将返回详细的错误消息。
738
739 === 通知和 应用程序响应能力
740 通知和应用程序响应能力 ===
741
742 发送电子邮件是一项相对较慢的操作。取决于您 电子邮件服务器,发送一封电子邮件可能需要几秒钟 (建立与服务器的连接、发送数据等)。 在 iTop 中创建或更新票据时,可能会有多封邮件 emitted,具体取决于配置的通知。这可以采用 几秒钟即可完成。为了提高 应用程序,则通知可以通过 进程在 Web 服务器的后台运行。激活 异步发送通知,在配置文件中设置 并确保[[后台进程>>url:https://www.itophub.io/wiki/page?id=3_0_0:admin:cron]]已启动并正在运行。'email_asynchronous' ⇒ true,
743
744 如果你非常依赖 通知,请注意,使用传输的直接 SMTP 连接通常比 PHP 的 内置邮件函数 (),所以可能值得 额外的配置工作。SMTPPHPMail
745 如果您非常依赖通知,请注意,使用传输的直接 SMTP 连接通常比 PHP 的内置邮件函数 () 快一点,因此可能值得进行额外的配置工作。SMTPPHPMail
746
747 == 配置通知 CSS
748 配置通知 CSS ==
749
750 它是 iTop 配置中的一个变量 (email_css),它允许 以重载用于电子邮件通知的默认 CSS。 查看以下[[教程>>url:https://www.itophub.io/wiki/page?id=3_0_0:customization:customize-notification-css]] 了解如何个性化您自己的 CSS。
751 这是 iTop 配置中的一个变量 (email_css),它允许重载用于电子邮件通知的默认 CSS。查看以下[[教程>>url:https://www.itophub.io/wiki/page?id=3_0_0:customization:customize-notification-css]],了解如何个性化您自己的 css。
752
753 (% class="wikigeneratedid" %)
754 == ==
755
756 == A 步骤 步骤示例 
757 Step by Step 示例 ==
758
759 **[[教程 创建您的第一个通知
760 创建第一个通知的教程>>url:https://www.itophub.io/wiki/page?id=3_0_0:admin:notifications-step-by-step]]**
深圳市艾拓先锋企业管理咨询有限公司