自动化规则

自动化规则用于根据用户操作(例如,当字段设置为特定值时应用修改)、电子邮件事件、时间条件(例如,在最后一次更新后的 7 天内归档记录)或外部事件触发自动更改。

使用 Studio 创建自动化规则,请按以下步骤操作:

  1. 打开 Studio 并点击 自动化 ,然后点击 新建

  2. 选择 触发器 ,并在必要时根据所选触发器填写屏幕上显示的字段。

  3. 点击 添加操作 ,然后选择 操作类型 操作 并根据所选操作填写屏幕上显示的字段。

  4. 点击 保存并关闭保存并新建

Example

Example of an automated action on the Subscription model

小技巧

  • 要修改自动化规则的 模型 ,请在 Studio 中点击 自动化 之前切换模型,或者 激活开发者模式 ,创建或编辑自动化规则,并在 自动化规则 表单中选择 模型

  • 您还可以通过点击看板阶段名称旁边的齿轮图标( ),然后选择 自动化 来从任何看板阶段创建自动化规则。在这种情况下, 触发器 默认设置为 阶段被设置为 ,但您可以根据需要更改它。

    从看板阶段创建自动化

触发器

触发器 用于定义何时应应用自动化规则。可用的触发器取决于 模型 。总体上提供五个触发器类别:

小技巧

您还可以定义 更新前域 ,以指定在触发自动化规则之前必须满足的条件。相比之下,使用 额外条件应用范围 筛选器定义的条件是在自动化规则执行期间检查的。

要定义 更新前域 ,请 激活开发者模式 ,创建或编辑自动化规则,点击 编辑域 ,然后点击 新建规则

例如,如果您希望在为以前没有电子邮件地址的联系人设置电子邮件地址时(而不是修改其现有地址时)触发自动化操作,请将 更新前域 定义为 未设置电子邮件 ,并将 应用范围 定义为 已设置电子邮件

带有更新前域的触发器示例

值更新

此类别中可用的触发器取决于模型,并基于常见的字段更改,例如添加特定标签(例如,任务标签)或设置 用户 字段。选择触发器,然后根据需要选择一个值。

字段值更新触发器示例

电子邮件活动

在接收或发送电子邮件时触发自动化操作。

时间条件

根据日期字段触发自动化操作。以下触发器可用:

  • 基于日期字段 :选择要与 延迟 字段一起使用的字段。

  • 创建后 :当记录被创建并保存时触发操作。

  • 最后更新后 :当现有记录被编辑并保存时触发操作。

然后您可以定义:

  • 延迟 :指定分钟、小时、天或月的数量。若要在触发日期之前触发操作,请指定负数。如果您选择了 基于日期字段 触发器,则还必须选择用于确定延迟的日期字段。

  • 额外条件 :点击 添加条件 ,然后指定触发自动化规则所需的条件。点击 新建规则 添加另一个条件。

当达到延迟时间且条件满足时,操作将被触发。

Example

如果您希望在日历事件开始前 30 分钟发送提醒电子邮件,请在 触发日期 下选择 开始(日历事件) ,并将 延迟 设置为 -30 分钟

基于日期字段的触发器示例

注解

默认情况下,调度程序每 4 小时检查一次触发日期,这意味着基于时间的自动化可能无法始终保证较低的时间粒度。

自定义

触发自动化操作:

  • 保存时 :当记录被保存时;

  • 删除时 :当记录被删除时;

  • UI 更改时 :在 表单视图 中字段值被更改时触发,即使在保存记录之前也会触发。

对于 保存时UI 更改时 触发器,您 必须更新时 字段中选择用于触发自动化规则的字段。

警告

如果未在 更新时 字段中选择任何字段,则每个记录可能会多次执行自动化操作。

可选地,您还可以在 应用范围 字段中定义触发自动化规则所需的附加条件。

注解

UI 更改时 触发器只能与 执行代码 操作一起使用,并且仅在手动修改时生效。如果字段通过另一个自动化规则更改,则不会执行该操作。

外部

使用 Webhook 根据外部事件触发自动化操作。Webhook 是两个系统之间的通信方法,源系统基于特定事件向目标系统发送 HTTP(S) 请求。它通常包含一个数据负载,其中包含有关所发生事件的信息。

要配置 Webhook 时 触发器,请将 Odoo 生成的 URL 复制到目标系统(即接收请求的系统)。然后,在 目标记录 字段中输入代码,以定义要使用自动化规则更新的记录。

警告

URL 必须被视为 机密信息;在线或不加注意地分享它可能会使您的系统暴露于恶意攻击者。如有必要,请点击 轮换密钥 按钮以更改 URL 的密钥。

注解

  • 目标记录 字段中默认定义的代码适用于来自另一个 Odoo 数据库的 Webhook。它用于根据负载中的信息确定要更新的记录。

  • 如果您希望将 Webhook 的内容用于查找记录以外的目的(例如, 创建 记录),唯一的选择是使用 执行代码 操作。在这种情况下, 目标记录 字段必须包含任何有效的代码,但其结果不会对自动化操作本身产生影响。

  • Webhook 内容在服务器动作上下文中作为 payload 变量可用(即,包含传入请求的 GET 参数或 POST JSON 正文的字典)。

您还可以选择 记录调用 来记录接收到的有效载荷,例如,确保源系统发送的数据符合预期的格式和内容。这也有助于识别和诊断可能出现的任何问题。要访问日志,请点击 自动化规则 表单顶部的 日志 智能按钮。

参见

Web钩子

操作

定义完自动化规则的 触发器 后,点击 添加操作 以定义要执行的操作。

小技巧

您可以为同一触发器/自动化规则定义多个操作。这些操作将按照定义的顺序执行。这意味着,例如,如果您定义了一个 更新记录 操作,然后定义了一个 发送电子邮件 操作,电子邮件将使用更新后的值。然而,如果 发送电子邮件 操作定义在 更新记录 操作之前,则电子邮件将使用在更新操作运行 之前 设置的值。

更新记录

此操作允许更新记录的一个(相关)字段。点击 更新 字段,然后在打开的列表中选择或搜索要更新的字段;如果需要,可以点击字段名称旁边的右箭头以访问相关字段列表。

如果您选择了 多对多字段 ,请选择字段是否应通过 添加移除设置为 所选值来更新,或者通过 清空 来更新。

Example

如果希望自动化操作从客户记录中移除标签,请将 更新 字段设置为 客户 > 标签 ,选择 通过移除 ,然后选择要移除的标签。

更新记录操作示例

小技巧

另外,您还可以使用 Python 代码动态设置记录的字段。为此,请选择 计算 而不是 更新 ,然后输入用于计算字段值的代码。例如,如果您希望自动化规则在任务优先级设置为 (通过星标任务)时计算一个自定义 日期时间字段 ,您可以将触发器定义为 优先级设置为 ,并按如下方式定义 更新记录 操作:

使用 Python 表达式计算自定义日期时间字段

创建活动

此操作用于安排与记录相关的新活动。选择 活动类型 ,输入 标题 和描述,然后在 到期日期 字段中指定活动的计划时间,并选择 用户类型

  • 如果始终将活动分配给同一用户,请选择 特定用户 并在 负责人 字段中添加用户;

  • 如果需要动态定位与记录关联的用户,请选择 动态用户(基于记录) ,并在必要时更改 用户字段

Example

在潜在客户转化为机会后,您希望自动化操作为负责该潜在客户的用户安排一次电话联系。为此,请将 活动类型 设置为 电话 ,并将 用户类型 设置为 动态用户(基于记录)

创建活动操作示例

发送电子邮件和发送短信

这些操作用于向与特定记录关联的联系人发送电子邮件或短信。为此,请选择或创建一个 电子邮件模板短信模板 ,然后在 以何种方式发送邮件以何种方式发送短信 字段中,选择发送电子邮件或短信的方式:

  • 电子邮件 :将消息作为电子邮件发送给 电子邮件模板 的收件人。

  • 消息 :在记录上发布消息并通知记录的关注者。

  • 备注 :将消息作为内部备注发送,在讨论记录中对内部用户可见。

  • 短信(无备注) :将消息作为短信发送给 短信模板 的收件人。

  • 短信(带备注) :将消息作为短信发送给 短信模板 的收件人,并将其作为内部备注发布在讨论记录中。

  • 仅备注 :仅将消息作为内部备注发布在讨论记录中。

发送 WhatsApp

重要

要自动发送 WhatsApp 消息,必须创建一个或多个 WhatsApp 模板

此操作用于向与特定记录关联的联系人发送 WhatsApp 消息。为此,请从下拉菜单中选择适当的 WhatsApp 模板

添加关注者和移除关注者

使用这些操作将现有联系人订阅或取消订阅到/从记录中。

创建记录

此操作用于在任何模型上创建新记录。

要创建的记录 字段中选择所需的模型;默认情况下包含当前模型。为记录指定一个 名称 ,然后如果您希望在另一个模型上创建记录,请在 链接字段 字段中选择一个字段,以链接触发新记录创建的记录。

注解

链接字段 相关的下拉列表仅包含当前模型中存在的、与目标模型上的 多对一字段 关联的 一对多字段

小技巧

如果需要,您可以使用 更新记录 操作创建另一个自动化规则,以更新新记录的字段。例如,您可以使用 创建记录 操作创建一个新的项目任务,然后使用 更新记录 操作将其分配给特定用户。

执行代码

此操作用于执行 Python 代码。您可以使用以下变量将代码写入 代码 标签页:

  • env :触发操作的环境

  • model :触发操作的记录的模型;是一个空记录集

  • record :触发操作的记录;可能为空

  • records :在多模式下触发操作的所有记录的记录集;可能为空

  • timedatetimedateutiltimezone :有用的 Python 库

  • float_compare :根据特定精度比较浮点数的实用函数

  • log(message, level='info') :日志函数,用于在 ir.logging 表中记录调试信息

  • _logger.info(message) :用于在服务器日志中发出消息的日志记录器

  • UserError :用于引发面向用户的警告消息的异常类

  • Command :x2many 命令命名空间

  • action = {...} :用于返回一个操作

小技巧

可用变量在 代码帮助 标签页中均有描述。

发送 Webhook 通知

此操作允许将 字段 的值作为 POST 请求发送到 URL 字段中指定的 URL。

示例有效载荷 提供了请求中包含的数据预览,使用随机记录的数据或虚拟数据(如果没有可用记录)。

执行现有行动

此操作用于同时触发多个操作(与当前模型相关联)。为此,请点击 添加一行 ,然后在 添加:子操作 弹出窗口中选择现有操作或点击 新建 创建新操作。