Skip to content

全局消息触发器

特点

全局消息触发器(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 数组中输入自定义事件的名称。

注意事项

  1. 在使用全局消息触发器时,确保 eventNames 配置至少包含一个事件名称,这是必填项。

  2. 自定义事件需要先通过 GlobalEvent 类的 registerGlobalEventNames 方法注册,才能被外部通过接口获取到名称。未注册的事件也可以正常触发消息,但不会在UI的事件名称列表中显示。

  3. 如果您需要监听应用中的消息源事件(如聊天消息等),应使用 SourceEventTaskTrigger 而不是全局事件触发器。

  4. 您可以配置多个使用不同事件名称的全局消息触发器,以便对不同类型的事件执行不同的任务。

  5. 服务器运行代码配置请参考 install_code 文件。