技术分享

别再手动拨号了!我如何在网页CRM里实现「一键呼叫+自动录音」闭环?

作者头像 人称外号大脸猫
22 阅读
别再手动拨号了!我如何在网页CRM里实现「一键呼叫+自动录音」闭环?

在开发RM系统时,我一直想解决一个痛点:如何让销售在网页上点击一下,就能直接给客户打电话,并且自动录音保存?

大家都知道,浏览器不能直接拨打电话。常见的解决方案要么需要买昂贵的硬件,要么需要开发复杂的APP。这些方案要么成本高,要么体验差。

经过反复试验,我终于找到了一个几乎零成本、体验流畅的解决方案。今天就来分享这个实现思路,希望对你有启发。

一、 问题核心:如何连接网页与电话?

理想中的场景:

  • 销售在电脑上看客户资料
  • 点击“拨打”按钮,直接通话
  • 通话自动录音,结束后录音自动保存到客户档案

现实挑战:

  • 🚫 浏览器无法直接拨号
  • 🚫 网页无法控制手机录音
  • 🚫 需要打通网页、手机、服务器之间的通信

二、 破解方案:用WebSocket搭建“空中桥梁”

我的解决方案是开发一个轻量级手机APP作为桥梁,连接网页与手机功能。整个架构如下:

  1. 网页端:CRM系统(Laravel + Inertia.js + Vue 3)
  2. 手机端:轻量级Android APP(负责拨号和录音)
  3. 连接层:WebSocket实时通信

三、 完整工作流程(就像发射指令)

第1步:建立连接 销售员打开手机APP → APP自动连接CRM服务器 → 告知服务器“我准备好了”

第2步:发起呼叫 销售在网页点击“拨打” → 网页通过WebSocket发送指令 → 服务器转发指令到对应手机

第3步:执行拨号 手机APP收到指令 → 自动拉起系统拨号界面 → 直接拨打客户电话

第4步:智能录音 通话开始 → APP自动开启录音 → 通话结束 → 录音文件自动命名(客户ID+时间戳)

第5步:自动归档 APP上传录音文件到服务器 → 自动创建客户跟进记录 → 关联录音文件

整个过程全自动,销售员只需点击一次,剩下的都由系统完成。

四、 技术实现关键点

1. 后端(Laravel)处理WebSocket消息

// 当收到拨号请求时
public function onMessage($connection, $data)
{
    if ($data['type'] === 'make_call') {
        // 找到目标用户的手机连接
        $targetConnection = $this->findConnection($data['user_id']);
        
        // 发送拨号指令
        $targetConnection->send(json_encode([
            'action' => 'call',
            'phone' => $data['phone_number'],
            'client_id' => $data['client_id']
        ]));
    }
}

2. 手机APP(Android)处理核心功能

// 接收拨号指令
fun handleMessage(message: String) {
    val data = JSON.parse(message)
    if (data["action"] == "call") {
        // 拨打电话
        val intent = Intent(Intent.ACTION_CALL).apply {
            data = Uri.parse("tel:${data["phone"]}")
        }
        startActivity(intent)
        
        // 开始录音
        startRecording(data["client_id"])
    }
}

// 通话结束后自动上传录音
fun uploadRecording(clientId: String, filePath: String) {
    // 将文件上传到CRM服务器
}

3. 网页前端(Vue 3)发送指令

<template>
  <button 
    @click="makeCall"
    :disabled="!isAppConnected">
    {{ isAppConnected ? '一键拨号' : '手机APP未连接' }}
  </button>
</template>

<script setup>
const makeCall = () => {
  websocket.send(JSON.stringify({
    type: 'make_call',
    phone_number: client.phone,
    client_id: client.id
  }))
}
</script>

五、 这个方案的优势

零硬件成本:不用买任何专业设备 ✅ 体验流畅:销售无需操作手机,专注沟通 ✅ 自动归档:录音自动保存,不怕遗漏 ✅ 易于部署:只需安装一个APP即可

六、 实际应用效果

上线后,销售团队的反馈很好:

  • 每天拨打客户数提升约40%
  • 所有通话都有录音记录,方便复盘培训
  • 新员工也能快速规范跟进客户

最重要的是,这个方案几乎没花什么成本,就用现有技术实现了高端CRM才有的功能。

七、 注意事项

  1. Android权限:需要用户授权电话和录音权限
  2. APP保活:需要优化后台运行,防止被系统清理
  3. 网络稳定性:依赖WebSocket长连接,需要处理断线重连

这个方案完美地解决了网页与电话之间的连接问题,用很低成本实现了自动化拨号录音功能。如果你也在开发CRM系统,不妨试试这个方案。

大家有什么问题或更好的想法?欢迎在评论区交流!