自动化规则

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

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

使用 Odoo 定制 创建自动化规则:

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

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

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

  4. 待办操作 标签中点击 添加操作

  5. 选择 类型 操作,并根据所选操作填写相关字段。

  6. 点击 保存并关闭保存并新建,定义其他操作。

Example

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

订阅模式自动化规则示例

小技巧

  • 使用 说明 选项卡记录自动化规则的目的和功能。这将使规则更易于维护,并促进用户之间的协作。

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

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

    从看板阶段创建自动化

触发器

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

添加条件

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

小技巧

在创建自动化规则前 :ref:` 激活开发者模式 <developer-mode>`,以便最灵活地添加域筛选器。

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

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

    激活开发者模式后,点击 编辑域`(如果可用),然后点击 :guilabel:`新规则

  • 应用于 域定义了触发事件发生*后*记录必须满足的条件,例如,客户发票必须具有 付款状态 = 部分支付

    激活开发者模式后,点击 编辑域 然后点击 新规则

    小技巧

    如果未激活开发者模式,要定义 应用于 域,请点击 添加条件。完成或删除建议的条件。要添加条件,请点击 新规则

触发 时,例如,已入账客户发票的付款状态被更新,自动化规则会检查所定义的条件,并仅在记录符合这些条件时执行 操作

Example

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

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

注解

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

值更新

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

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

电子邮件活动

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

时间条件

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

  • 基于日期字段:在所选日期字段的日期*之前或之后*的一段指定时间内触发操作,例如,在合同结束日期之前 30 天。

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

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

要配置 时间条件 触发器,并使用 启动开发模式

  1. 时间条件 类别中选择适当的 触发器。如果选择 基于日期字段 触发器,请选择相关日期字段。

  2. 配置 延迟`时间,以确定操作的*执行日期时间*。要执行此操作,请输入应触发操作的 :guilabel:`分钟小时。如果选择了 基于日期字段 触发方式,则可在所选日期字段的 之后之前 触发操作。

  3. (可选)为记录添加触发规则之前和 / 或之后必须满足的条件,请参考:添加条件

  4. 点击 手动保存

  5. 点击 计划的操作,打开 自动化规则:检查并执行 计划的操作。

    注解

    该计划动作会检查自上次运行以来已到达的执行时间点,并在符合条件时执行相关动作。此计划动作默认 :guilabel:`执行间隔`为 4 小时,该频率通常足以满足 “订单日期后 3 个月” 或 “最后更新后 7 天” 这类延迟需求。

    如果任何自动化规则具有基于时间的触发器,且延迟时间小于相当于40小时的时间,例如,在事件开始日期时间前3小时,则计划的执行频率会自动增加,例如,增加到 每18分钟执行一次。这允许该操作更接近其计划的执行日期时间。

  6. 点击左上角的 手动运行

    警告

    这一步对于防止在历史记录上追溯运行规则至关重要。手动运行计划的操作会初始化自动化规则中*上次运行*的时间戳,这是规则的 执行逻辑 的关键元素。

  7. 点击面包屑导航中的自动化规则名称,返回自动化规则配置页面。

  8. 添加 需要执行的动作,所有动作定义完成后,点击图标 手动保存

当执行时间到达后,且满足触发条件时,该动作将在 :guilabel:`自动化规则:检查并执行`计划动作首次运行时触发。

执行逻辑

采用时间触发条件时,动作仅在以下场景执行:执行时间需落在计划动作上一次运行与本次运行的时间区间内(无论本次运行为定时触发或手动触发),即:

上一次运行 → 执行时间 → 本次运行

注解

手动运行 :guilabel:`自动化规则:检查并执行`计划动作,并不一定会触发该规则对应的动作。测试基于时间触发的自动化规则时,请先确保上述时间顺序成立,再检查动作是否已执行。

Example

10 月 15 日上午,您创建了一条自动化规则:要求在 合同结束日期 的前 30 天自动发送邮件;合同的到期时间统一为结束当日的晚上 11 点 59 分。在创建该规则期间,自动化规则:检查并执行 计划动作已于上午 11 点完成手动触发,且该计划动作的定时执行频率设为每 4 小时一次。

这条新规则*仅适用于*规则创建之日起至少 30 天后到期的合同,即合同结束日期需为 11 月 14 日及之后。

以一份 11 月 14 日到期的合同为例:该规则的执行时间为 10 月 15 日晚上 11 点 59 分。因此,动作会在该执行时间到达后,于 :guilabel:`自动化规则:检查并执行`计划动作的下一次运行时触发 ,具体时间线如下:

  • 计划动作上一次运行时间:10 月 15 日晚上 11 点

  • 规则执行时间:10 月 15 日晚上 11 点 59 分

  • 计划动作本次运行时间:10 月 16 日凌晨 3 点

自定义

触发自动操作:

  • 创建时:首次保存记录时。

  • 创建和编辑时:首次保存记录时和以后任何时候。

  • 删除时:删除记录时。

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

对于:guilabel:创建或编辑记录时 和:guilabel:界面变更时 这两种触发器,您必须随后在 更新字段时 选项中选定用于触发自动化规则的对应字段。

警告

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

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

注解

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

外部

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

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

警告

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

基于日期字段触发器示例

注解

还可以设置一个自动操作,当 Odoo 数据库中发生事件时,该操作 :ref:` 向外部系统的网络钩子 <studio/automated-actions/action-webhook>` 发送数据。

操作

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

小技巧

  • 如果没有输入明确的名称,操作名称将根据您定义的操作自动生成;名称可随时更新。

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

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

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

更新记录

此操作用于更新记录的一个(相关)字段。有以下选项:

  • 更新:使用指定值更新所选字段。

  • AI 更新:根据所提供的人工智能提示动态更新所选字段。此选项需要安装 Odoo AI 应用程序。

  • 序列:使用定义的序列更新所选字段。

  • 计算:使用 Python 代码动态更新所选字段。

定义操作:

  1. 选择 更新AI更新序列计算 选项后,选择或搜索要更新或计算的字段。如有需要,请点击字段名旁的 :guilabel:`(右箭头)`以访问相关字段列表。

  2. 根据所选选项提供相应信息。

更新

选择或输入字段的更新值。

如果要更新的是 多对多字段,请选择该字段的更新方式:是通过 添加、:guilabel:`移除`或 :guilabel:`设置为`所选值,还是通过 :guilabel:`清空`来操作。

Example

若需通过自动化动作从客户记录中移除某个标签,请将 更新 字段设置为 客户 > 标签,选择 移除 方式,然后选择要移除的标签。

更新记录操作示例

AI 更新

输入提示,指示 Odoo AI 如何更新字段。键入 / 打开 AI 提示工具;使用 字段选择器 告诉 Odoo AI 要检查哪些相关字段,以及 记录选择器 为更新字段提供可能的值。

Example

如果您希望自动化规则根据员工的专长更新新创建任务的 负责人 字段,您可以编写一个提示,指示 Odoo AI 检查任务的 显示名称 字段的上下文,然后分配最合适的员工。

使用 AI 更新记录示例

序列

选择现有序列,或按以下步骤新建序列:

  1. 点击 更多搜索,然后点击 新建

  2. 在弹出的窗口中,输入序列的 名称

  3. 序列 选项卡中,配置序列:

    • 前缀:在序列中的下一个数字*之前*添加的字符。

    • 后缀:在序列中下一个数字*后*添加的字符。

    • 序列大小:决定序列中每个数字的位数。如有必要,会在数字前加上前导零,以达到指定的序列大小,例如,序列大小为 5`时,序列中的第一个数字为 `00001

    • 步骤:确定序列中数字之间的增量。

    • 下一个编号:序列中将使用的下一个数字,不包含前导零。

    小技巧

    • 使用如 %(year)s%(month)s 之类的动态占位符作为 前缀 和/或 后缀,以创建包含当前年份、月份等元素的序列。可能的占位符显示在窗口底部。

    • 要使用子序列(例如,使序列每年或每月重新开始),请启用 按日期范围使用子序列,然后为每个日期范围 添加一行 并指明该范围的 下一个编号

  4. 点击 保存

Example

如果您希望自动操作在每次创建新客户时创建一个顺序客户参考,请将 序列 字段设置为 参考,然后在下拉菜单中点击 搜索更多。点击 新建 创建新序列。

在此示例中,每位新客户会收到一个带有前缀 #-REF-%(year)s- 的顺序参考号,其中 %(year)s 是包含世纪的当前年份,后缀为 /CL。例如:#-REF-2025-00001/CL#-REF-2025-00002/CL 等。

使用序列更新记录操作示例

计算

输入用于计算字段值的代码。

Example

若需在任务优先级设为“非常高”(三星)时,通过自动化规则计算自定义的 日期时间字段 升级时间,您可将触发条件 :guilabel:`优先级设为`定义为“非常高”,并按以下方式配置 :guilabel:`更新记录`动作:

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

创建记录与复制记录

此类动作用于在任何模型上创建新记录或复制现有记录。

定义操作:

  1. 选择 创建记录复制记录 作为相关的 类型 操作,在 待创建记录 字段中选择所需的模型;该字段默认包含当前模型。

  2. 指定记录的 名称;若为复制记录操作,请在 :guilabel:`复制来源`字段中指明被复制的原记录。

  3. 若需在其他模型上创建新记录或复制记录,请在 链接字段 中选择相应字段,以关联触发此操作的原始记录。

小技巧

链接字段 下拉菜单仅显示当前模型中存在的 一对多字段,这些字段需与目标模型中的 多对一字段 建立关联。

Example

若需在商机状态设为`已赢单`时,通过自动化规则复制项目(例如包含预设任务的项目模板),请在*项目*模型中创建自定义的关联商机 多对一字段,并在线索模型中创建自定义的关联项目 一对多字段,随后按以下说明配置被复制记录的详细信息:

跨模型复制记录

小技巧

若需更新新建记录或复制记录的字段,您可创建包含 更新记录 操作的其它自动化规则。例如:通过 创建记录 动作创建新的项目任务后,可使用 :guilabel:`更新记录`动作将其分派给指定用户。

创建活动

该操作用于安排与记录相关联的新活动。

定义操作:

  1. 创建活动 选为 类型 操作,从下拉菜单中选择适当的 活动类型

  2. 输入 标题

  3. 通过在 截止于`字段中指定相应的 :guilabel:`天 数,来设定活动的预期完成时间。

  4. 选择 用户类型

    • 若需始终将活动分配给同一用户,请选择 指定用户,然后在 :guilabel:`负责人`字段中添加该用户。

    • 若需动态指定与记录相关联的用户,请选择 动态用户(基于记录)。如有需要,可通过点击占位字段名称来更改 用户字段,并在弹出的列表中选择或搜索相应的用户字段。点击字段名称旁的 :icon:`oi-chevron-right`可访问相关字段(如需)。

  5. 可选操作:添加 备注 以提供关于活动的更多信息。

Example

在向高预期收入的商机发送方案后,您可为销售团队负责人创建一项致电潜在客户的活动,以提高成交机会。

要执行此操作,请将 活动类型 设置为 电话,并将 用户类型 设置为 动态用户(基于记录) 。点击占位字段,选择 销售团队,接着点击 (右箭头)`并选择 :guilabel:`团队负责人

创建活动操作示例

发送电子邮件和发送短信

这些操作用于向链接到特定记录的联系人发送电子邮件或短信。

定义操作:

  1. 选择 发送电子邮件发送短信 作为 类型 操作,选择或创建 电子邮件模板短信模板

  2. 发送电子邮件为发送电子邮件为 字段中,选择发送电子邮件或短信的方式。

    对于电子邮件,请选择:

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

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

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

    对于短信,请选择:

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

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

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

发送 WhatsApp

重要

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

此操作用于向链接到特定记录的联系人发送 WhatsApp 消息。

发送 WhatsApp 选为 类型 操作,从下拉菜单中选择适当的 :guilabel:`WhatsApp 模板。

添加关注者和删除关注者

此操作用于订阅/退订现有联系人为记录的关注者。

选择 添加关注者删除关注者 作为相关的 类型 操作,然后选择 关注者类型

  • 要始终添加/删除相同的联系人,请选择 特定关注者,然后从下拉菜单中选择联系人。可以添加/删除多个联系人。

  • 要动态添加/删除与记录链接的联系人,请选择 动态关注者。如有需要,请更改 关注者字段 ,方法是点击占位符字段名,然后在出现的列表中选择或搜索伙伴字段。点击字段名旁的 (右箭头),可根据需要访问相关字段。

Example

为了让客户了解项目的进展情况,当项目任务设置为 `进行中`时,该自动操作会将相关客户添加为关注者。

当项目任务设置为进行中时,将客户添加为追随者

执行代码

重要

对于需要执行 自定义代码

此操作用于执行 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 请求。

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

注解

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

多重操作

此动作用于同时触发多个(与当前模型关联的)动作。

配置操作步骤:

  1. 选择 多重操作`作为操作的 :guilabel:`类型,然后点击 添加操作

  2. 在 :guilabel:`添加:子操作`弹出窗口中:

    • 选择一个或多个现有操作,然后点击 选择;或

    • 点击 新建,定义要执行的动作,随后点击 保存并关闭;如需继续创建其他动作,可点击 保存并新建

  3. 按需重复上述步骤。

定义要执行的多个动作