背景
在 2023 年的统计数据中,WhatsApp 成为了印尼最常用的社交媒体,拥有高达 2.2 亿的用户量,占据印尼互联网人群的 90%之多。
WhatsApp 开发的 WhatsApp Business API 为企业开辟了一条与客户进行大规模、高效且合规沟通的崭新途径。它使得企业能够借助自动化和集成的模式,发送通知、营销信息以及客户支持回复等各类内容。通过使用 WhatsApp Business API,企业能够在引流、服务、促活以及客户管理等诸多方面充分发挥积极作用。
目前,在印尼业务中虽然存在短信、电话、邮箱、推送等多种触达方式,但在成本和触达率方面均存在差异。鉴于 WhatsApp 作为印尼最为常用的社交媒体,业务方面有着强烈的诉求,期望借助 WhatsApp 来触达客户。正因如此,WABA SCRM 系统应运而生,从而解决业务上的痛点。
能力模块
Agent模块
Agent 代表着此系统的用户,即能够使用 INBOX 与客户进行聊天的用户。在该模块当中,能够创建用户、分配角色权限,还能够对用户状态予以修改等。
Team模块
在该模块中,能够创建团队,并且可以对团队人员进行修改等操作。
Contact模块
联系人,多指客户信息,通过外部API对接或者文件导入的方式,给经办分配上不同客户,以实现聊天
Sender模块
企业发送号码,由业务采购手机号码,绑定在企业号上。在INBOX上,经办使用SENDER与客户聊天。该模块可以进行号码分配,包括主号、副号设定。
角色权限模块
该模块支持创建系统角色,并支持对角色进行权限配置
inbox模块
聊天信箱,系统核心能力,用户可以使用INBOX与客户在线聊天
系统架构
scrm系统由backend,ws,backduser,waba四个服务组成。
系统 | 职责 |
scrm-back | 后台服务,负责聚合业务逻辑,提供后台操作界面及聊天界面等 |
scrm-ws | 长连接服务,使用websocket保持聊天会话连接 |
scrm-backuser | 负责用户登录注册,角色权限配置 |
scrm-waba | 实现系统核心功能,包括聊天、sender分配、联系人管理、案件出入池等 |
长连接通信
当用户打开聊天界面时,用户端会与后台服务建立一个长连接。多个用户端将会与后台服务的多个 pod 形成 n-n 的连接关系,如下图所示。鉴于此情况,需要对长连接实施有效的管理,以确保客户的消息能够精准无误地推送至用户端。
目前,系统采用了 rabbitmq 的广播模式来解决相关问题。首先,每个 pod 自行维护其与用户端(手机号)的关系。接着,每个 pod 都会在 rabbitmq 中创建队列。当某个 pod 收到回调通知(即有消息到达)后,该 pod 会将指令发送至 rabbitmq 交换机上,随后交换机会向各个队列进行广播通知。各个 pod 收到消息后,会依据收件人的手机号自行检查此连接是否归属于自身。若是,则通过 websocket 将消息推送至用户端;若否,则不进行任何处理。
由于发版或者系统的扩容缩容,会引发 pod 的销毁与创建。因此,需要在 pod 创建时自动新建队列并绑定交换机,同时在 pod 销毁时自动销毁队列并解绑交换机。当前,通过使用注解声明的方式来解决这一问题,具体实现情况如下。基于此种方式,能够实现优雅的扩容缩容
public static final String EXCHANGE_YML_KEY = "${rabbitmq.exchange.forward}";public static final String QUEUE_KEY = "auto-declare-" + APP_NAME + "-#{T(java.util.UUID).randomUUID().toString()}";@RabbitListener(bindings = @QueueBinding( value = @Queue( name = QUEUE_KEY, durable = "true", exclusive = "false", autoDelete = "true", declare = "true" ), exchange = @Exchange( value = EXCHANGE_YML_KEY, type = ExchangeTypes.FANOUT, declare = "false" )))public void onMessage(Message mqMessage) { try { String messageStr = new String(mqMessage.getBody(), StandardCharsets.UTF_8); log.info("Send message: {} ", messageStr); } catch (Throwable t) { log.error("Send message error: ", t); }}
未来挑战
虽然 WhatsApp 为企业开放了 WhatsApp Business API ,企业在完成认证后能够获得官方背书。但是,为了有效防止对用户造成过度打扰,WABA 做出了严格限制,规定首次触达用户时必须且只能是模板消息。并且,这些模板内容需要经过 META 的审核管控。只有当用户收到模板消息后主动进行回复,双方之间才能展开自由对话。
正因如此,在 WABA 模板的设计、养号、触达的策略以及使用场景等课题方面,还需要结合具体的实际情况进行全面、深入且细致的考虑。比如,不同行业的特点和用户需求差异明显,模板设计要符合行业规范和用户习惯,巧妙设置引导话术刺激用户主动回复;养号阶段要注重号码质量提升;触达策略要精准把握时机和频率;使用场景也要根据产品或服务的特性来精心规划。
总结
WABA SCRM 系统与 WhatsApp Business API 深度融合,由业务系统精准管控联系用户名单,对用户名单及信息进行过滤及加工,能确保员工与客户之间通过 WhatsApp 进行顺畅、高效且精准的触达,为双方搭建起便捷、有效的沟通桥梁。