[comment]: # aside: 1

[comment]: # translation:outdated

[comment]: # ({5fa5406d-502c65c3})
# 动作对象

以下对象与`动作` API 直接相关。

[comment]: # ({/5fa5406d-502c65c3})

[comment]: # ({e63f682e-73117797})
### 动作

动作对象具有以下属性。

| 属性 | [类型](/manual/api/reference_commentary#数据类型) | 描述 |
| --- | --- | --- |
| actionid | ID | 动作的ID。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- *只读*<br>- 更新操作*必需* |
| esc\_period | string | 默认操作步骤持续时间。必须至少为60秒。接受秒数、带后缀的时间单位或用户宏。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果`eventsource`设置为"由触发器创建的事件"、"内部事件"或"基于服务状态更新创建的事件"，则*支持* |
| eventsource | integer | 动作将处理的事件类型。<br><br>请参阅[事件`source`属性](/manual/api/reference/event/object#事件)以获取支持的事件类型列表。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 创建操作*必需* |
| name | string | 动作名称。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 创建操作*必需* |
| status | integer | 动作是否启用或禁用。<br><br>可能值：<br>0 - *(默认)* 启用；<br>1 - 禁用。 |
| pause\_symptoms | integer | 如果事件被标记为故障现象，是否暂停升级。<br><br>可能值：<br>0 - 不暂停升级；<br>1 - *(默认)* 暂停升级。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果`eventsource`设置为"由触发器创建的事件"，则*支持* |
| pause\_suppressed | integer | 如果事件发生在维护期间，是否暂停升级。<br><br>可能值：<br>0 - 不暂停升级；<br>1 - *(默认)* 暂停升级。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果`eventsource`设置为"由触发器创建的事件"，则*支持* |
| notify\_if\_canceled | integer | 如果升级被取消，是否发送通知。<br><br>可能值：<br>0 - 不发送通知；<br>1 - *(默认)* 发送通知。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果`eventsource`设置为"由触发器创建的事件"，则*支持* |

[comment]: # ({/e63f682e-73117797})

[comment]: # ({6369a32b-8757165b})
### 动作操作

动作操作对象定义了一个将在执行动作时执行的操作，具有以下属性。

| 属性 | [类型](/manual/api/reference_commentary#数据类型) | 描述 |
| --- | --- | --- |
| operationtype | integer | 操作类型。<br><br>可能值：<br>0 - 发送消息；<br>1 - 全局脚本；<br>2 - 添加主机；<br>3 - 移除主机；<br>4 - 添加到主机组；<br>5 - 从主机组移除；<br>6 - 链接到模板；<br>7 - 取消链接模板；<br>8 - 启用主机；<br>9 - 禁用主机；<br>10 - 设置主机资产模式；<br>13 - 添加主机标签；<br>14 - 移除主机标签。<br><br>如果[动作对象](#动作)的`eventsource`设置为"由触发器创建的事件"或"基于服务状态更新创建的事件"，则可能值有：<br>0 - "发送消息"；<br>1 - "全局脚本"。<br><br>如果[动作对象](#动作)的`eventsource`设置为"内部事件"，则可能值有：<br>0 - "发送消息"。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- *必需*|
| esc\_period | string | 升级步骤的持续时间（秒）。必须大于60秒。接受秒数、带后缀的时间单位或用户宏。如果设置为0或0s，将使用默认的动作作为升级周期。<br><br>默认值：0s。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果[动作对象](#动作)的`eventsource`设置为"由触发器创建的事件"、"内部事件"或"基于服务状态更新创建的事件"，则*支持*|
| esc\_step\_from | integer | 开始升级的步骤。<br><br>默认值：1。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果[动作对象](#动作)的`eventsource`设置为"由触发器创建的事件"、"内部事件"或"基于服务状态更新创建的事件"，则*支持*|
| esc\_step\_to | integer | 结束升级的步骤。<br><br>默认值：1。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果[动作对象](#动作)的`eventsource`设置为"由触发器创建的事件"、"内部事件"或"基于服务状态更新创建的事件"，则*支持*|
| evaltype | integer | 操作条件的评估方法。<br><br>可能值：<br>0 - *(默认)* AND / OR；<br>1 - AND；<br>2 - OR。|
| opcommand | object | 要执行的全局脚本。<br><br>全局脚本必须定义`scriptid`属性。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果`operationtype`设置为"全局脚本"，则*必需*|
| opcommand\_grp | array | 运行全局脚本的主机组。<br><br>主机组必须定义`groupid`属性。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果`operationtype`设置为"全局脚本"且未设置`opcommand_hst`，则*必需*|
| opcommand\_hst | array | 运行全局脚本的主机。<br><br>主机必须定义`hostid`属性。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果`operationtype`设置为"全局脚本"且未设置`opcommand_grp`，则*必需*|
| opconditions | array | 用于触发器动作的操作条件。<br><br>操作条件对象的[详细描述如下](/manual/api/reference/action/object#动作操作条件)。|
| opgroup | array | 要添加主机的主机组。<br><br>主机组必须定义`groupid`属性。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果`operationtype`设置为"添加到主机组"或"从主机组移除"，则*必需*|
| opmessage|object|包含由操作发送的消息数据的对象。<br><br>操作消息对象在[此处详细描述](/manual/api/reference/action/object#动作操作消息)。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果`operationtype`设置为"发送消息"，则*必需*|
| opmessage\_grp|array|发送消息的用户组。<br><br>用户组必须定义`usrgrpid`属性。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果`operationtype`设置为"发送消息"且未设置`opmessage_usr`，则*必需*|
| opmessage\_usr|array|发送消息的用户。<br><br>用户必须定义`userid`属性。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果`operationtype`设置为"发送消息"且未设置`opmessage_grp`，则*必需*|
| optemplate|array|链接到主机的模板。<br><br>模板必须定义`templateid`属性。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果`operationtype`设置为"链接模板"或"取消链接模板"，则*必需*|
| opinventory|object|设置主机的库存模式。<br><br>库存必须定义`inventory_mode`属性。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果`operationtype`设置为"设置主机库存模式"，则*必需*|
| optag|array|要添加或删除的主机标签。<br><br>标签必须定义`tag`属性。`value`属性是可选的。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果`operationtype`设置为"添加主机标签"或"删除主机标签"，则*支持*|

[comment]: # ({/6369a32b-8757165b})

[comment]: # ({fda65993-4aeccf9f})
#### 动作操作消息

操作消息对象包含有关将由动作发送的消息的数据。它具有以下属性。

| 属性 | [类型](/manual/api/reference_commentary#数据类型) | 描述 |
| --- | --- | --- |
| default\_msg | integer | 是否使用默认的动作消息文本和主题。<br><br>可能的值：<br>0 - 使用来自动作的数据；<br>1 - *(默认)* 使用来自媒体类型的数据。|
| mediatypeid | ID | 用于发送消息的媒体类型的ID。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果[动作操作对象](#动作操作)、[动作恢复操作对象](#动作恢复操作)、或[动作更新操作对象](#动作更新操作)的`operationtype`设置为"发送消息"，或者如果[动作更新操作对象](#动作更新操作)的`operationtype`设置为"通知所有相关人员"，则*支持*|
| message | string | 动作消息文本。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果`default_msg`设置为"使用来自动作的数据"，则*支持*|
| subject | string | 动作消息主题。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果`default_msg`设置为"使用来自动作的数据"，则*支持*|

[comment]: # ({/fda65993-4aeccf9f})

[comment]: # ({a0c081cb-6762fd66})
#### 动作操作条件

动作操作条件对象定义了一个必须满足的条件，以便执行当前操作。它具有以下属性。

| 属性 | [类型](/manual/api/reference_commentary#数据类型) | 描述 |
| --- | --- | --- |
| conditiontype | integer | 条件类型。<br><br>可能的值：<br>14 - 事件已确认。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- *必填*|
| value | string | 要与之比较的值。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- *必填*|
| operator | integer | 条件操作符。<br><br>可能的值：<br>0 - *(默认)* =|

每种操作条件类型都支持以下操作符和值。

| 条件 | 条件名称 | 支持的操作符 | 预期值 |
| --- | --- | --- | --- |
| 14 | 事件已确认 | = | 事件是否已确认。<br><br>可能的值：<br>0 - 未确认；<br>1 - 已确认。|

[comment]: # ({/a0c081cb-6762fd66})

[comment]: # ({c36a3d9f-d1e6762b})
### 动作恢复操作

动作恢复操作对象定义了在问题得到解决时将执行的操作。
恢复操作**仅**适用于触发器、内部和服务动作。
它具有以下属性。

| 属性 | [类型](/manual/api/reference_commentary#数据类型) | 描述 |
| --- | --- | --- |
| operationtype | integer | 操作类型。<br><br>如果[动作对象](#动作)的`eventsource`设置为"由触发器创建的事件"或"服务状态更新时创建的事件"：<br>0 - 发送消息；<br>1 - 全局脚本；<br>11 - 通知所有相关人员。<br><br>如果[动作对象](#动作)的`eventsource`设置为"内部事件"：<br>0 - 发送消息；<br>11 - 通知所有相关人员。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- *必填*|
| opcommand | object | 要执行的全局脚本。<br><br>全局脚本必须定义`scriptid`属性。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果`operationtype`设置为"全局脚本"，则*必填*|
| opcommand\_grp | array | 运行全局脚本的主机组。<br><br>主机组必须定义`groupid`属性。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果[动作对象](#动作)的`eventsource`设置为"由触发器创建的事件"，并且`operationtype`设置为"全局脚本"，且未设置`opcommand_hst`，则*必填*|
| opcommand\_hst | array | 运行全局脚本的主机。<br><br>主机必须定义`hostid`属性。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果[动作对象](#动作)的`eventsource`设置为"由触发器创建的事件"，并且`operationtype`设置为"全局脚本"，且未设置`opcommand_grp`，则*必填*|
| opmessage | object | 包含恢复操作发送的消息数据的对象。<br><br>操作消息对象在[上面详细描述](/manual/api/reference/action/object#动作操作消息)。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果`operationtype`设置为"send message"，则*必填*|
| opmessage\_grp | array | 要发送消息的用户组。<br><br>用户组必须定义`usrgrpid`属性。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果`operationtype`设置为"send message"且未设置`opmessage_usr`，则*必填*|
| opmessage\_usr | array | 要发送消息的用户。<br><br>用户必须定义`userid`属性。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果`operationtype`设置为"send message"且未设置`opmessage_grp`，则*必填*|

[comment]: # ({/c36a3d9f-d1e6762b})

[comment]: # ({4a5a224f-f41f59ea})
### 动作更新操作

动作更新操作对象定义了在问题更新（评论、确认、严重性变更或手动关闭）时将执行的操作。
更新操作**仅**适用于触发器和服务动作。
它具有以下属性。

| 属性 | [类型](/manual/api/reference_commentary#数据类型) | 描述 |
| --- | --- | --- |
| operationtype | integer | 操作类型。<br><br>可能的值：<br>0 - 发送消息；<br>1 - 全局脚本；<br>12 - 通知所有相关人员。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- *必填*|
| opcommand | object | 要执行的全局脚本。<br><br>全局脚本必须定义`scriptid`属性。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果`operationtype`设置为"全局脚本"，则*必填*|
| opcommand\_grp | array | 运行全局脚本的主机组。<br><br>主机组必须定义`groupid`属性。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果[动作对象](#动作)的`eventsource`设置为"由触发器创建的事件"，并且`operationtype`设置为"全局脚本"，且未设置`opcommand_hst`，则*必填*|
| opcommand\_hst | array | 运行全局脚本的主机。<br><br>这些主机必须定义`hostid`属性。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果[动作对象](#动作)的`eventsource`设置为"由触发器创建的事件"，`operationtype`设置为"全局脚本"，并且未设置`opcommand_grp`，则*必填*|
| opmessage | object | 包含更新操作发送的消息数据的对象。<br><br>操作消息对象的详细描述见[上方链接](/manual/api/reference/action/object#动作操作消息)。|
| opmessage\_grp | array | 要发送消息的用户组。<br><br>用户组必须定义`usrgrpid`属性。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果`operationtype`设置为"发送消息"且未设置`opmessage_usr`，则*必填*|
| opmessage\_usr | array | 要发送消息的用户。<br><br>用户必须定义`userid`属性。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果`operationtype`设置为"发送消息"且未设置`opmessage_grp`，则*必填*|

[comment]: # ({/4a5a224f-f41f59ea})

[comment]: # ({eb33ba81-0d8b3bb1})
### 动作过滤

动作过滤对象定义了一组必须满足的条件，以便执行配置的动作操作。它具有以下属性。

| 属性 | [类型](/manual/api/reference_commentary#数据类型) | 描述 |
| --- | --- | --- |
| conditions | array | 通过设置[过滤条件](#动作过滤条件)来得到想要的结果。条件将按照它们在公式中的放置顺序进行排序。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- *必填*|
| evaltype | integer | 过滤条件评估方法。<br><br>可能的值：<br>0 - and/or（并且/或者）；<br>1 - and（并且）；<br>2 - or（或者）；<br>3 - 自定义表达式。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- *必填*|
| eval\_formula | string | 用于评估过滤条件的生成表达式。表达式包含通过其`formulaid`引用特定过滤条件的ID。`eval_formula`的值等于具有自定义表达式的过滤的`formula`的值。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- *只读*|
| formula | string | 用户定义的表达式用于评估过滤器条件的自定义表达式，并且这个表达式需要包含引用特定过滤器条件的 `formulaid`。在创建用户定义的表达式以评估过滤器条件的场景中，确保表达式中使用的ID与过滤器条件中定义的ID完全匹配，并且没有条件被遗漏或未使用，是一个重要的验证步骤。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- 如果`evaltype`设置为"自定义表达式"，则*必填*|

[comment]: # ({/eb33ba81-0d8b3bb1})

[comment]: # ({19dead90-dd860074})
#### 动作过滤条件

动作过滤条件对象定义了在执行动作操作之前必须检查的具体条件。

| 属性 | [类型](/manual/api/reference_commentary#数据类型) | 描述 |
| --- | --- | --- |
| conditiontype | integer | 条件的类型。<br><br>如果[动作对象](#动作)的`eventsource`设置为"由触发器创建的事件"，则可能的值有：<br>0 - 主机组；<br>1 - 主机；<br>2 - 触发器；<br>3 - 事件名称；<br>4 - 触发器严重级别；<br>6 - 时间段；<br>13 - 主机模板；<br>16 - 问题已被抑制；<br>25 - 事件标签；<br>26 - 事件标签值。<br><br>如果[动作对象](#动作)的`eventsource`设置为"由发现规则创建的事件"，则可能的值有：<br>7 - 主机IP；<br>8 - 已发现的服务类型；<br>9 - 已发现的服务端口；<br>10 - 发现状态；<br>11 - 运行持续时间或宕机持续时间；<br>12 - 接收到的值；<br>18 - 发现规则；<br>19 - 发现检查；<br>20 - 代理；<br>21 - 发现对象。<br><br>如果[动作对象](#动作)的`eventsource`设置为"由active agent自动注册创建的事件"，则可能的值有：<br>20 - proxy；<br>22 - 主机名；<br>24 - 主机元数据。<br><br>如果[动作对象](#动作)的`eventsource`设置为"内部事件"，则可能的值有：<br>0 - 主机组；<br>1 - 主机；<br>13 - 主机模板；<br>23 - 事件类型；<br>25 - 事件标签；<br>26 - 事件标签值。<br><br>如果[动作对象](#动作)的`eventsource`设置为"基于服务状态更新创建的事件"，则可能的值有：<br>25 - 事件标签；<br>26 - 事件标签值；<br>27 - 服务；<br>28 - 服务名称。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- *必填*|
| value | string | 要与之比较的值。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- *必填*|
| value2 | string | 要与之比较的次要值。<br><br>[属性行为](/manual/api/reference_commentary#属性行为):<br>- *如果[动作对象](#动作)的`eventsource`设置为"由触发器创建的事件"，`conditiontype`设置为触发器动作的任何可能值，并且条件类型（见下文）为"26"，则为必填*<br>- *如果[动作对象](#动作)的`eventsource`设置为"内部事件"，`conditiontype`设置为内部动作的任何可能值，并且条件类型（见下文）为"26"，则为必填*<br>- *如果[动作对象](#动作)的`eventsource`设置为"基于服务状态更新创建的事件"，`conditiontype`设置为服务动作的任何可能值，并且条件类型（见下文）为"26"，则为必填*|
| formulaid | string | 用于从自定义表达式中引用条件的任意唯一ID。只能包含大写字母。在修改过滤条件时，ID必须由用户定义，但在之后请求它们时将重新生成。|
| operator | integer | 条件操作符。<br><br>可能的值：<br>0 - *(默认)* 等于；<br>1 - 不等于；<br>2 - 包含；<br>3 - 不包含；<br>4 - 在...内；<br>5 - 大于或等于；<br>6 - 小于或等于；<br>7 - 不在...内；<br>8 - 匹配；<br>9 - 不匹配；<br>10 - 是；<br>11 - 否。|
::: notetip
为了更好地了解如何使用具有各种类型表达式的过滤，请参阅[action.get](get#检索发现动作)和[action.create](create#使用自定义表达式过滤)方法页面的示例。
:::

每个条件类型都支持以下运算符和值。

| 条件 | 条件名称 | 支持的运算符 | 预期值 |
| --- | --- | --- | --- |
| 0 | 主机组 | 等于, 不等于 | 主机组ID。 |
| 1 | 主机 | 等于, 不等于 | 主机ID。 |
| 2 | 触发器 | 等于, 不等于 | 触发器ID。 |
| 3 | 事件名称 | 包含, 不包含 | 事件名称。 |
| 4 | 触发器严重级别 | 等于, 不等于, 大于等于, 小于等于 | 触发器严重级别。请参考[触发器 `severity` 属性](/manual/api/reference/trigger/object#触发器)以获取支持的触发器严重级别列表。 |
| 5 | 触发器值 | 等于 | 触发器值。请参考[触发器 `value` 属性](/manual/api/reference/trigger/object#触发器)以获取支持的触发器值列表。 |
| 6 | 时间段 | 在...内, 不在...内 | 事件触发的时间作为[时间段](/manual/appendix/time_period)。 |
| 7 | 主机IP | 等于, 不等于 | 要检查的一个或多个IP范围，用逗号分隔。有关支持的IP范围格式的更多信息，请参阅[网络发现配置](/manual/discovery/network_discovery/rule)部分。 |
| 8 | 发现的服务类型 | 等于, 不等于 | 发现的服务类型。服务类型与用于检测服务的发现检查类型相匹配。请参考[发现检查 `type` 属性](/manual/api/reference/dcheck/object#发现检查)以获取支持的类型列表。 |
| 9 | 发现的服务端口 | 等于, 不等于 | 一个或多个端口范围，用逗号分隔。 |
| 10 | 发现的状态 | 等于 | 发现对象的状态。<br><br>可能值：<br>0 - 主机或服务正常运行；<br>1 - 主机或服务宕机；<br>2 - 主机或服务已被发现；<br>3 - 主机或服务已丢失。 |
| 11 | 正常运行时间或宕机时长 | 大于等于, 小于等于 | 发现对象在当前状态下已经持续的时间（秒）。 |
| 12 | 接收到的值 | 等于, 不等于, 大于等于, 小于等于, 包含, 不包含 | 执行Zabbix agent、SNMPv1、SNMPv2或SNMPv3发现检查时返回的值。 |
| 13 | 主机模板 | 链接的模板ID。 |
| 16 | 问题被抑制 | 是, 否 | 不需要值时：使用“Yes”运算符表示问题必须被抑制，“No”表示不被抑制。 |
| 18 | 发现规则 | 等于, 不等于 | 发现规则的ID。 |
| 19 | 发现检查 | 等于, 不等于 | 发现检查的ID。 |
| 20 | Proxy | 等于, 不等于 | Proxy ID。 |
| 21 | 发现对象 | 等于 | 触发发现事件的对象的类型。<br><br>可能值：<br>1 - 被发现的主机；<br>2 - 被发现的服务。 |
| 22 | 主机名 | 包含, 不包含, 匹配, 不匹配 | 主机名。<br>在自动注册条件下，对于*匹配*和*不匹配*运算符支持使用正则表达式。 |
| 23 | 事件类型 | 等于 | 特定的内部事件。<br><br>可能值：<br>0 - 监控项处于“不支持”状态；<br>1 - 监控项处于“正常”状态；<br>2 - LLD规则处于“不支持”状态；<br>3 - LLD规则处于“正常”状态；<br>4 - 触发器处于“未知”状态；<br>5 - 触发器处于“正常”状态。 |
| 24 | 主机元数据 | 包含, 不包含, 匹配, 不匹配 | 自动注册主机的元数据。<br>对于*匹配*和*不匹配*运算符支持使用正则表达式。 |
| 25 | 标签 | 等于, 不等于, 包含, 不包含 | 事件标签。 |
| 26 | 标签值 | 等于, 不等于, 包含, 不包含 | 事件标签值。 |
| 27 | 服务 | 等于, 不等于 | 服务ID。 |
| 28 | 服务名称 | 等于, 不等于 | 服务名称。 |

[comment]: # ({/19dead90-dd860074})
