背景

在 2023 年的统计数据中,WhatsApp 成为了印尼最常用的社交媒体,拥有高达 2.2 亿的用户量,占据印尼互联网人群的 90%之多。

WhatsApp 开发的 WhatsApp Business API 为企业开辟了一条与客户进行大规模、高效且合规沟通的崭新途径。它使得企业能够借助自动化和集成的模式,发送通知、营销信息以及客户支持回复等各类内容。通过使用 WhatsApp Business API,企业能够在引流、服务、促活以及客户管理等诸多方面充分发挥积极作用。

目前,在印尼业务中虽然存在短信、电话、邮箱、推送等多种触达方式,但在成本和触达率方面均存在差异。鉴于 WhatsApp 作为印尼最为常用的社交媒体,业务方面有着强烈的诉求,期望借助 WhatsApp 来触达客户。正因如此,WABA SCRM 系统应运而生,从而解决业务上的痛点。

能力模块

Agent模块

Agent 代表着此系统的用户,即能够使用 INBOX 与客户进行聊天的用户。在该模块当中,能够创建用户、分配角色权限,还能够对用户状态予以修改等。

基于WhatsApp打造高效的CRM系统_API

Team模块

在该模块中,能够创建团队,并且可以对团队人员进行修改等操作。

基于WhatsApp打造高效的CRM系统_Business_02

Contact模块

联系人,多指客户信息,通过外部API对接或者文件导入的方式,给经办分配上不同客户,以实现聊天

基于WhatsApp打造高效的CRM系统_Business_03

Sender模块

企业发送号码,由业务采购手机号码,绑定在企业号上。在INBOX上,经办使用SENDER与客户聊天。该模块可以进行号码分配,包括主号、副号设定。

基于WhatsApp打造高效的CRM系统_App_04

角色权限模块

该模块支持创建系统角色,并支持对角色进行权限配置

基于WhatsApp打造高效的CRM系统_API_05

inbox模块

聊天信箱,系统核心能力,用户可以使用INBOX与客户在线聊天

基于WhatsApp打造高效的CRM系统_App_06

系统架构

scrm系统由backend,ws,backduser,waba四个服务组成。

系统

职责

scrm-back

后台服务,负责聚合业务逻辑,提供后台操作界面及聊天界面等

scrm-ws

长连接服务,使用websocket保持聊天会话连接

scrm-backuser

负责用户登录注册,角色权限配置

scrm-waba

实现系统核心功能,包括聊天、sender分配、联系人管理、案件出入池等

基于WhatsApp打造高效的CRM系统_API_07

基于WhatsApp打造高效的CRM系统_API_08

长连接通信

当用户打开聊天界面时,用户端会与后台服务建立一个长连接。多个用户端将会与后台服务的多个 pod 形成 n-n 的连接关系,如下图所示。鉴于此情况,需要对长连接实施有效的管理,以确保客户的消息能够精准无误地推送至用户端。

基于WhatsApp打造高效的CRM系统_API_09

目前,系统采用了 rabbitmq 的广播模式来解决相关问题。首先,每个 pod 自行维护其与用户端(手机号)的关系。接着,每个 pod 都会在 rabbitmq 中创建队列。当某个 pod 收到回调通知(即有消息到达)后,该 pod 会将指令发送至 rabbitmq 交换机上,随后交换机会向各个队列进行广播通知。各个 pod 收到消息后,会依据收件人的手机号自行检查此连接是否归属于自身。若是,则通过 websocket 将消息推送至用户端;若否,则不进行任何处理。

基于WhatsApp打造高效的CRM系统_App_10

由于发版或者系统的扩容缩容,会引发 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打造高效的CRM系统_API_11

未来挑战

虽然 WhatsApp 为企业开放了 WhatsApp Business API ,企业在完成认证后能够获得官方背书。但是,为了有效防止对用户造成过度打扰,WABA 做出了严格限制,规定首次触达用户时必须且只能是模板消息。并且,这些模板内容需要经过 META 的审核管控。只有当用户收到模板消息后主动进行回复,双方之间才能展开自由对话。

正因如此,在 WABA 模板的设计、养号、触达的策略以及使用场景等课题方面,还需要结合具体的实际情况进行全面、深入且细致的考虑。比如,不同行业的特点和用户需求差异明显,模板设计要符合行业规范和用户习惯,巧妙设置引导话术刺激用户主动回复;养号阶段要注重号码质量提升;触达策略要精准把握时机和频率;使用场景也要根据产品或服务的特性来精心规划。

总结

WABA SCRM 系统与 WhatsApp Business API 深度融合,由业务系统精准管控联系用户名单,对用户名单及信息进行过滤及加工,能确保员工与客户之间通过 WhatsApp 进行顺畅、高效且精准的触达,为双方搭建起便捷、有效的沟通桥梁。