全局消息触发器
特点
全局消息触发器(GlobalEventTaskTrigger)用于监听应用内的全局事件消息,并根据配置的事件类型触发相应的任务执行。当应用中发布了指定类型的全局事件时,触发器会捕获这些事件并将其传递给任务执行器。
全局事件触发器发送的消息结构符合 ITaskEventTriggerData
接口,包含以下字段:
triggerName
: 触发器的名称(固定为"global-trigger")eventName
: 事件的名称,对应配置的事件类型data
: 事件的具体数据,符合IGlobalEventData
接口from
: 来源,值与 triggerName 相同
IGlobalEventData
接口包含以下字段:
title
: 消息标题desc
: 消息描述(可选)time
: 消息时间id
: 消息唯一标识data
: 消息详细数据(可选)
代码配置
要使用全局消息触发器,您需要在创建 PPAgent 实例时配置任务部分。下面是一个完整的配置示例:
typescript
const chat = new PPAgent({
// ... 其他配置项
tasks: [
{
name: "应用启动通知任务", // 任务名称,可自定义
triggerName: GlobalEventTaskTrigger.params.name, // 使用全局消息触发器
triggerOptions: {
eventNames: [
GlobalEventNames.APP_STARTED, // 监听应用启动事件
GlobalEventNames.APP_RESTARTED // 监听应用重启事件
// 可以添加更多事件名称
]
},
runnerName: "消息执行器名称", // 要使用的执行器名称
runnerOptions: {
// 执行器的配置选项
instanceName: "执行器实例名称",
// 其他执行器特定配置...
}
}
]
});
全局消息触发器支持以下内置事件类型:
GlobalEventNames.APP_NOTIFY
: 应用通知GlobalEventNames.APP_RELOAD
: 配置重载GlobalEventNames.APP_RESTARTED
: 应用重启GlobalEventNames.APP_STARTED
: 应用启动
除了内置事件类型外,触发器还支持自定义事件类型,您可以直接在 eventNames
数组中输入自定义事件的名称。
注意事项
在使用全局消息触发器时,确保
eventNames
配置至少包含一个事件名称,这是必填项。自定义事件需要先通过
GlobalEvent
类的registerGlobalEventNames
方法注册,才能被外部通过接口获取到名称。未注册的事件也可以正常触发消息,但不会在UI的事件名称列表中显示。如果您需要监听应用中的消息源事件(如聊天消息等),应使用
SourceEventTaskTrigger
而不是全局事件触发器。您可以配置多个使用不同事件名称的全局消息触发器,以便对不同类型的事件执行不同的任务。
服务器运行代码配置请参考 install_code 文件。