云A2A模式支持Webhook事件的触发器,适用于Agent长时任务,通过系统通知告知用户任务结果。 内容生成 / 任务完成后,开发者调用华为开放统一接口发送通知。发送成功,用户手机收到推送,点击通知进入Agent查看结果。
通知分为text、data两类:
同时发送text和data消息时,仅text生效。
用户效果图示:

触发器配置入口图示:

触发器创建界面如下:



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

打开后,可见下面的push_id变量已可用:

接下来,需要Agent Server按照下面的通知消息字段说明访问Agent Client的URL API。
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 | - |
id | String | M | 内层result.id; 流式交互的唯一标识,一次流式交互中(从发起本次请求到本次请求完成处理之间)保持不变,可用随机数uuid生成。 | |
apiId | String | M | 创建Webhook触发器时生成的唯一标识apiID。 | |
pushId | String | M | 请求时使用平台系统变量push_id,代表通过webhook推送通知时使用的唯一ID。 | |
agentLoginSessionId | String | O | 账号授权时三方Agent服务器提供的用户授权身份ID,需要账号绑定的Agent必填,账号绑定可参考账号绑定。 | |
pushText | String | M | 通知消息的展示内容,按Push服务规格提供。 规格:内容最多显示 84 个英文字符,或 57 个中文字;最多显示 3 行,显示不下部分“…”截断。 | |
kind | String | M | 事件类型,固定值:task。 | |
artifacts | Array[Artifacts] | M | 推送数据。 |
Artifacts
参数 | 参数类型 | M/O | 说明 | |
|---|---|---|---|---|
artifactId | - | String | M | 本条Artifact的唯一ID,用于请求消息去重。 |
parts | - | Array<Object> | M | - |
kind | String | M | 消息类型,推送文本内容时值为:text;推送任务消息时值为:data。 | |
text | String | O | 文本内容,支持markdown格式。发送通知消息时,text和data字段二选一。 | |
data | Object | O | 执行触发器任务时,将data数据作为任务的入参调用对应插件、工作流或Agent server。发送通知消息时,text和data字段二选一。 |
请求示例:
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展示图示:

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

1)触发执行插件任务时通知消息data示例:
{
"kind": "data",
"data": {
"cityName": "南京" //执行插件的入参,使用时替换成执行插件入参及值。
}
} 触发后使用data中的参数执行插件。
2)触发执行工作流任务时通知消息data示例:
{
"kind": "data",
"data": {
"cityName": "南京" //自定义参数,执行工作流时将参数塞入工作流入参的EVENT_INPUT.payload里。
}
} 触发后将data参数作为EVENT_INPUT.payload中执行工作流,EVENT_INPUT示例:
{
"payload": {
"cityName": "南京" //通知消息中的自定义参数。
},
"header": {
"name": "CloudEvent", //固定值。
"namespace": "Common" //固定值。
}
} 3)A2A模式下触发执行任务时通知消息data示例:
{
"kind": "data",
"data": {
"cityName": "南京" //自定义参数,执行任务时将此参数塞入会话消息的的data.events中。
}
} 触发后将data参数作为data.events按照A2A协议发送给Agent Server获取答复结果(A2A协议规范可参考协议规范),events示例:
[{
"header": {
"name": "Trigger",
"namespace": "Common"
},
"payload": {
"dataMap": {
"cityName": "南京" //通知消息中的自定义参数。
},
"dialogueHistorySwitch": false,
"eventDescription": "{{apiID}}",
"eventName": "{{apiID}}",
"eventType": "Webhook",
"triggerName": "{{触发器名称}}",
"triggerType": "event"
}
}]