在企业微信二次开发中,外部群机器人可以通过@消息触发不同的业务查询。

比如客户在群里发送“@机器人 查询订单1001”,系统识别@对象后,自动提取订单编号,调用后台订单查询接口,再将结果返回原始群聊。

通过星云API对接企业微信外部群消息收发能力,可以将@消息识别、参数提取和业务接口调用连接起来。

相关接口参考顶部星云官网卡片里的接口文档 。

一、先识别@消息和发送人

收到外部群消息后,需要判断客户是否@了指定机器人,并提取相关信息。

建议保存以下字段:

字段作用
instanceId企业微信实例ID
roomId外部群ID
senderId消息发送人ID
mentionIds被@成员标识
messageId消息唯一标识
content消息内容

其中,mentionIds用于识别消息中的@对象。应优先使用接口提供的实际@标识,而不是只根据文本中的“@机器人”判断。

具体字段及@识别能力,以实际接口支持情况为准。

二、从消息中提取业务参数

例如客户发送:

@机器人 查询订单1001

系统需要识别两个信息:

  • 业务类型:订单查询

  • 业务参数:订单编号1001

可以通过正则表达式提取订单编号。

function parseMessage(content) {
  const match = content.match(/查询订单\s*(\d+)/);

  if (!match) {
    return null;
  }

  return {
    businessType: "order_query",
    orderId: match[1]
  };
}

以上是针对数字订单编号的示例,实际开发时需要根据业务系统的编号规则调整。

如果客户没有提供完整参数,可以先回复“请提供订单编号”。

三、完整的@消息查询流程

客户在外部群@机器人
        ↓
接收消息并识别@对象
        ↓
提取发送人及群聊信息
        ↓
解析业务指令与参数
        ↓
校验客户身份和查询权限
        ↓
调用后台查询接口
        ↓
获取业务查询结果
        ↓
生成自动回复内容
        ↓
返回原始外部群

例如订单查询成功后,可以回复:

订单编号:1001
订单状态:已发货
物流状态:运输中

如果订单不存在,则提示客户核对编号,不需要继续调用其他接口。

四、实际开发需要注意什么

1. 避免普通消息误触发

只有消息确实@了指定机器人,并且符合业务指令规则时,才调用后台接口。

2. 做好客户身份校验

不能只凭订单编号查询数据,需要确认发送人是否具有对应订单的查询权限。

3. 防止重复调用

通过messageId去重,避免重复回调导致同一查询被多次执行。

4. 处理接口超时

如果查询接口响应较慢,可以先回复“正在查询”,后台异步处理完成后再返回结果。

5. 保证回复群聊准确

创建任务时保存实例ID、群ID和发送人ID,避免多个外部群同时触发查询时出现消息串线。

五、总结

企业微信外部群机器人通过@消息调用查询接口,关键是准确识别@对象、提取业务参数,再将请求交给对应的后台系统处理。

通过@消息识别、参数解析、身份校验和接口路由,可以实现订单查询、物流查询、库存查询等常见业务。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐