自动化规则¶
自动化规则允许针对特定触发执行一个或多个预定义操作,例如,当某个字段设置为特定值时创建活动,或在最后一次更新 7 天后归档记录。
创建自动化规则时,可以 添加自动化规则运行必须满足的 条件,例如,机会必须分配给特定的销售人员,或记录的状态必须不是 草稿。
使用 Odoo 定制 创建自动化规则:
开启 Studio 并点击 自动化,然后点击 新建。
给自动化规则起一个清晰、有意义的名字,以明确其目的。
选择 触发器 并根据所选触发器填写屏幕上出现的字段。
在 待办操作 标签中点击 添加操作。
选择 类型 操作,并根据所选操作填写相关字段。
点击 保存并关闭 或 保存并新建,定义其他操作。
Example
为确保跟进满意度较低的客户,该自动化规则会在销售订单创建 3 个月后为满意度低于 30% 的客户创建活动。
触发器¶
触发器 用于定义自动化规则运行所需的事件类型。可用的触发器取决于 模型。共有五个触发器类别:
添加条件¶
域名筛选器允许您确定自动化规则应针对或排除的记录。高效筛选可避免对不受规则影响的记录进行不必要的处理,从而提高整体性能。
小技巧
在创建自动化规则前 :ref:` 激活开发者模式 <developer-mode>`,以便最灵活地添加域筛选器。
根据所选触发器的不同,可以定义一个或多个记录在触发*前*和/或触发*后*必须满足的条件。
域名更新前 定义了记录在触发事件发生*之前*必须满足的条件,例如,记录必须具有
类型 = 客户发票和状态 = 已发布。激活开发者模式后,点击 编辑域`(如果可用),然后点击 :guilabel:`新规则。
应用于 域定义了触发事件发生*后*记录必须满足的条件,例如,客户发票必须具有
付款状态 = 部分支付。激活开发者模式后,点击 编辑域 然后点击 新规则。
小技巧
如果未激活开发者模式,要定义 应用于 域,请点击 添加条件。完成或删除建议的条件。要添加条件,请点击 新规则。
当 触发 时,例如,已入账客户发票的付款状态被更新,自动化规则会检查所定义的条件,并仅在记录符合这些条件时执行 操作 。
Example
如果是个人而非公司的现有联系人首次设置电子邮件地址(与修改电子邮件地址相反)时应执行自动操作,则使用 电子邮件未设置`和 `公司未设置`作为 :guilabel:`更新前域,并使用`电子邮件已设置`作为 :guilabel:`应用`域。
注解
:guilabel:`更新前域`在记录创建时不会执行检查。
值更新¶
当数据库中发生特定变化时触发自动操作。这类触发器取决于模型,并基于常见的更改,如添加特定标记(如添加到任务中)或设置字段值(如设置 用户 字段)。
选择触发器,然后根据需要选择数值。
电子邮件活动¶
接收或发送电子邮件时触发自动操作。
时间条件¶
在与日期字段或记录的创建或更新相关的时间点触发自动操作。可使用以下触发器:
基于日期字段:在所选日期字段的日期*之前或之后*的一段指定时间内触发操作,例如,在合同结束日期之前 30 天。
创建后:在创建并保存记录后的一段时间内触发该操作。
上次更新后:在编辑并保存现有记录一段时间后触发该操作。
要配置 时间条件 触发器,并使用 启动开发模式:
从 时间条件 类别中选择适当的 触发器。如果选择 基于日期字段 触发器,请选择相关日期字段。
配置 延迟`时间,以确定操作的*执行日期时间*。要执行此操作,请输入应触发操作的 :guilabel:`分钟、 小时、 天 或 月。如果选择了 基于日期字段 触发方式,则可在所选日期字段的 之后 或 之前 触发操作。
(可选)为记录添加触发规则之前和 / 或之后必须满足的条件,请参考:添加条件。
点击 手动保存。
点击 计划的操作,打开 自动化规则:检查并执行 计划的操作。
注解
该计划动作会检查自上次运行以来已到达的执行时间点,并在符合条件时执行相关动作。此计划动作默认 :guilabel:`执行间隔`为 4 小时,该频率通常足以满足 “订单日期后 3 个月” 或 “最后更新后 7 天” 这类延迟需求。
如果任何自动化规则具有基于时间的触发器,且延迟时间小于相当于40小时的时间,例如,在事件开始日期时间前3小时,则计划的执行频率会自动增加,例如,增加到 每18分钟执行一次。这允许该操作更接近其计划的执行日期时间。
点击左上角的 手动运行。
警告
这一步对于防止在历史记录上追溯运行规则至关重要。手动运行计划的操作会初始化自动化规则中*上次运行*的时间戳,这是规则的 执行逻辑 的关键元素。
点击面包屑导航中的自动化规则名称,返回自动化规则配置页面。
添加 需要执行的动作,所有动作定义完成后,点击图标 手动保存。
当执行时间到达后,且满足触发条件时,该动作将在 :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>` 发送数据。
其他资料
操作¶
定义自动化规则的 触发 后,点击 应采取的操作 选项卡中的 添加操作 以定义要执行的操作。
更新记录¶
此操作用于更新记录的一个(相关)字段。有以下选项:
更新:使用指定值更新所选字段。
AI 更新:根据所提供的人工智能提示动态更新所选字段。此选项需要安装 Odoo AI 应用程序。
序列:使用定义的序列更新所选字段。
计算:使用 Python 代码动态更新所选字段。
定义操作:
选择 更新、AI更新、序列 或 计算 选项后,选择或搜索要更新或计算的字段。如有需要,请点击字段名旁的 :guilabel:`(右箭头)`以访问相关字段列表。
根据所选选项提供相应信息。
更新¶
选择或输入字段的更新值。
如果要更新的是 多对多字段,请选择该字段的更新方式:是通过 添加、:guilabel:`移除`或 :guilabel:`设置为`所选值,还是通过 :guilabel:`清空`来操作。
Example
若需通过自动化动作从客户记录中移除某个标签,请将 更新 字段设置为 客户 > 标签,选择 移除 方式,然后选择要移除的标签。
AI 更新¶
输入提示,指示 Odoo AI 如何更新字段。键入 / 打开 AI 提示工具;使用 字段选择器 告诉 Odoo AI 要检查哪些相关字段,以及 记录选择器 为更新字段提供可能的值。
Example
如果您希望自动化规则根据员工的专长更新新创建任务的 负责人 字段,您可以编写一个提示,指示 Odoo AI 检查任务的 显示名称 字段的上下文,然后分配最合适的员工。
序列¶
选择现有序列,或按以下步骤新建序列:
点击 更多搜索,然后点击 新建。
在弹出的窗口中,输入序列的 名称。
在 序列 选项卡中,配置序列:
前缀:在序列中的下一个数字*之前*添加的字符。
后缀:在序列中下一个数字*后*添加的字符。
序列大小:决定序列中每个数字的位数。如有必要,会在数字前加上前导零,以达到指定的序列大小,例如,序列大小为
5`时,序列中的第一个数字为 `00001。步骤:确定序列中数字之间的增量。
下一个编号:序列中将使用的下一个数字,不包含前导零。
小技巧
使用如
%(year)s或%(month)s之类的动态占位符作为 前缀 和/或 后缀,以创建包含当前年份、月份等元素的序列。可能的占位符显示在窗口底部。要使用子序列(例如,使序列每年或每月重新开始),请启用 按日期范围使用子序列,然后为每个日期范围 添加一行 并指明该范围的 下一个编号。
点击 保存。
Example
如果您希望自动操作在每次创建新客户时创建一个顺序客户参考,请将 序列 字段设置为 参考,然后在下拉菜单中点击 搜索更多。点击 新建 创建新序列。
在此示例中,每位新客户会收到一个带有前缀 #-REF-%(year)s- 的顺序参考号,其中 %(year)s 是包含世纪的当前年份,后缀为 /CL。例如:#-REF-2025-00001/CL、#-REF-2025-00002/CL 等。
计算¶
输入用于计算字段值的代码。
创建记录与复制记录¶
此类动作用于在任何模型上创建新记录或复制现有记录。
定义操作:
选择 创建记录 或 复制记录 作为相关的 类型 操作,在 待创建记录 字段中选择所需的模型;该字段默认包含当前模型。
指定记录的 名称;若为复制记录操作,请在 :guilabel:`复制来源`字段中指明被复制的原记录。
若需在其他模型上创建新记录或复制记录,请在 链接字段 中选择相应字段,以关联触发此操作的原始记录。
创建活动¶
该操作用于安排与记录相关联的新活动。
定义操作:
将 创建活动 选为 类型 操作,从下拉菜单中选择适当的 活动类型。
输入 标题。
通过在 截止于`字段中指定相应的 :guilabel:`天、周 或 月 数,来设定活动的预期完成时间。
选择 用户类型:
可选操作:添加 备注 以提供关于活动的更多信息。
Example
在向高预期收入的商机发送方案后,您可为销售团队负责人创建一项致电潜在客户的活动,以提高成交机会。
要执行此操作,请将 活动类型 设置为 电话,并将 用户类型 设置为 动态用户(基于记录) 。点击占位字段,选择 销售团队,接着点击 (右箭头)`并选择 :guilabel:`团队负责人。
发送电子邮件和发送短信¶
这些操作用于向链接到特定记录的联系人发送电子邮件或短信。
定义操作:
选择 发送电子邮件 或 发送短信 作为 类型 操作,选择或创建 电子邮件模板 或 短信模板。
在 发送电子邮件为 或 发送电子邮件为 字段中,选择发送电子邮件或短信的方式。
对于电子邮件,请选择:
电子邮件:将信息作为电子邮件发送给 电子邮件模板 的收件人。
消息:在记录上发布消息,并通知记录的关注者。
备注:将消息作为内部备注发送,内部用户可在沟通栏中看到。
对于短信,请选择:
短信(无备注):将信息作为文本信息发送给 :guilabel:`短信模板`的收件人。
短信(带备注):将短信作为文本消息发送给 短信模板 的收件人,并作为内部备注发布在沟通栏中。
仅限备注:只将消息作为内部备注发布在沟通栏中。
发送 WhatsApp¶
重要
要自动发送 WhatsApp 消息,必须创建一个或多个 WhatsApp 模板。
此操作用于向链接到特定记录的联系人发送 WhatsApp 消息。
将 发送 WhatsApp 选为 类型 操作,从下拉菜单中选择适当的 :guilabel:`WhatsApp 模板。
添加关注者和删除关注者¶
此操作用于订阅/退订现有联系人为记录的关注者。
选择 添加关注者 或 删除关注者 作为相关的 类型 操作,然后选择 关注者类型:
要始终添加/删除相同的联系人,请选择 特定关注者,然后从下拉菜单中选择联系人。可以添加/删除多个联系人。
要动态添加/删除与记录链接的联系人,请选择 动态关注者。如有需要,请更改 关注者字段 ,方法是点击占位符字段名,然后在出现的列表中选择或搜索伙伴字段。点击字段名旁的 (右箭头),可根据需要访问相关字段。
执行代码¶
重要
对于需要执行 自定义代码。
此操作用于执行 Python 代码。您可以使用以下变量将代码写入 代码 选项卡:
env:触发操作的环境模型:触发操作的记录的模型;是一个无效记录集记录:触发操作的记录;可能无效记录:在多模式下触发操作的所有记录的记录集;可留空time、datetime、dateutil、timezone:实用的Python时间处理库float_compare:根据特定精度比较浮点数的实用程序函数log(message, level='info'):在 ir.logging 表中记录调试信息的日志函数_logger.info(message):在服务器日志中发布消息的日志程序UserError:用于发出面向用户的警告信息的异常类指令:x2many 指令命名空间操作 = {...}:返回一个操作
小技巧
可用变量在 代码 和 帮助 选项卡中均有说明。
其他资料
发送 Webhook 通知¶
此操作用于向 URL 字段中指定的 webhook URL 发送包含所选 字段 值的 POST API 请求。
示例数据负载 可预览请求中包含的数据,这些数据来自随机记录(若存在记录)或虚拟数据(若无可用记录)。
注解
您还可以设置自动化动作,以便在外部系统发生预定义事件时,通过网络钩子接收来自该外部系统的数据 。
多重操作¶
此动作用于同时触发多个(与当前模型关联的)动作。
配置操作步骤:
选择 多重操作`作为操作的 :guilabel:`类型,然后点击 添加操作。
在 :guilabel:`添加:子操作`弹出窗口中:
选择一个或多个现有操作,然后点击 选择;或
点击 新建,定义要执行的动作,随后点击 保存并关闭;如需继续创建其他动作,可点击 保存并新建。
按需重复上述步骤。