美洽Webhook事件有哪些?
美洽的Webhook把平台中发生的重要事件以HTTP回调的方式推送到你指定的接收地址,覆盖会话与消息的全生命周期、访客资料与轨迹、坐席状态与指派、工单与文件、评价以及机器人交互等多类事件,便于系统实时同步、通知与自动化处理。

先把事情说清楚:美洽Webhook到底通知哪些类型的事件?
简单来说,Webhook 的作用就是把平台里“发生的事”主动告诉你。美洽会把这些事件分成几大类,每一类里又包含多个具体事件。下面按照功能维度来拆解,便于你快速找到和业务相关的那一类事件。
主要事件分类(按功能)
- 会话(Conversation)相关:会话创建、更新、关闭、转接、会话分配/撤回、会话标签变更等。
- 消息(Message)相关:消息发送/接收、消息更新(编辑/撤回)、消息状态(已读/未读)等。
- 访客(Visitor / Contact / Customer)相关:访客进入/离开、访客资料新增/变更、访客属性标签变更等。
- 坐席(Agent / Operator)相关:坐席签入/签出、坐席在线状态变更、坐席接入/被指派等。
- 工单 / 任务(Ticket / Task)相关:工单创建、更新、状态变更(待处理/已处理)等。
- 文件(File)相关:文件上传、文件删除、文件关联到会话或消息等。
- 评价 / 满意度(Satisfaction / Rating)相关:会话评价、评价更新等。
- 机器人(Bot)/ 智能流程相关:机器人回复、机器人转人工、机器人脚本执行事件等。
- 其它系统事件:标签/工单模板变更、权限或配置变更、测试推送等(视平台功能开放而定)。
列个表,把常见事件都罗列出来(更容易对照)
下面是一张常见事件清单表,右侧给出触发场景和常见字段,便于你对照接收逻辑。注意:不同产品版本或企业定制版可能会有细微差别,以控制台的实际事件名为准。
| 事件类别 | 常见事件名(示例) | 触发场景 | 常见关键字段 |
| 会话 | conversation.created / conversation.updated / conversation.closed | 用户发起新聊天 / 会话属性变更 / 会话结束 | conversation_id, status, created_at, closed_at, assignee_id, tags |
| 消息 | message.created / message.updated / message.deleted | 访客或坐席发送消息 / 编辑或撤回消息 | message_id, conversation_id, sender_type, content, attachments, timestamp |
| 访客 | visitor.entered / visitor.left / contact.updated | 访客进入页面 / 离开 / 资料被更新 | visitor_id, session_id, ip, page_url, custom_attributes |
| 坐席 | agent.login / agent.logout / agent.assigned | 坐席上下线 / 被指派会话 | agent_id, status, assigned_conversation_ids |
| 工单 / 任务 | ticket.created / ticket.updated | 工单生成或状态流转 | ticket_id, subject, status, priority, assignee_id |
| 文件 | file.uploaded / file.deleted | 访客或坐席上传文件 | file_id, filename, size, url, related_message_id |
| 评价 | satisfaction.created / satisfaction.updated | 客户为会话打分、追加评价 | satisfaction_id, conversation_id, score, comment, created_at |
| 机器人 | bot.replied / bot.hand_over | 机器人回复或转人工 | bot_id, conversation_id, step, payload |
为什么分这些类?一言以蔽之:为了把“变化”结构化
把事件分门别类,有助于你建立可靠的业务逻辑。比如:
- 消息类事件通常用于把聊天内容写入数据库或触发告警;
- 会话状态事件用于同步会话状态到CRM或工单系统;
- 访客事件可以驱动用户画像更新或埋点;
- 评价事件用于统计服务质量或触发巡检流程。
常见的Webhook Payload 长什么样(示例)
我不贴具体的 JSON 字段名映射以免和你控制台不一致,但典型payload会包含几类信息:
- 事件元信息:event_type(事件类型),event_id(唯一ID),timestamp(时间戳),version(可选);
- 主体对象:conversation/message/visitor/ticket 等对象的完整或简要表示;
- 相关联信息:如触发者(agent_id / visitor_id)、会话id、附件信息等;
- 签名或校验字段:用于验证回调来自平台(例如使用HMAC签名或专用校验头)。
举个接收端处理的伪流程(思路)
- 先校验签名与时间戳,拒绝不合法或过期请求;
- 解析 event_type 和 event_id,检查是否已处理(幂等);
- 把事件快速入队(不要在收到请求时同步做大量业务);
- 异步消费队列完成落库、通知或触发后续流程;
- 返回 200 给美洽(或按平台要求返回特定格式),否则平台会重试。
关于“如何在控制台配置/测试Webhook”的实战建议
不同用户界面可能会略有差别,但总体步骤相似:
- 在美洽控制台找到“开发者”、“集成”或“Webhook”设置项;
- 添加/编辑一个回调 URL,设置事件订阅范围(全量或选择性事件);
- 填写密钥/签名配置(如果有),开启 TLS(https)优先;
- 利用控制台的“测试推送”功能或用 ngrok 暴露本地服务进行联调;
- 上线前在灰度/测试环境充分验证——模拟并发、重试与异常场景。
安全性与可靠性:别踩常见的坑
接收Webhook 看似简单,但有不少容易被忽视的地方:
- 校验签名:务必校验平台发来的签名或Token,防止伪造请求。
- 时效性校验:防止重放攻击,检查时间戳并允许短时间误差。
- 快速响应:回调处理应尽量快速返回(例如立即返回200并异步处理),否则平台会认为失败并重试多次。
- 幂等设计:事件可能重发或乱序到达,使用 event_id 或事件对象的updated_at 来保证幂等。
- 性能预留:高并发下把回调写入消息队列或缓存,后端消费者再做重处理,避免阻塞回调线程。
- 日志与追踪:记录原始请求、校验结果和处理结果,方便回溯与排障。
常见问题与应对(经验贴)
- “为什么控制台显示已推送但我没收到?” 检查回调URL是否能公网访问、证书是否有效、是否防火墙或WAF拦截、以及返回状态码是否为200。
- “收到重复事件怎么办?” 使用事件ID做去重或维护事件处理状态表,若业务允许,幂等更新记录即可。
- “如何处理消息顺序?” 消息类事件通常有时间戳或序号字段,按时间/序号顺序入库,若乱序到达可先缓存。
- “我只关心部分事件,如何减少噪声?” 在控制台只订阅需要的事件;或在接收端对不关心事件直接返回 200 并忽略。
版本、变更与兼容策略
平台会迭代,事件字段也可能调整。几个切实可行的做法:
- 订阅事件时保留版本号(如有),并在接收逻辑中支持多个版本的解析;
- 采用宽松解析策略:对未知字段忽略,而不是报错;
- 在日志中记录原始 payload,以便迁移或回放;
- 在控制台与平台的通知通道(如邮件)保持对接,及时获悉事件格式变更。
把Webhook用好吗?几个实战场景
把美洽的Webhook事件和你的业务系统结合,可以做很多实时化、自动化的事情:
- 实时工单创建:当访客发起离线留言或满足条件触发时,自动生成工单并分配给相应团队;
- CRM 同步:会话或访客资料变更即时同步到CRM,保持用户画像最新;
- 告警与SLA:当会话超时或满意度下降时,触发告警或质检任务;
- 聊天机器人优化:通过机器人的交互事件收集问题意图,练模型或调整流程;
- 统计与 BI:基于评价、会话时长、消息量等事件做实时仪表盘与报表。
调试与回放技巧
- 使用控制台的“测试推送”功能快速验证接收端逻辑;
- 搭建本地调试环境(ngrok)来捕获真实事件流;
- 在接收端留下原始数据快照,必要时可以用来回放或重跑消费者逻辑;
- 模拟异常场景(超时、重复、乱序)来检验系统健壮性。
总结性建议(不会太正经的那种,像朋友提醒你)
把Webhook当成“实时事件流”,不要把所有事都绑在回调里同步完成。先把它当作消息来源,靠队列、幂等和异步消费者来稳稳地处理——这样哪怕平台重推或者你临时维护,也不会手忙脚乱。还有,别忽视签名校验和日志记录,这是后续查问题时最大的救命稻草。
好了,这就是关于美洽Webhook事件的实用指南与实战建议。你可以根据业务优先级先订阅最关键的几类事件,逐步扩展和打磨消费逻辑;在对接过程中遇到控制台具体字段有疑问,直接在控制台的开发者文档或客服说明里核对事件名称与字段,通常会有最权威的一手信息。就先写到这儿,边写边想,后续你要是想要我把某类事件的示例payload和处理代码思路拆成步骤,我可以继续把它拆成更细的“施工图”。