自動化規則

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

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

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

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

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

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

  4. 点击 应采取的行动 选项卡中的 添加操作

    小訣竅

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

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

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

Example

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

订阅模式自动化规则示例

小訣竅

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

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

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

    从看板阶段创建自动化

觸發

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

添加条件

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

小訣竅

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

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

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

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

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

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

    小訣竅

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

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

Example

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

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

備註

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

數值已更新

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

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

電郵活動

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

時間條件

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

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

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

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

然后,您可以定义:

  • 延迟:指定触发操作的 分钟』、:guilabel:`小时』、:guilabel:`天`或 :guilabel:`月`个数。如果选择了 :guilabel:`基于日期字段 触发器,则可在所选日期字段的 之后之前 触发操作。

    備註

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

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

    要查看或手动编辑时间触发自动化规则的调度频率,在 开发者模式已激活 时,请点击 计划操作

    直接链接到自动执行的计划操作

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

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

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

自訂

触发自动操作:

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

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

  • 删除时:删除记录时。

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

对于: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. In the Sequence tab, configure the sequence:

    • Prefix: characters added before the next number in the sequence.

    • Suffix: characters added after the next number in the sequence.

    • Sequence Size: determines the number of digits in every number in the sequence. If needed, leading zeros are added before the number to achieve the indicated sequence size, e.g., for a sequence size of 5, the first number in the sequence is 00001.

    • Step: determines the increments between the numbers in the sequence.

    • Next Number: the next number that will be used in the sequence, without leading zeros.

    小訣竅

    • Use dynamic placeholders like %(year)s or %(month)s as a Prefix and/or Suffix to create sequences with elements like current year, month, etc. Possible placeholders are shown at the bottom of the window.

    • To use sub-sequences, e.g., to have the sequence restart each year or each month, enable Use subsequences per date_range, then Add a line for each date range and indicate the Next Number for the range.

  4. 点击 保存

Example

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

In the example, each new customer receives a sequential reference with the prefix #-REF-%(year)s-, where %(year)s is the current year including the century, and the suffix /CL, e.g., #-REF-2025-00001/CL, #-REF-2025-00002/CL, etc.

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

计算

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

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 指令命名空间

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

小訣竅

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

發送 Webhook 通知

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

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

備註

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

多重操作

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

配置操作步骤:

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

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

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

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

  3. 按需重复上述步骤。

定义要执行的多个动作