通知

Frappe 框架中的通知文档类型提供了一种强大的方式,可以在系统中发生特定事件时,通过不同渠道自动发送通知。本指南将介绍如何有效配置和使用通知功能。

常规设置

  • 启用:开关,用于激活或停用通知。
  • 渠道:选择通知的发送方式:
    • 电子邮件:通过电子邮件发送通知
    • Slack:发送通知到 Slack 频道
    • 系统通知:在 Frappe 界面内显示通知
    • 短信:通过短信发送通知(需要配置短信设置)
  • 标准:用于开发者模式;将通知标记为标准模块的一部分

事件触发器

通知可以根据各种事件触发:

文档事件

  • 新建:创建新文档时触发
  • 保存:保存文档时触发
  • 提交:提交文档时触发
  • 取消:取消文档时触发

基于日期的事件

  • 提前天数:在日期字段值之前的指定天数触发
  • 延后天数:在日期字段值之后的指定天数触发
  • 使用这些事件时:
    • 参考日期:选择要监控的日期字段
    • 提前或延后天数:指定触发日期之前/之后的天数

基于值的事件

  • 值变更:当特定字段的值发生变化时触发
    • 变更的字段:选择要监控变化的字段

基于方法的事件

  • 方法:当调用特定文档方法时触发
    • 触发方法:指定方法名称(例如 “before_insert”、”after_update”)

自定义事件

  • 自定义:用于通过编程方式触发的通知

条件触发器

您可以通过添加条件使通知更具针对性:

  • 条件:一个 Python 表达式,必须计算结果为 True 才会发送通知
  • 条件可以访问:
    • doc:触发通知的文档
    • nowdate():当前日期函数
    • frappe.utils:工具函数

示例

  • 文档的状态为”开放”

    doc.status=="Open"
    
  • 文档的截止日期与当前日期匹配

    doc.due_date==nowdate()
    
  • 总额大于 40,000

    doc.total > 40000
    

收件人配置

电子邮件、系统通知和短信渠道

使用收件人表格配置收件人:

  1. 接收者类型:

    • 按文档字段:选择包含电子邮件地址/电话号码的字段
    • 按角色:选择接收通知的用户角色
    • 自定义:指定自定义收件人
  2. 其他选项:

    • 抄送/密送:用于电子邮件通知
    • 条件:用于有条件地包含收件人的 Python 表达式
    • 发送给所有负责人:包括分配给该文档的所有用户

对于 Slack 频道

  • 从下拉菜单中选择预定义的 Slack Webhook URL

消息配置

主题(用于电子邮件、Slack 和系统通知)

  • 输入主题行文本
  • 支持 Jinja 模板:{{ doc.name }} Delivered

消息正文

  • 消息类型:选择 HTML、Markdown 或纯文本(仅在开发者模式下可用)
  • 消息:输入通知内容
  • 使用 Jinja 模板实现动态内容

模板变量

  • {{ doc }}:访问触发文档中的任何字段(例如 {{ doc.customer }})
  • {{ comments }}:访问文档评论(例如 {{ comments[-1].comment }})
  • {% if %}...{% endif %}:条件逻辑
  • {{ nowdate() }}:当前日期

模板示例

<h3>Order Overdue</h3>

<p>Transaction {{ doc.name }} has exceeded Due Date. Please take necessary action.</p>

<!-- show last comment -->
{% if comments %}
Last comment: {{ comments[-1].comment }} by {{ comments[-1].by }}
{% endif %}

<h4>Details</h4>

<ul>
<li>Customer: {{ doc.customer }}
</li>
<li>Amount: {{ doc.grand_total }}
</li></ul>

高级选项

附件设置

  • 附加打印件:附加文档的 PDF 打印件
    • 打印格式:为附加的 PDF 选择特定的打印格式
  • 附加文件:
    • “全部”:发送触发通知的记录所附加的所有文件
    • “来自字段”:从特定的附件字段发送文件
      • 来自附件字段:选择包含您要发送的附件的字段

通知后操作

  • 提醒后设置属性:发送通知后更新字段
  • 要设置的值:在指定字段中设置的值

最佳实践

  1. 测试您的通知:使用“获取今日提醒”按钮测试基于日期的通知。
  2. 保持条件具体明确:确保您的条件具有针对性,以避免通知疲劳。
  3. 合理使用模板:使消息清晰明了,仅包含相关信息。
  4. 验证收件人字段:确保字段包含有效的电子邮件地址或电话号码。
  5. 考虑权限级别:收件人必须具有访问通知中引用文档的权限。

故障排除

  • 如果通知未发送,请检查文档是否满足所有条件。
  • 对于电子邮件通知,请验证电子邮件设置是否正确配置。
  • 对于短信通知,请确保短信设置已配置。
  • 对于 Slack 通知,请验证 Webhook URL 是否有效且处于活动状态。
  • 检查服务器日志中是否有与通知发送相关的错误。

技术说明

  • 通知采用异步处理方式,以避免对系统性能产生影响。
  • 基于日期的事件通过计划任务每天检查。
  • 文档事件通知在相关操作发生时实时触发。
  • 条件和模板在受限环境中进行评估,以确保安全性。

通过有效配置通知文档类型,您可以及时告知用户重要事件,并在 Frappe 应用中实现通信自动化。