Skip to content

聊天消息触发器

特点

聊天消息触发器(SourceEventTaskTrigger)用于监听并响应来自各类消息源的事件。作为触发器,它能够根据配置的条件过滤消息,并将符合条件的消息作为任务触发数据发送给执行器。触发时发送的消息结构为 ITaskEventTriggerData,包含触发器名称、事件名称以及原始消息数据。

代码配置

根据代码,聊天消息触发器的配置如下:

typescript
const ppagent = new PPAgent({
  // ... 其他配置 ...
  tasks: [
    {
      name: "聊天消息触发任务",
      triggerName: "source-trigger",
      triggerOptions: {
        // 必填配置
        eventNames: [SourceEventType.CHAT_MESSAGE], // 响应的消息类型,可选值:CHAT_MESSAGE(聊天接收消息)、RESPONSE_MESSAGE(聊天发送消息)、GROUP_NEW_USER(新用户进群)、CUSTOM(自定义事件)
        
        // 以下两项至少配置一个
        sourceNames: "wechat", // 按模板名称配置,监听指定类型下所有源的消息
        sourceInstanceNames: ["wechat-instance1", "wechat-instance2"], // 按实例名称配置,只监听指定实例的消息
        
        // 可选配置
        messageRule: {
          // 消息规则,仅当eventNames包含CHAT_MESSAGE时生效
          replyAll: false, // 是否回复所有消息
          keywords: ["你好", "帮助"], // 关键词匹配
          regex: "^/\\w+", // 正则表达式匹配
          // 更多规则配置...
        }
      },
      runnerName: "...", // 执行器名称
      runnerOptions: {
        // ... 执行器配置
      }
    }
  ]
});

// 服务器运行请参考 install_code.md 文件

注意事项

  1. eventNames 配置项决定了触发器响应哪些类型的消息事件,实际响应取决于消息源是否支持这些类型的消息发布。

  2. sourceNamessourceInstanceNames 是"或"的关系,至少需要配置其中一项。前者按消息源类型名称监听,后者按具体实例名称监听。

  3. 消息规则 messageRule 仅在 eventNames 包含 CHAT_MESSAGE 类型时生效,用于过滤不符合条件的消息。

  4. 当使用正则表达式 regex 进行消息匹配时,需确保正则表达式格式正确,否则可能导致过滤失效。