目录

触发器

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

通知分为text、data两类:

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

用户效果图示:

触发器配置入口图示:

触发器创建界面如下:

接下来,需要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

-

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或任务执行结果效果图示:

data数据说明

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"
		}
	}]