<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>iTopCN – 通知</title><link>/docs/admin/10-notifications/</link><description>Recent content in 通知 on iTopCN</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Fri, 27 Jun 2025 00:00:00 +0000</lastBuildDate><atom:link href="/docs/admin/10-notifications/index.xml" rel="self" type="application/rss+xml"/><item><title>Docs: 通知占位符</title><link>/docs/admin/10-notifications/placeholders/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/admin/10-notifications/placeholders/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>邮件通知的&amp;quot;主题&amp;quot;和&amp;quot;正文&amp;quot;部分支持占位符：&lt;/p>
&lt;/div>
&lt;h2 id="语法">语法&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>语法&lt;/th>
&lt;th>在工单通知上的示例&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>$this-&amp;gt;attribute$&lt;/code>&lt;/td>
&lt;td>&lt;code>$this-&amp;gt;ref$&lt;/code> 被替换为工单编号&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>$this-&amp;gt;external_key-&amp;gt;attribute$&lt;/code>&lt;/td>
&lt;td>&lt;code>$this-&amp;gt;caller_id-&amp;gt;email$&lt;/code> 被替换为工单报告人的邮箱&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>$this-&amp;gt;representation(attribute)$&lt;/code>&lt;/td>
&lt;td>&lt;code>$this-&amp;gt;html(log)$&lt;/code> 被替换为 HTML 格式的公共日志&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>$CONSTANT$&lt;/code>&lt;/td>
&lt;td>&lt;code>$APP_URL$&lt;/code> 被替换为 iTop 应用的 URL&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>$this-&amp;gt;function()$&lt;/code>&lt;/td>
&lt;td>&lt;code>$this-&amp;gt;hyperlink(portal)$&lt;/code> 被替换为 iTop 门户中工单的 URL&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>这 5 种情况详述如下。扩展可以添加其他占位符，例如 Approval&amp;hellip; 请查看扩展文档以获取更多详细信息。&lt;/p>
&lt;h2 id="属性占位符">属性占位符&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>函数&lt;/th>
&lt;th>描述&lt;/th>
&lt;th>支持的属性类型&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>$this-&amp;gt;attribute$&lt;/code>&lt;/td>
&lt;td>属性值的纯文本表示&lt;/td>
&lt;td>任何&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>$this-&amp;gt;id$&lt;/code>&lt;/td>
&lt;td>当前对象的 id（当时没有这样的属性）&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>$current_contact-&amp;gt;attribute$&lt;/code>&lt;/td>
&lt;td>执行激活触发器的更改的人员&lt;/td>
&lt;td>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="扩展语法">扩展语法&lt;/h2>
&lt;p>扩展语法提供了一种快速从相关对象检索数据的方法，如下例所示：&lt;/p>
&lt;ul>
&lt;li>&lt;code>$this-&amp;gt;approver_id-&amp;gt;phone$&lt;/code>&lt;/li>
&lt;li>&lt;code>$this-&amp;gt;approver_id-&amp;gt;org_id-&amp;gt;code$&lt;/code>&lt;/li>
&lt;li>&lt;code>$this-&amp;gt;approver_id-&amp;gt;org_id-&amp;gt;hyperlink()$&lt;/code>&lt;/li>
&lt;li>&lt;code>$this-&amp;gt;parent_request_id-&amp;gt;hyperlink(portal)$&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>每个内置函数和属性表示在最后一个 &lt;code>-&amp;gt;&lt;/code> 之后都可用。&lt;/p>
&lt;h2 id="属性表示">属性表示&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>函数&lt;/th>
&lt;th>描述&lt;/th>
&lt;th>支持的属性类型&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>$this-&amp;gt;html(attribute)$&lt;/code>&lt;/td>
&lt;td>属性值的源 HTML，HTML 标签被转义。仅在邮件正文中使用（HTML 部分），以便美观显示。甚至可以用于可能包含 HTML 标签的文本属性，我们希望按原样保留这些标签。&lt;/td>
&lt;td>任何&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>$this-&amp;gt;label(attribute)$&lt;/code>&lt;/td>
&lt;td>属性值的本地化表示。语言是当前登录用户的语言。&lt;/td>
&lt;td>任何（仅对 AttributeEnum 有意义）&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>$this-&amp;gt;head(log)$&lt;/code>&lt;/td>
&lt;td>案例日志最新条目的纯文本&lt;/td>
&lt;td>AttributeCaseLog&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>$this-&amp;gt;head_html(log)$&lt;/code>&lt;/td>
&lt;td>最新条目的 HTML 格式表示，而 &lt;code>$this-&amp;gt;html(attribute)$&lt;/code> 返回整个案例日志的 HTML 格式表示（您可以应用自己的 CSS 样式使其美观）。&lt;/td>
&lt;td>AttributeCaseLog&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>iTop 2.4 新增：&lt;code>$this-&amp;gt;raw(attribute)$&lt;/code>&lt;/td>
&lt;td>日期（时间）的 SQL 格式表示，而 &lt;code>$this-&amp;gt;(attribute)$&lt;/code> 返回根据配置参数格式化的值。&lt;/td>
&lt;td>AttributeDatetime&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="固定占位符">固定占位符&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>占位符&lt;/th>
&lt;th>含义&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>$APP_URL$&lt;/code>&lt;/td>
&lt;td>iTop 应用的 URL&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>$MODULES_URL$&lt;/code>&lt;/td>
&lt;td>模块的根 URL（例如 &lt;code>$APP_URL$/env-production&lt;/code>）&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="内置函数占位符">内置函数占位符&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>占位符&lt;/th>
&lt;th>含义&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>$this-&amp;gt;name()$&lt;/code>&lt;/td>
&lt;td>当前对象的名称&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>$this-&amp;gt;hyperlink()$&lt;/code>&lt;/td>
&lt;td>在 iTop 控制台中访问当前对象的超链接&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>$this-&amp;gt;hyperlink(portal)$&lt;/code>&lt;/td>
&lt;td>在 iTop 门户中访问当前对象的超链接&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>$this-&amp;gt;hyperlink(itop-portal-view)$&lt;/code>&lt;/td>
&lt;td>在 iTop 门户中以只读模式打开当前对象&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>$this-&amp;gt;hyperlink(itop-portal-edit)$&lt;/code>&lt;/td>
&lt;td>在 iTop 门户中以修改模式打开当前对象&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>$this-&amp;gt;url()$&lt;/code>&lt;/td>
&lt;td>在 iTop 控制台中访问当前对象的 URL&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>警告：对于自定义门户，您需要创建 URLMaker 类：参见 urlmaker。&lt;/p>
&lt;h2 id="示例userrequest">示例：UserRequest&lt;/h2>
&lt;p>假设在分配 User Request 时触发通知，消息正文可以是：&lt;/p>
&lt;pre tabindex="0">&lt;code>Dear $this-&amp;gt;html(agent_id),
The ticket $this-&amp;gt;ref$ has been assigned to you.
More information about this ticket
Title: $this-&amp;gt;title$
Description:
$this-&amp;gt;description$
Public log:
$this-&amp;gt;head_html(public_log)$
Impacted CIs:
$this-&amp;gt;html(functionalcis_list)$
Click here to display the details of the ticket: $this-&amp;gt;hyperlink()$ (authentication required)
&lt;/code>&lt;/pre>&lt;h2 id="常见问题">常见问题&lt;/h2>
&lt;h3 id="故障排除">故障排除&lt;/h3>
&lt;p>&lt;strong>问：为什么我的占位符在发送的邮件中没有被真实值替换？&lt;/strong>&lt;/p>
&lt;p>&lt;strong>答：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>您拼写错误了字段代码，或者该代码在触发通知的类上不存在&lt;/li>
&lt;li>检查通知正文的源代码（CKEditor 提供 &lt;source> 按钮），如果 html 标签在占位符内部，这会破坏匹配机制，文本不会被值替换&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>问：我的占位符是否被翻译取决于谁触发事件，为什么？&lt;/strong>&lt;/p>
&lt;p>**答：**占位符是否被翻译取决于触发通知的用户是否被允许查看对象，该字段的值必须放入通知中。&lt;/p>
&lt;p>让我们举一个通过用户门户由报告人触发的通知示例，并假设：&lt;/p>
&lt;ul>
&lt;li>门户用户的允许组织仅限于他自己的组织&lt;/li>
&lt;li>工单代理属于与报告人不同的组织&lt;/li>
&lt;li>数据模型被修改，在 UserRequest 类上定义了一个新的外部字段 &lt;code>agent_email&lt;/code>，返回代理（Person）的邮箱字段&lt;/li>
&lt;/ul>
&lt;p>在这种情况下：&lt;/p>
&lt;ul>
&lt;li>&lt;code>$this-&amp;gt;agent_email$&lt;/code> 将被替换为其值，因为门户用户正在请求查看他可以看到的 UserRequest 的 UserRequest 字段&lt;/li>
&lt;li>&lt;code>$this-&amp;gt;agent_id-&amp;gt;email$&lt;/code> &lt;strong>不会&lt;/strong>被替换，因为门户用户正在请求查看他无法查看的 Person 的 Person 字段&lt;/li>
&lt;li>&lt;code>$this-&amp;gt;html(functionalcis_list)$&lt;/code> 将仅替换为属于他自己组织的 FunctionalCI，这可能少于链接到工单的所有 FunctionalCI&lt;/li>
&lt;/ul>
&lt;p>此行为与 iTop 设计相关：&lt;/p>
&lt;ul>
&lt;li>当您可以看到对象时，您可以看到其所有字段&lt;/li>
&lt;li>访问权限按对象控制，当您无法看到对象 A（例如 Organization）时，您看不到它的任何字段&lt;/li>
&lt;li>例外是当对象 A 的字段（Organization.code）通过外部键（org_id）和外部字段（org_id_code）镜像到另一个对象 B（Person）上时。如果您可以看到对象 B（Person），那么您也可以看到已镜像的对象 A 的字段（示例中的 Organization code）&lt;/li>
&lt;/ul>
&lt;h3 id="自定义">自定义&lt;/h3>
&lt;p>&lt;strong>问：我可以自动将团队签名添加到 UserRequest 邮件通知中吗？&lt;/strong>&lt;/p>
&lt;p>&lt;strong>答：&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>自定义 Team 类，添加一个 &lt;code>signature&lt;/code> 字段，类型为 AttributeTemplateHTML，如果您想让它好看，例如带有 logo&lt;/li>
&lt;li>然后在正文末尾添加 &lt;code>$this-&amp;gt;team_id-&amp;gt;signature$&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>问：我可以在通知中发送当前对象的 id 吗？&lt;/strong>&lt;/p>
&lt;p>**答：**虽然没有 &amp;lsquo;id&amp;rsquo; 属性，但占位符 &lt;code>$this-&amp;gt;id$&lt;/code> 可用于表示 iTop 内部标识符。&lt;/p>
&lt;p>&lt;strong>问：如果我创建了多个门户，我可以发送指向特定门户的超链接吗？&lt;/strong>&lt;/p>
&lt;p>**答：**您可以通过将 portal 替换为新门户的 id 来指向任何门户。例如 &lt;code>$this-&amp;gt;hyperlink(partner-portal)$&lt;/code>&lt;/p>
&lt;p>&lt;strong>问：我可以发送指向门户中转换的超链接吗？例如，关闭工单。&lt;/strong>&lt;/p>
&lt;p>**答：**您可以在通知中添加超链接：&lt;/p>
&lt;pre tabindex="0">&lt;code>$APP_URL$pages/exec.php/object/apply-stimulus/ev_close/UserRequest/$this-&amp;gt;id$?exec_module=itop-portal-base&amp;amp;exec_page=index.php&amp;amp;portal_id=itop-portal
&lt;/code>&lt;/pre>&lt;ul>
&lt;li>将 &lt;code>ev_close&lt;/code> 替换为您要应用的刺激&lt;/li>
&lt;li>您还可以将 &lt;code>portal_id=itop-portal&lt;/code> 替换为您自己门户的代码&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:admin:placeholders">https://www.itophub.io/wiki/page?id=3_2_0:admin:placeholders&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/admin/placeholders.txt · Last modified: 2025/10/29 11:52 by 127.0.0.1&lt;/p></description></item><item><title>Docs: 通知配置示例</title><link>/docs/admin/10-notifications/notifications-step-by-step/</link><pubDate>Thu, 26 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/admin/10-notifications/notifications-step-by-step/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>本章逐步解释如何配置通知，以便在 User Request 分配给代理时发送邮件。通知将发送给工单刚刚分配到的&amp;quot;代理&amp;quot;。&lt;/p>
&lt;/div>
&lt;h2 id="创建触发器">创建触发器&lt;/h2>
&lt;p>转到&amp;quot;管理工具 / 通知&amp;quot;页面，在&amp;quot;触发器&amp;quot;选项卡中点击&amp;quot;创建新触发器&amp;quot;链接（如果还没有触发器）或点击&amp;quot;新建&amp;hellip;&amp;ldquo;按钮创建新触发器。&lt;/p>
&lt;p>当提示选择触发器类型时，选择所需的触发器类型：&lt;/p>
&lt;p>点击应用以选择此触发器类型，并在提示时填写请求的字段，其中一些可以是触发器特定的：&lt;/p>
&lt;p>然后点击&lt;strong>创建&lt;/strong>。&lt;/p>
&lt;h2 id="创建邮件操作">创建邮件操作&lt;/h2>
&lt;p>然后使用面包屑导航返回通知屏幕（您也可以再次使用&amp;quot;通知&amp;quot;菜单）。&lt;/p>
&lt;p>在通知屏幕中，跳转到&lt;strong>邮件操作&lt;/strong>选项卡：&lt;/p>
&lt;p>并点击以创建新的邮件操作。&lt;/p>
&lt;p>选择您想要的邮件操作类型。&lt;/p>
&lt;p>填写字段：&lt;/p>
&lt;p>如果此时点击创建而不链接任何触发器，您将收到警告消息：&lt;/p>
&lt;h2 id="将触发器链接到邮件操作">将触发器链接到邮件操作&lt;/h2>
&lt;p>然后切换到&lt;strong>相关触发器&lt;/strong>选项卡，并将此通知链接到您刚刚创建的触发器：&lt;/p>
&lt;p>搜索要添加的触发器 → 选择要添加的触发器 → 触发器链接后，点击创建（或应用，如果邮件操作创建已完成）。&lt;/p>
&lt;p>就是这样。&lt;/p>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:admin:notifications-step-by-step">https://www.itophub.io/wiki/page?id=3_2_0:admin:notifications-step-by-step&lt;/a>&lt;/p>
&lt;p>版本：3_2_0/admin/notifications-step-by-step.txt · Last modified: 2024/09/10 10:25 by 127.0.0.1&lt;/p></description></item><item><title>Docs: 多语言通知</title><link>/docs/admin/10-notifications/notif-multi-language/</link><pubDate>Thu, 26 Jun 2025 00:00:00 +0000</pubDate><guid>/docs/admin/10-notifications/notif-multi-language/</guid><description>
&lt;div class="pageinfo pageinfo-primary">
&lt;p>如何配置 User Request 通知，以便以被通知人员的语言发送？&lt;/p>
&lt;/div>
&lt;h2 id="人员的语言">人员的语言&lt;/h2>
&lt;p>开箱即用，iTop 不会将任何语言与 Person 关联，因此您需要修改数据模型以在 Person 类上添加一个 &lt;code>language&lt;/code> 字段。语言与用户关联，但不是每个 Person 都链接到用户。&lt;/p>
&lt;h3 id="每种语言一个通知">每种语言一个通知&lt;/h3>
&lt;p>您需要创建与您拥有的语言数量一样多的通知。&lt;/p>
&lt;ul>
&lt;li>通知标题和正文将用该语言编写&lt;/li>
&lt;li>自 iTop 3.1.0 起，通知的语言字段将设置为相同的语言&lt;/li>
&lt;li>检索要通知的人员的查询，丰富您的 OQL 以按语言过滤，因此在英语通知中，仅在 TO、CC 和 BCC 查询中返回讲英语的人员；在西班牙语通知中，执行相同的逻辑&lt;/li>
&lt;/ul>
&lt;h3 id="所有语言使用相同的触发器">所有语言使用相同的触发器&lt;/h3>
&lt;ul>
&lt;li>在触发器中，附加各种语言的不同邮件通知。&lt;/li>
&lt;/ul>
&lt;p>此解决方案的缺点是每次都会生成 2、3 个或更多通知，其中大多数是空的。&lt;/p>
&lt;h2 id="userrequest-语言">UserRequest 语言&lt;/h2>
&lt;p>您可以想象其他检索语言的逻辑：&lt;/p>
&lt;ul>
&lt;li>直接为每个 User Request 关联一种语言&lt;/li>
&lt;li>为每个组织关联一种语言，然后在 UserRequest 上定义一个 AttributeExternalField，使用客户的语言&lt;/li>
&lt;/ul>
&lt;h3 id="每种语言一个通知-1">每种语言一个通知&lt;/h3>
&lt;p>如上所述&amp;hellip;&lt;/p>
&lt;h3 id="每种语言一个触发器">每种语言一个触发器&lt;/h3>
&lt;p>在这种情况下，您应该为每种语言创建一个触发器，按语言过滤 UserRequest，并将每个触发器关联到其语言的单个通知。&lt;/p>
&lt;p>此解决方案没有第一个解决方案的缺点。&lt;/p>
&lt;hr>
&lt;p>原文：&lt;a href="https://www.itophub.io/wiki/page?id=3_2_0:admin:notif-multi-language">https://www.itophub.io/wiki/page?id=3_2_0:admin:notif-multi-language&lt;/a>&lt;/p>
&lt;p>2024/09/10 10:25 by127.0.0.1&lt;/p>
&lt;p>版本：3_2_0/admin/notif-multi-language.txt · Last modified: 2024/09/10 10:25 by 127.0.0.1&lt;/p></description></item></channel></rss>