自动化规则¶
自动化规则用于根据用户操作(例如,当字段设置为特定值时应用修改)、电子邮件事件、时间条件(例如,在最后一次更新后7天归档记录)或外部事件触发自动更改。
要使用 Studio 创建自动化规则,请按照以下步骤操作:
打开 Studio 并点击 Automations,然后点击 New。
选择 触发器 ,并根据所选的触发器,在屏幕上出现的字段中填写必要的信息。
点击 添加操作,然后选择 类型 的 操作 并根据您选择的操作填写屏幕上显示的字段。
点击 保存并关闭 或 保存并新建。
Example

触发器¶
触发器 用于定义何时应用自动化规则。可用的触发器取决于 模型。总共有五种触发器类别:
小技巧
您还可以定义一个 Before Update Domain 来指定在触发自动化规则 之前 必须满足的条件。相比之下,使用 Extra Conditions 和 Apply on 过滤器定义的条件是在自动化规则执行 期间 检查的。
要定义一个 更新前域,请 激活开发者模式,创建或编辑一个自动化规则,点击 编辑域,然后点击 新建规则。
例如,如果您希望在为之前没有电子邮件地址的联系人设置电子邮件地址时(与修改其现有地址相对)触发自动化操作,请将 更新前条件 定义为 电子邮件未设置,并将 应用条件 设置为 电子邮件已设置。

值更新¶
此类别中可用的触发器取决于模型,并基于常见的字段更改,例如添加特定标签(例如,到任务)或设置 用户 字段。选择触发器,然后根据需要选择一个值。

电子邮件活动¶
在接收或发送电子邮件时触发自动化操作。
时间条件¶
基于日期字段触发自动化操作。以下触发器可用:
基于日期字段: 选择要在 延迟 字段旁边使用的字段。
创建后: 该操作在记录创建并保存时触发。
上次更新后: 当现有记录被编辑并保存时触发该操作。
然后你可以定义:
a 延迟: 指定分钟、小时、天数或月数。要在触发日期之前触发操作,请指定一个负数。如果选择了 基于日期字段 触发器,则还必须选择用于确定延迟的日期字段。
额外条件: 点击 添加条件,然后指定触发自动化规则所需满足的条件。点击 新建规则 以添加另一个条件。
当达到延迟时间且条件满足时,将触发该操作。
Example
如果你想在日历事件开始前30分钟发送提醒邮件,请在 触发日期 下选择 开始(日历事件) ,并将 延迟 设置为 -30 分钟 。

注解
默认情况下,调度器每 4 小时检查一次触发日期,这意味着基于时间的自动化中较低的时间粒度可能并不总是得到遵守。
自定义¶
触发自动化操作:
保存时: 当记录保存时;
删除时: 当记录被删除时;
UI 变更时: 当字段的值在 表单视图 上发生更改时,即使在保存记录之前。
对于 保存时 和 UI 更改时 触发器,您 必须 在 更新时 字段中选择用于触发自动化规则的字段。
警告
如果在 When updating 字段中未选择任何字段,则每条记录可能会多次执行自动化操作。
可选地,您还可以在 Apply on 字段中定义触发自动化规则所需满足的额外条件。
注解
On UI change 触发器只能与 执行代码 动作一起使用,并且仅在手动进行修改时生效。如果字段是通过另一个自动化规则更改的,则该动作不会执行。
外部¶
使用 webhook 基于外部事件触发自动化操作。Webhook 是两种系统之间的通信方法,源系统根据特定事件向目标系统发送 HTTP(S) 请求。它通常包含一个数据负载,其中包含有关发生事件的信息。
要配置 On webhook 触发器,请将 Odoo 生成的 URL 复制到目标系统(即接收请求的系统)。然后,在 Target Record 字段中输入要运行的代码,以定义使用自动化规则更新的记录。
警告
该 URL 必须被视为 机密;在线分享或未经谨慎处理可能会使您的系统暴露给恶意方。如有必要,请点击 轮换密钥 按钮以更改 URL 的密钥。
注解
默认定义在 目标记录 字段中的代码适用于来自另一个 Odoo 数据库的 webhooks。它用于根据有效载荷中的信息确定要更新的记录。
如果你想将 webhook 的内容用于查找记录以外的目的(例如,创建 记录),你唯一的选择是使用 执行代码 操作。在这种情况下, 目标记录 字段必须包含任何有效的代码,但其结果对自动化操作本身没有任何影响。
Webhook 内容在服务器操作上下文中以
payload
变量的形式可用(即包含传入请求的 GET 参数或 POST JSON 主体的字典)。
你也可以选择 记录调用 来记录接收到的有效载荷,例如,确保源系统发送的数据符合预期的格式和内容。这也有助于识别和诊断可能出现的任何问题。要访问日志,请点击 自动化规则 表单顶部的 日志 智能按钮。
操作¶
定义自动化规则的 触发器 后,点击 添加动作 以定义要执行的动作。
小技巧
您可以为同一个触发器/自动化规则定义多个操作。这些操作将按照定义的顺序执行。这意味着,例如,如果您先定义一个 更新记录 操作,然后再定义一个 发送邮件 操作,邮件将使用更新后的值。然而,如果 发送邮件 操作在 更新记录 操作之前定义,邮件将使用更新操作运行 之前 设置的值。
更新记录¶
此操作允许更新记录的(相关)字段之一。点击 Update 字段,在打开的列表中,选择或搜索要更新的字段;如果需要,点击字段名称旁边的右箭头以访问相关字段列表。
如果您选择了一个 many2many 字段,请选择该字段是否必须通过 添加、移除 或 设置为 所选值来更新,或者通过 清除 来更新。
Example
如果您希望自动化操作从客户记录中移除一个标签,请将 更新 字段设置为 客户 > 标签,选择 通过移除,然后选择标签。

小技巧
或者,你也可以使用 Python 代码动态设置记录的字段。为此,选择 计算 而不是 更新,然后输入用于计算字段值的代码。例如,如果你希望自动化规则在任务的优先级设置为 高`(通过标记任务)时计算一个自定义的 :ref:`日期时间字段 <studio/fields/simple-fields/date-time>
,你可以将触发器 优先级设置为 定义为 高
,并如下定义 更新记录 操作:

创建活动¶
此操作用于安排与记录关联的新活动。选择一个 活动类型,输入 标题 和描述,然后在 截止日期 字段中指定活动的安排时间,并选择一个 用户类型:
要始终将活动分配给同一用户,请选择 特定用户 并在 负责人 字段中添加该用户;
要动态地定位与记录关联的用户,请选择 动态用户(基于记录),并在必要时更改 用户字段。
Example
当线索转化为商机后,您希望自动化动作为负责该线索的用户安排一次通话。为此,将 活动类型 设置为 通话 ,并将 用户类型 设置为 动态用户(基于记录) 。

发送邮件和发送短信¶
这些操作用于向与特定记录关联的联系人发送电子邮件或短信。为此,选择或创建一个 电子邮件模板 或 短信模板,然后在 以…发送电子邮件 或 以…发送短信 字段中,选择您希望发送电子邮件或短信的方式:
Email: 将消息作为电子邮件发送给 Email Template 的收件人。
消息: 在记录上发布消息并通知记录的关注者。
注意: 将消息作为内部备注发送,以便内部用户可以在聊天中查看。
SMS (无备注): 将消息作为短信发送给 SMS 模板 的收件人。
SMS (带备注): 将消息作为短信发送给 SMS 模板 的收件人,并在 chatter 中将其作为内部备注发布。
仅备注: 仅将消息作为内部备注发布在 chatter 中。
添加关注者和移除关注者¶
使用这些操作为现有联系人订阅/取消订阅记录。
创建记录¶
此操作用于在任何模型上创建新记录。
在 Record to Create 字段中选择所需的模型;默认情况下,它包含当前模型。为记录指定一个 Name,然后,如果你想在另一个模型上创建记录,请在 Link Field 字段中选择一个字段,以链接触发新记录创建的记录。
小技巧
你可以创建另一个自动化规则,使用 更新记录 操作来更新新记录的字段(如有必要)。例如,你可以使用 Create Record 操作创建一个新的项目任务,然后使用 Update Record 操作将其分配给特定用户。
执行代码¶
此操作用于执行 Python 代码。您可以将代码写入 代码 选项卡,并使用以下变量:
env
: 触发操作的环境model
: 触发操作的记录的模型;是一个空的记录集record
: 触发操作的记录;可能为空records
: 在多模式下触发操作的所有记录的记录集;该字段可能为空time
,datetime
,dateutil
,timezone
: 有用的 Python 库float_compare
:用于基于特定精度比较浮点数的实用函数log(message, level='info')
:记录调试信息的日志函数,信息将存储在 ir.logging 表中_logger.info(message)
:用于在服务器日志中发出消息的 loggerUserError
:用于引发面向用户的警告消息的异常类Command
: x2many 命令命名空间action = {...}
:用于返回一个动作
小技巧
可用变量在 代码 和 帮助 标签中均有描述。
发送 Webhook 通知¶
此操作允许将 字段 的值作为 POST 请求发送到 URL 字段中指定的 URL。
The Sample Payload provides a preview of the data included in the request using a random record’s data or dummy data if no record is available.
执行现有行动¶
该操作用于同时触发多个操作(与当前模型相关联)。为此,请点击 添加一行,然后在 添加:子操作 弹出窗口中,选择一个现有操作或点击 新建 以创建一个新操作。