自动化规则

自动化规则允许针对特定触发执行一个或多个预定义操作,例如,当某个字段设置为特定值时创建活动,或在最后一次更新 7 天后归档记录。

创建自动化规则时,域筛选器 允许您添加自动化规则运行必须满足的条件,例如,机会必须分配给特定的销售人员,或记录的状态必须不是 草稿

使用 Odoo Studio 创建自动化规则的步骤如下:

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

  2. 给自动化规则起一个清晰、有意义的名字,以明确其目的。

  3. 选择 触发器 并根据所选触发器填写屏幕上出现的字段。

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

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

Example

为确保跟进满意度较低的客户,该自动化规则会在销售订单创建 3 个月后为满意度低于 30% 的客户创建活动。

订阅模式自动化规则示例

小技巧

  • 使用 笔记 标签页记录自动化规则的目的和功能。这将使规则更易于维护,并促进用户之间的协作。

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

  • 通过点击悬停在看板阶段名称上时出现的 (设置) 图标,然后选择 自动化,可以从任何看板阶段创建自动化规则。在这种情况下,触发器`默认设置为 :guilabel:`阶段设置为,但必要时可以更改。

    从看板阶段创建自动化

触发器

触发器 用于定义自动化规则运行所需的活动类型。可用的触发器取决于 模型。共有五个触发器类别:

添加条件

域筛选器允许您确定自动化规则应针对或排除的记录。高效筛选可避免对不受规则影响的记录进行不必要的处理,从而提高整体性能。

小技巧

在创建自动化规则前激活开发者模式,以便最灵活地添加域筛选器。

根据所选触发器的不同,可以定义一个或多个记录在触发*前*和/或触发*后*必须满足的条件。

  • 域名更新前 定义了记录在触发事件发生*之前*必须满足的条件,例如,记录必须具有 类型 = 客户发票状态 = 已发布

    启动开发者模式 下,点击 编辑域名`(如有),然后点击 :guilabel:`新规则

  • 额外条件 或在某些情况下 应用于 筛选器定义触发事件发生后记录必须满足的条件,例如,客户发票必须具有 付款状态 = 部分支付

    如需,在 启动开发者模式 下点击 添加条件编辑域,然后点击 新规则

当发生 触发条件

Example

如果是个人而非公司的现有联系人首次设置电子邮件地址(与修改电子邮件地址相反)时应执行自动操作,则使用 电子邮件未设置`和 `公司未设置`作为 :guilabel:`域名更新前,并使用 电子邮件已设置`作为 :guilabel:`应用 域。

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

注解

:guilabel:`更新前域`在记录创建时不会执行检查。

值更新

当数据库中发生特定变化时触发自动操作。这类触发器取决于模型,并基于常见的更改,如添加特定标记(如添加到任务中)或设置字段值(如设置 用户 字段)。

选择触发器,然后根据需要选择数值。

电子邮件活动

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

时间条件

在与日期字段或记录的创建或更新相关的时间点触发自动操作。可使用以下触发器:

  • 基于日期字段:在所选日期字段的日期之前或之后的一段时间内触发操作。

  • 创建后:在创建并保存记录后的一段时间内触发该操作。

  • 上次更新后:在编辑并保存现有记录一段时间后触发该操作。

然后,您可以定义:

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

    注解

    默认情况下,调度程序每 240 分钟或 4 小时检查一次时间触发的自动化规则。对于订单日期后 3 个月或上次更新后 7 天等延迟情况,这个频率一般就足够了。

    对于少于相当于 2400 分钟或 40 小时的延迟,系统会重新计算该检查的频率,以确保尽可能遵守更细化的延迟,如事件开始日期和时间前 1 小时或创建后 30 分钟。

    屏幕上会显示一条信息,说明计划触发规则后可能出现的延迟。

    关于计划执行后可能出现延迟的信息

    要查看或手动编辑调度程序的频率,在 启动开发者模式 的情况下,进入 设置 ‣ 技术 ‣ 计划行动 查看数据库的所有调度操作。

    在搜索栏中输入`自动化`,然后在结果列表中点击 自动化规则:检查和执行。如果需要,更新 执行每个 字段的值。随时点击 手动运行,手动触发此预定操作。

  • 附加条件: 点击 添加条件,然后指定自动化规则运行时需要满足的条件。点击 新规则 添加其他条件。

当达到延迟时间并满足条件时,就会执行该操作。

Example

要在日历事件开始*前* 30 分钟发送提醒电子邮件,请选择开始(日历事件)作为触发器的日期字段,并将延迟设置为`-30`分钟

基于日期字段触发器示例

自定义

触发自动操作:

  • 保存时:保存记录时。

  • 删除时:删除记录时。

  • 用户界面更改时:当字段值在 表格视图 上更改时,甚至在保存记录之前。

对于 :guilabel:`保存时`和 :guilabel:`当 UI 变更时`这两种触发器,您**必须**在 :guilabel:`更新时`字段中选择一个或多个用于触发此自动化规则的字段。

警告

如果在 :guilabel:`更新时`字段中没有选择任何字段,该自动化操作可能会对同一条记录执行多次。

(可选)您还可以在 :guilabel:`应用于`字段中定义额外的触发条件。

Example

要触发记录创建时的自动化操作(例如,当创建新联系人时),请选择 保存时 <studio/automated-actions/trigger-custom>`触发器,并使用 `ID 未设置`作为 :guilabel:`更新前作用域,使用 ID 已设置`作为 :guilabel:`应用范围

保存新联系人时,会自动为其分配一个数据库 ID,从而触发自动化规则。

创建记录时触发操作的示例

注解

:guilabel:`(界面更改时)`触发器只能与 :ref:`执行代码 <studio/automated-actions/action-execute-code>`操作配合使用,并且仅在手动进行修改时才会生效。如果字段是通过另一条自动化规则更改的,该操作则不会执行。

外部

使用 网络钩子,根据外部系统或应用程序中的特定事件触发自动操作。

在 Odoo 中配置网络钩子(生成网络钩子 URL 并定义目标记录)后,需要在外部系统中实施。

警告

*强烈建议*在决定使用网络钩子和整个实施过程中咨询开发人员、解决方案架构师或其他技术人员。如果配置不当,网络钩子可能会扰乱 Odoo 数据库,并可能需要一段时间才能恢复。

基于日期字段触发器示例

注解

还可以设置一个自动操作,当 Odoo 数据库中发生事件时,该操作 向外部系统的网络钩子 发送数据。

操作

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

小技巧

您可以为同一自动化规则定义多个操作。默认情况下,操作会按照定义的顺序执行。

这意味着,例如,如果您定义了一个 更新记录 操作,然后又定义了一个 发送电子邮件 操作,其中电子邮件引用了已更新的字段,则电子邮件将使用已更新的值。但是,如果在:guilabel:`更新记录`操作之前定义了:guilabel:`发送电子邮件`操作,则电子邮件将使用更新记录*之前*设置的值。

要更改已定义操作的顺序,请点击操作旁边的 :icon:`oi-draggable`(拖动柄)`图标,并将其拖动到所需位置。

更新记录

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

如果您选择了 many2many 字段,请选择是否必须通过 添加删除设置为`选定值或 :guilabel: 清除`来更新该字段。

Example

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

更新记录操作示例

小技巧

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

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

创建活动

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

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

  • 要针对动态链接到记录的用户,请选择 动态用户(基于记录),并根据需要更改 用户字段

Example

将潜在客户转化为商机后,您希望自动操作为负责该潜在客户的用户发起呼叫。要执行此操作,请将 活动类型 设为 呼叫,并将 用户类型 设为 动态用户(基于记录)

创建活动操作示例

发送电子邮件和发送短信

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

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

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

  • 备注:将消息作为内部备注发送,内部用户可在沟通栏中看到。

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

  • 短信(带备注):将短信作为文本消息发送给 短信模板 的收件人,并作为内部备注发布在沟通栏中。

  • 仅限备注:只将消息作为内部备注发布在沟通栏中。

发送 WhatsApp

重要

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

此操作用于向链接到特定记录的联系人发送 WhatsApp 消息。要执行此操作,请从下拉菜单中选择适当的WhatsApp 模板

添加关注者和删除关注者

此操作用于订阅/取消订阅现有联系人到记录/从记录取消订阅。

创建记录

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

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

注解

链接字段 字段相关的下拉列表只包含当前模型上存在的 one2many 字段 字段,这些字段与目标模型上的 many2one 字段 字段链接。

小技巧

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

执行代码

重要

对于需要执行 自定义代码

此操作用于执行 Python 代码。您可以使用以下变量将代码写入 代码 选项卡:

  • env:触发操作的环境

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

  • 记录:触发操作的记录;可能无效

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

  • timedatetimedateutiltimezone:实用的Python时间处理库

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

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

  • _logger.info(message):在服务器日志中发布消息的日志程序

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

  • 指令:x2many 指令命名空间

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

小技巧

可用变量在 代码帮助 选项卡中均有说明。

其他资料

Odoo 的 ORM 功能

发送 Webhook 通知

此操作用于向 URL 字段中指定的 webhook URL 发送包含所选 字段 值的 POST API 请求。

示例数据负载 可预览请求中包含的数据,这些数据来自随机记录(若存在记录)或虚拟数据(若无可用记录)。

注解

您还可以设置自动化动作,以便在外部系统发生预定义事件时,通过网络钩子接收来自该外部系统的数据

执行现有行动

该操作用于同时触发多个操作(链接到当前模型)。要执行此操作,请点击添加一行,然后在添加:子操作弹出窗口中,选择现有操作或点击新建以创建新操作。