# 触发器

云A2A模式支持Webhook事件的触发器，适用于Agent长时任务，通过系统通知告知用户任务结果。 内容生成 / 任务完成后，开发者调用华为开放统一接口发送通知。发送成功，用户手机收到推送，点击通知进入Agent查看结果。

通知分为text、data两类：

* text：点击通知进入Agent，直接展示text内容。
* data：data作为入参触发触发器运行任务，并返回结果给用户。

同时发送text和data消息时，仅text生效。

用户效果图示：

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/aa/v3/pnBiYVv6TqqSTOMQZBn-NQ/zh-cn_image_0000002787347513.png?HW-CC-KV=V1&HW-CC-Date=20261015T102400Z&HW-CC-Expire=31536000000&HW-CC-Sign=21F42CD06C97AF45D47D7102A24991C8F4EBF9F02AF52542CF18E7642E624452 "点击放大")

触发器配置入口图示：

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/9b/v3/ymxpcwxHSq2WlA-vrXmMCg/zh-cn_image_0000002735779768.png?HW-CC-KV=V1&HW-CC-Date=20261015T102400Z&HW-CC-Expire=31536000000&HW-CC-Sign=E6C2C0784ABDD0A1F516977EC1703F6CC832CD3F95971401CAF5C6E9AC24F91C "点击放大")

触发器创建界面如下：

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/5e/v3/13K5N6-lSii34KlqC6Mp8Q/zh-cn_image_0000002748222806.png?HW-CC-KV=V1&HW-CC-Date=20261015T102400Z&HW-CC-Expire=31536000000&HW-CC-Sign=E5EA0D903ECA740AD1210B4BD7B7D31F8A2035FA264D6B10B8273511F20118CE "点击放大")

* 名称：不影响连通性，开发者可按照实际业务自由配置。
* 触发器类型：事件触发。
* 事件选项：Webhook。
* Client端访问Server端的Url：保持默认。
* apiID：Agent Server访问上图中的Url时必须携带的参数，点击"确定"按钮后，再次进入该触发器时，会展示apiID，如下图。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/33/v3/mSjVYc35R0CURE1M-OGjPA/zh-cn_image_0000002777708767.png?HW-CC-KV=V1&HW-CC-Date=20261015T102400Z&HW-CC-Expire=31536000000&HW-CC-Sign=74DD2061601A3D71D48FF28FDC61E1FD2FDBA724437C6B5508CFAB80E4C869A9 "点击放大")

* Access Key & Security Key: 点击"查看凭证（Key 和安全秘钥）"，进入小艺开放平台的【凭证】管理界面。点击新建凭证，设置Key名称后保存，保存后将生成Key和安全密钥。生成的Key和安全密钥将在Webhook事件触发器中作为Access Key （Key）& Security Key（安全密钥）使用。 生成Key和安全密钥成功图示：

  ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/e2/v3/cIvBu2mbQCOLRZMMNSPonQ/zh-cn_image_0000002777847731.png?HW-CC-KV=V1&HW-CC-Date=20261015T102400Z&HW-CC-Expire=31536000000&HW-CC-Sign=A9124071621E9072018360FE548A8E13F8C4ACFF9A4E18DA781F8189B0D4ABF4 "点击放大")
  > 说明
  > * 创建的凭证是通用的，可供本账号下所有Agent的Webhook事件使用。
  > * 如果创建了多个凭证，Webhook事件可任意选择密钥对使用。
  > * 安全密钥只在创建成功时可明文复制，关闭窗口前请复制并妥善保管。

  为了配合Webhook功能，还需要在Agent的变量功能中，打开系统变量push_id的开关。

  ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/d9/v3/aKevW9kDQ_W0RWa6YCjkpg/zh-cn_image_0000002748469544.png?HW-CC-KV=V1&HW-CC-Date=20261015T102400Z&HW-CC-Expire=31536000000&HW-CC-Sign=68F3A9ECE2BD277C70B4906C60C1A2FA5CEF8E6888C79906DA8EA051E250391C "点击放大")

  打开后，可见下面的push_id变量已可用：

  ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/69/v3/XMi5BOCPTNyFbwdwH4EMLw/zh-cn_image_0000002778009741.png?HW-CC-KV=V1&HW-CC-Date=20261015T102400Z&HW-CC-Expire=31536000000&HW-CC-Sign=8954954FF300A8671D3280EA4C2419E9C3AB39202295E48D3CC1EDB2D57E9B54 "点击放大")

接下来，需要Agent Server按照下面的通知消息字段说明访问Agent Client的URL API。

## Webhook事件通知消息字段说明

**Request Header**

|参数|参数类型|**M/O**|说明|
|:-------------|:-----|:------|:---------------------------------------------------------------------------------------------------------------------------------|
|Content Type|String|M|固定值：application/json|
|Accept|String|M|固定值：application/json|
|x-hag-trace-id|String|M|请求标识，使用随机数生成，用于问题定位。|
|X-Access-Key|String|M|从小艺开放平台获取的触发器事件WebHook分配的Access Key。|
|X-Sign|String|M|从小艺开放平台获取的触发器事件WebHook分配的Security Key生成的签名，参数签名=Base64（HMAC-SHA256（secretKey， ts））， 其中secretKey 为开发者在小艺开放平台上配置的接入密钥（Security Key）。|
|X-Ts|String|M|时间戳，用于加密和缓存穿透。 格式为：当前计算机时间和GMT时间（格林威治时间）1970年1月1号0时0分0秒所差的毫秒数。 例如：2018/1/1 08:00:00.000 的时间戳为"1514764800000"。|

**Request Body**

|参数|-|参数类型|**M/O**|说明|
|:------|:------------------|:---------------|:------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|jsonrpc|-|String|M|JSON-RPC协议版本，固定值：2.0|
|id|-|String|M|外层id； 全局唯一消息序列号，用于响应时标识请求，可用随机数uuid生成。|
|result|-|Object|M|-|
|result|id|String|M|内层result.id； 流式交互的唯一标识，一次流式交互中（从发起本次请求到本次请求完成处理之间）保持不变，可用随机数uuid生成。|
|result|apiId|String|M|创建Webhook触发器时生成的唯一标识apiID。|
|result|pushId|String|M|请求时使用平台[系统变量](https://developer.huawei.com/consumer/cn/doc/service/variable-0000002765458983#ZH-CN_TOPIC_0000002765458983__section177616814473)push_id，代表通过webhook推送通知时使用的唯一ID。|
|result|agentLoginSessionId|String|O|账号授权时三方Agent服务器提供的用户授权身份ID，需要账号绑定的Agent必填，账号绑定可参考[账号绑定](https://developer.huawei.com/consumer/cn/doc/service/account-0000002735779654)。|
|result|pushText|String|M|通知消息的展示内容，按Push服务规格提供。 规格：内容最多显示 84 个英文字符，或 57 个中文字；最多显示 3 行，显示不下部分"..."截断。|
|result|kind|String|M|事件类型，固定值：task。|
|result|artifacts|Array[Artifacts]|M|推送数据。|

**Artifacts**

|参数|  |参数类型|**M/O**|说明|
|:---------|:---|:------------|:------|:----------------------------------------------------------------------------------------------------------------------------------|
|artifactId|-|String|M|本条Artifact的唯一ID，用于请求消息去重。|
|parts|-|Array<Object>|M|-|
|parts|kind|String|M|消息类型，推送文本内容时值为：text；推送任务消息时值为：data。|
|parts|text|String|O|文本内容，支持[markdown格式](https://developer.huawei.com/consumer/cn/doc/service/markdown-grammar-0000002553963585)。发送通知消息时，text和data字段二选一。|
|parts|data|Object|O|执行触发器任务时，将data数据作为任务的入参调用对应插件、工作流或Agent server。发送通知消息时，text和data字段二选一。|

请求示例：

```screen
curl 'https://hag.cloud.huawei.com/open-ability-agent/v1/agent-webhook' \
-H 'Content Type: application/json' \
-H 'Accept: application/json' \
-H 'x-hag-trace-id: {{请求标识，使用随机数生成，用于问题定位。}}' \
-H 'X-Access-Key: {{从小艺开放平台获取的触发器事件WebHook分配的Access Key。}}' \
-H 'X-Sign: {{从小艺开放平台获取的触发器事件WebHook分配的Security Key生成的签名，参数签名=Base64（HMAC-SHA256（secretKey， ts））， 其中secretKey 为开发者在小艺开放平台上配置的接入密钥（Security Key）。}}'\
-H 'X-Ts: {{时间戳，用于加密和缓存穿透。 格式为：当前计算机时间和GMT时间（格林威治时间）1970年1月1号0时0分0秒所差的毫秒数。 例如：2018/1/1 08:00:00.000 的时间戳为"1514764800000"}}'\
-d '{
    "jsonrpc": "2.0",
    "id": "a3f9b2c1-d9e4-4b8f-9a7c-2e1d5f3b8c0a",
    "result": {
        "id": "7c1d3e5f-9a2b-4c8d-6e3f-1a9b4c2d8e6f",
        "apiId": "webhook794ed095874f4c68888",         
        "pushId": "d2e4f1c8-9b3a-4d7e-8f2c-6a1b5e9f3d4c",
        "agentLoginSessionId":"MDEr1a7L0wxJpyjiaur43RicGHm9FVbJSB",
        "pushText": "您的照片已完成，请查看",
        "kind": "task",
        "artifacts": [
            {
                "artifactId": "b5c8d1a3-f9e2-4b7c-8d6a-1f9e3b5c7d8a",
                "parts": [
                    {
                        "kind": "data",                    
                        "data": {
		                "prompt": "生成一只可爱小猫"
	                }
                    }
                ]
            }
        ]
    }
}'
```

发送通知消息后，httpcode码为200表示请求成功。

pushText展示图示：

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/52/v3/VYLKB-aqRq6OMcXMamSMeQ/zh-cn_image_0000002777978867.png?HW-CC-KV=V1&HW-CC-Date=20261015T102400Z&HW-CC-Expire=31536000000&HW-CC-Sign=95730B2EF1440B6BBE58BBF6343467481740A39F1CBD290A7F5A4C1A82BF0E89 "点击放大")

text或任务执行结果效果图示：

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/35/v3/Y0HXnIXdRXuzf_RqPCTWSA/zh-cn_image_0000002777858733.png?HW-CC-KV=V1&HW-CC-Date=20261015T102400Z&HW-CC-Expire=31536000000&HW-CC-Sign=B9B290BA41543631E8565D792191E2B3051BE60EB562B418325888A760D9E3B1 "点击放大")

## data数据说明

1）触发执行插件任务时通知消息data示例：

```screen
{
	"kind": "data",
	"data": {
		"cityName": "南京" //执行插件的入参，使用时替换成执行插件入参及值。
	}
}
```

触发后使用data中的参数执行插件。

2）触发执行工作流任务时通知消息data示例：

```screen
{
	"kind": "data",
	"data": {
		"cityName": "南京" //自定义参数，执行工作流时将参数塞入工作流入参的EVENT_INPUT.payload里。
	}
}
```

触发后将data参数作为EVENT_INPUT.payload中执行工作流，EVENT_INPUT示例：

```screen
{
            "payload": {
                "cityName": "南京" //通知消息中的自定义参数。
            },
            "header": {
                "name": "CloudEvent", //固定值。
                "namespace": "Common" //固定值。
            }
        }
```

3）A2A模式下触发执行任务时通知消息data示例：

```screen
{
	"kind": "data",
	"data": {
		"cityName": "南京" //自定义参数，执行任务时将此参数塞入会话消息的的data.events中。

	}
}
```

触发后将data参数作为data.events按照A2A协议发送给Agent Server获取答复结果（A2A协议规范可参考[协议规范](https://developer.huawei.com/consumer/cn/doc/service/cloud-a2a-protocol-0000002762998141)），events示例：

```screen
[{
		"header": {
			"name": "Trigger",
			"namespace": "Common"
		},
		"payload": {
			"dataMap": {
				"cityName": "南京" //通知消息中的自定义参数。
			},
			"dialogueHistorySwitch": false,
			"eventDescription": "{{apiID}}",
			"eventName": "{{apiID}}",
			"eventType": "Webhook",
			"triggerName": "{{触发器名称}}",
			"triggerType": "event"
		}
	}]
```

