JavaScript如何提取webhook返回message字段中的实际消息内容
JavaScript 提取Webhook响应中实际消息内容的实现
你对接的Webhook接口响应格式固定为message: '发送者名称: 实际消息内容',可根据你当前拿到的数据形态,选择对应处理方案:
方案1:已解析拿到message字段的纯值
如果你已经将响应解析为JS对象,message字段的值就是单引号包裹的内部内容(例如值为uat.chatbot: Klhhn、Zulkifli Raihan: Hello),可直接用以下两种方式提取:
- 字符串拆分法(兼容性好,无正则兼容问题)
// 示例:已拿到的message字段值 const messageVal = "Zulkifli Raihan: Hello"; // 跳过第一个冒号+空格前的发送者名,剩余内容拼接为实际消息 const realContent = messageVal.split(': ').slice(1).join(': '); // 测试示例 console.log(realContent) // 输出: Hello
注意:该写法会保留消息内容中自带的: 字符,不会出现消息被截断的问题,适配绝大多数业务场景。
- 正则匹配法(代码更简洁)
const messageVal = "uat.chatbot: Klhhn"; // 匹配第一个冒号后的所有内容作为捕获组 const realContent = messageVal.match(/^.+?:\s*(.*)$/)?.[1] ?? ''; // 测试示例 console.log(realContent) // 输出: Klhhn
注意:正则默认匹配从字符串开头到第一个冒号的内容为发送者名,后续所有内容均判定为实际消息,空值时返回空字符串避免报错。
方案2:拿到的是原始响应文本,未做字段解析
如果你手里是未解析的原始响应字符串(例如整行内容为message: 'Zulkifli Raihan: Hello'),可以先提取单引号内的字段值,再做内容拆分:
const rawResponse = "message: 'uat.chatbot: Klhhn'"; // 第一步:提取单引号包裹的message字段值 const messageVal = rawResponse.match(/message:\s*'([^']+)'/)?.[1] ?? ''; // 第二步:拆分得到实际消息 const realContent = messageVal.split(': ').slice(1).join(': '); // 测试示例 console.log(realContent) // 输出: Klhhn
边界适配说明
- 支持发送者名称包含空格、特殊符号(例如示例里的
.)的场景 - 支持实际消息内容本身包含冒号、空格的场景,不会错误截断
- 空值场景默认返回空字符串,不会抛出JS运行错误
内容的提问来源于stack exchange,提问作者Zulkifli Raihan
相关产品推荐
相关产品推荐

