自动化规则

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

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

要使用 Odoo Studio 创建自动化规则:

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

  2. 为自动化规则起一个清晰、有意义的名称,以标识其用途。

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

  4. 待执行操作 选项卡中单击 添加操作

    小技巧

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

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

  6. 单击 保存并关闭 ,或者要定义其他操作,请单击 保存并新建

Example

为确保对不太满意的客户进行跟进,此自动化规则在为满意度百分比低于 30% 的客户创建销售订单 3 个月后创建一项活动。

订阅模型上的自动化规则示例

小技巧

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

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

  • 可以从任何看板阶段创建自动化规则,方法是悬停在看板阶段名称上时单击出现的 (设置) 图标,然后选择 自动化 。在这种情况下, 触发器 默认设置为 阶段设置为 ,但可以根据需要进行更改。

    从看板阶段创建自动化

触发器

触发器 用于定义需要发生何种事件才能运行自动化规则。可用的触发器取决于 模型 。总共有五种触发器类别:

添加条件

域过滤器允许您确定自动化规则应定位或排除的记录。高效的过滤可以提高整体性能,因为它避免了对不受规则影响的记录进行不必要的处理。

小技巧

在创建自动化规则之前 激活开发者模式 ,以便在添加域过滤器时具有最大的灵活性。

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

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

    激活开发者模式后,单击 编辑域 (如果可用),然后单击 新建规则

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

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

    小技巧

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

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

Example

如果应在为现有联系人(是个人而非公司)首次设置电子邮件地址(与修改电子邮件地址相对)时执行自动化操作,请使用 电子邮件未设置不是公司 作为 更新前域 ,并使用 电子邮件已设置 作为 应用于 域。

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

注解

创建记录时不会检查 更新前域

值更新

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

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

电子邮件活动

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

时间条件

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

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

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

  • 最后更新后 :操作在现有记录编辑并保存后的指定时间段触发。

然后您可以定义:

  • 一个 延迟 :指定操作应触发的 分钟小时 数。如果选择了 基于日期字段 触发器,操作可以在所选日期字段 之后之前 触发。

    注解

    默认情况下,调度程序每 240 分钟(即 4 小时)检查一次时间触发的自动化规则。此频率通常足以满足诸如订单日期后 3 个月或最后更新后 7 天等延迟。

    对于少于 2400 分钟(即 40 小时)的延迟,系统会重新计算此检查的频率,以确保更精细的延迟(例如,事件开始日期和时间前 1 小时,或创建后 30 分钟)可以尽可能接近地得到遵守。

    要查看或手动编辑时间触发自动化规则的调度程序频率,在 启用开发者模式 的情况下,单击 计划操作

    自动化计划操作的直接链接

    在打开的 自动化规则:检查并执行 计划操作中,根据需要更新 执行频率 字段的值。单击 手动运行 会立即触发计划操作运行。要返回自动化规则设置,请单击面包屑中的自动化规则名称。

  • 额外条件 :单击 添加条件 ,然后指定自动化规则运行所需满足的条件。单击 新规则 以添加另一个条件。

当达到延迟且满足条件时,操作将被执行。

自定义

触发自动化操作:

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

  • 创建和编辑时 :当记录首次保存及之后的任何时间保存时。

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

  • UI 更改时 :当在 表单视图 上更改字段值时,即使在记录保存之前。

对于 创建和编辑时UI 更改时 触发器,您 必须更新时 字段中选择用于触发自动化规则的字段。

警告

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

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

注解

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

外部

使用 webhook 基于外部系统或应用程序中的特定事件触发自动化操作。

在 Odoo 中配置 webhook(生成 webhook 的 URL 并定义目标记录)后,需要在外部系统中实现它。

警告

强烈建议 在决定使用 Webhook 并在整个实施过程中咨询开发人员、解决方案架构师或其他技术角色。如果配置不当,Webhook 可能会破坏 Odoo 数据库,并且恢复可能需要时间。

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

注解

还可以设置一个自动化操作,当您的 Odoo 数据库中发生事件时, 将数据发送到外部系统的 webhook

操作

定义自动化规则的 触发器 后,单击 待执行操作 标签页中的 添加操作 以定义要执行的操作。

小技巧

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

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

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

更新记录

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

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

  • 使用 AI 更新 :根据提供的 AI 提示动态更新所选字段。此选项需要安装 Odoo AI 应用。

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

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

要定义操作:

  1. 选择 更新使用 AI 更新序列计算 选项(根据情况),然后选择或搜索要更新或计算的字段。如果需要,单击字段名称旁边的 (右箭头) 以访问相关字段列表。

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

更新

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

如果要更新 多对多字段 ,请选择是通过 添加移除设置为 所选值还是通过 清空 来更新字段。

Example

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

更新记录操作示例

使用 AI 更新

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

Example

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

使用 AI 更新记录的示例

序列

选择现有序列,或者要创建新序列:

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

  2. 在打开的窗口中,输入序列的 名称

  3. 配置序列,根据需要添加 前缀 和/或 后缀

    小技巧

    前缀 和/或 后缀 中使用动态占位符,例如 带世纪的当前年份:%(year)s ,以创建包含当前年份、月份等元素的序列。可能的占位符显示在窗口底部。

  4. 单击 保存

Example

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

在此示例中,每个新客户都会收到一个带有前缀 `

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

计算

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

Example

如果您希望自动化规则在任务优先级设置为 非常高 (三颗星)时计算自定义 日期时间字段 升级于 ,您可以将触发器 优先级设置为 定义为 非常高 ,并按如下方式定义 更新记录 操作:

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

创建记录和复制记录

这些操作用于在任何模型上创建新的或复制的记录。

要定义操作:

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

  2. 为记录指定一个 名称 ,或者,如果操作是复制记录,请在 复制自 字段中指明要复制的记录。

  3. 如果要在另一个模型上创建新的或复制的记录,请在 链接字段 字段中选择一个字段,以链接触发新记录或复制记录创建的记录。

小技巧

链接字段 下拉菜单仅包含当前模型上存在的 一对多字段 ,这些字段链接到目标模型上的 多对一字段

Example

如果您希望自动化规则在机会设置为 已赢得 时复制项目(例如,带有预定义任务的项目模板),请在 项目 模型上添加一个自定义的 相关机会 多对一字段 ,并在 线索 模型上添加一个自定义的 相关项目 一对多字段 ,然后提供有关要复制的记录的以下详细信息:

在不同模型中复制记录

小技巧

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

创建活动

此操作用于安排与记录链接的新活动。

要定义操作:

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

  2. 输入 标题

  3. 通过在 截止日期在 字段中指定 的数量来指示活动应在何时完成。

  4. 选择 用户类型

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

    • 要动态定位与记录链接的用户,请选择 动态用户(基于记录) 。如果需要,通过单击占位符字段名称,然后在出现的列表中选择或搜索用户字段来更改 用户字段 。单击字段名称旁边的 (右箭头) 允许您在需要时访问相关字段。

  5. 可选地,添加 备注 以提供有关活动的更多信息。

Example

在向具有高预期收入的机会发送提案后,您希望为销售人员的团队负责人创建一个活动,以致电潜在客户,从而增加成交的机会。

为此,将 活动类型 设置为 电话 ,并将 用户类型 设置为 动态用户(基于记录) 。单击占位符字段并选择 销售团队 ,然后单击 (右箭头) 并选择 团队负责人

创建活动操作示例

发送电子邮件和发送短信

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

要定义操作:

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

  2. 发送电子邮件为发送短信为 字段中,选择您希望如何发送电子邮件或短信。

    对于电子邮件,选择:

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

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

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

    对于短信,选择:

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

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

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

发送 WhatsApp

重要

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

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

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

添加关注者和移除关注者

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

选择 添加关注者移除关注者 作为操作的 类型 后,根据情况选择 关注者类型

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

  • 要动态添加/移除与记录关联的联系人,请选择 动态关注者 。如果需要,通过单击占位符字段名称,然后在出现的列表中选择或搜索合作伙伴字段来更改 关注者字段 。单击字段名称旁边的 (右箭头) 允许您在需要时访问相关字段。

Example

为了让客户了解项目进度,此自动化操作在项目任务设置为 进行中 时将相关客户添加为关注者。

项目任务设置为进行中时将客户添加为关注者

执行代码

重要

对于需要执行 自定义代码 的自动化规则,请注意自定义代码的维护不包含在 标准自定义 定价计划中,并且会产生 额外费用

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

  • env :触发操作的环境

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

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

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

  • timedatetimedateutiltimezone :有用的 Python 库

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

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

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

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

  • Command :x2many 命令命名空间

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

小技巧

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

发送 Webhook 通知

此操作用于将所选 字段 的值通过 POST API 请求发送到 URL 字段中指定的 webhook URL。

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

注解

还可以设置一个自动化操作,当外部系统中发生预定义事件时, 使用 webhook 从外部系统接收数据

多重操作

此操作用于同时触发多个操作(链接到当前模型)。

要定义操作:

  1. 选择 多重操作 作为操作的 类型 后,单击 添加操作

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

    • 选择一个或多个现有操作并单击 选择 ;或

    • 单击 新建 ,定义要执行的操作,然后单击 保存并关闭 或,要创建其他操作,单击 保存并新建

  3. 根据需要重复多次。

定义要执行的多个操作