销售邦电话系统思维导图(文字版)

可渲染思维导图

销售邦电话系统
基础配置
接口地址、appId、密钥
通话状态回调
AI意向回调
开通权限
城市开启:纯城市记录或有效人员
人员在职、状态开启、绑定手机号
可见业务数据即可拨打
Redis权限缓存5分钟
后台管理
e3v2k后台配置
销售邦管理快捷入口
添加、编辑、删除绑定人员
仅管理已开启区域
业务系统
电话本:多号码、电话标记
意向客户:联系人、列表、详情
高端意向:复用意向逻辑
记账户:联系电话、负责人、法人
拨号盘:统一算临时通话
Android App
默认手机拨打
个人设置切换拨打模式
销售邦模式不执行本机拨号和录音
失败不自动回退手机拨打
电话本、临时、意向、记账户及详情
发起拨号
前端选择最终号码
后端校验权限、可见范围、号码归属
生成销售邦鉴权
调用clickToDial并取得callId
写入crm_call_to_log临时记录
回调处理
中间状态只写日志
只处理有效Disconnected
录音地址不为空
通话时长大于0
Redis按callId原子去重
保留24小时
异常释放并允许重试
正式通话
电话本、意向、临时写crm_ryzn_calls
记账户写crm_booking_callback_calls
服务商类型为5
保存时长、原因、录音地址
临时记录标记完成
跟进记录
意向跟进来源1
记账户跟进来源2
录音关联crm_files_storage
写TrackRecord客户动态
40秒过程量
员工和号码每天只计一次
销售增加通话量
会计增加新资源通话量
记账户会计增加回访量
电话标记与拨打时间
仅电话本允许修改标记
批量获取上次拨打时间
每个号码缓存60秒
请求失败静默忽略
日志排查
回调日志保留30天
AI回调写文本日志
检查临时记录和正式记录
检查跟进记录和过程量

拨打流程图

Android App
业务系统
电话本
意向或高端意向
记账户
拨号盘
用户点击拨打
当前入口
是否选择销售邦模式
执行原本机拨号、监听和录音上传
本机拨打流程结束
选择并校验最终被叫号码
是否具备销售邦权限
不显示电话按钮和拨号盘
调用对应业务拨号接口
业务类型
call_lead
call_customer
call_bookkeeping
call_temporary
后端校验登录身份和销售邦人员权限
关联业务的数据是否可见,临时通话跳过
返回错误信息,不发起拨号
号码是否属于关联业务,临时通话跳过
服务层生成时间戳、seqNo和digest
调用销售邦clickToDial
是否返回callId
写入crm_call_to_log临时记录
提示已通过第三方拨打,请等待接通
员工手机响铃
员工接听后销售邦呼叫客户
等待销售邦状态回调

回调入库流程图

回调入库流程图

记账户
其他业务
销售
会计新资源
记账户会计
记账户非会计
数据库异常
数据库异常
收到销售邦回调
是否包含callId
返回400并记录日志
回调状态是否为Disconnected
记录中间状态日志并返回OK
recordingId是否存在
不写正式记录,记录原因并返回OK
callDuration是否大于0
不写正式记录,记录原因并返回OK
Redis按callId执行原子add
24小时内是否已经处理
忽略重复推送并返回OK
是否找到未完成临时记录
释放Redis键,允许第三方重试
临时记录业务类型
写crm_booking_callback_calls
写crm_ryzn_calls,服务商类型5
写记账户跟进,来源2
是否为意向或高端意向
写意向客户跟进,来源1
通话时长是否达到40秒
关联远程录音到crm_files_storage
写TrackRecord客户动态
更新临时记录status为1
员工和号码当天一次去重
业务及岗位类型
增加销售通话过程量
增加会计新资源通话量
增加记账户回访量
记录成功日志并返回OK
回滚事务并释放Redis键
返回异常,等待销售邦重试

详细文字层级

  • 销售邦电话系统

    • 一、基础配置

      • 接口配置
        • SALESBANG_BASE_URL:销售邦接口基础地址
        • SALESBANG_APP_ID:销售邦应用 ID
        • SALESBANG_SECRET_KEY:接口签名密钥
        • SALESBANG_TIMEOUT:接口请求超时时间
      • 回调配置
        • 通话状态回调:/api/dingtalk/callbak_xsb
        • AI 意向回调:仅写入文本日志,暂不处理业务
      • 核心代码
        • 控制器:app/Http/Controllers/Dingtalk/SalesBangCallController.php
        • 服务层:app/Services/SalesBangCallService.php
        • 权限模型:app/Models/Crm/SalesBangCallPermission.php
    • 二、开通与权限

      • 城市开通
        • 城市存在纯城市开启记录
          • dd_user_id=''
          • caller_phone='1'
          • status=1
        • 或城市至少存在一名状态开启且在职的绑定人员
      • 人员开通
        • 人员绑定记录状态为开启
        • 人员处于在职状态
        • 配置有效的 11 位拨号手机号
        • 同一人员全局只能绑定一条记录
      • 拨打范围
        • 人员开通后,其能看到的业务数据即可拨打
        • 不再按客户所属城市二次限制
        • 后端拨号接口仍会再次校验人员权限和数据可见权限
      • Redis 权限缓存
        • 人员和城市权限缓存 5 分钟
        • 权限记录保存或删除后更新缓存版本
        • 旧版本缓存自动失效
    • 三、后台及业务系统管理

      • Dcat Admin 后台
        • 前缀:e3v2k
        • 维护开启区域、绑定人员、拨号手机号和状态
        • 支持只开启区域、不绑定人员
      • 业务系统快捷入口
        • 入口名称:销售邦管理
        • 可见角色
          • 负责人 manager
          • 区域经理 area_manager
          • 区域人力 area_personnel
          • 管理员 admin
        • 可执行操作
          • 选择负责区域
          • 查看已绑定人员
          • 添加人员
          • 修改手机号和状态
          • 删除人员
        • 限制
          • 只能管理后台已开启区域
          • 人员必须属于所选区域且在职
          • 区域最后一名绑定人员不能从快捷入口删除
    • 四、业务系统拨打入口

      • 电话本
        • 号码来源
          • 主手机号 mobile
          • 其他电话 other_phones
        • 单号码直接确认拨打
        • 多号码弹窗选择拨打
        • 唯一支持电话标记的模块
        • 列表直接使用 crm_lead.last_call_time
      • 意向客户与高端意向客户
        • 共用销售邦拨打逻辑
        • 号码来源
          • 默认联系电话 mobile
          • 主联系人 user_name + user_mobile
          • 扩展联系人 con_contacts + con_phone
        • 按号码去重
        • 号码与联系人相同时保留联系人姓名
        • 默认号码不是联系人号码时显示“联系电话”
        • 列表和详情均可拨打
      • 记账户
        • 号码来源
          • 联系电话 customer_phone
          • 实际负责人手机号 actual_person_phone
          • 法人电话 faren_phone
        • 列表和详情均可拨打
        • 不限制只有会计岗位才能拨打
      • 拨号盘
        • 电话本、意向客户、高端意向客户、记账户均提供
        • 拨号盘拨打统一算作临时通话
        • 不自动关联具体客户
    • 五、Android App 拨打入口

      • 拨打模式
        • 默认模式:手机拨打
        • 已开通销售邦的人员可在个人设置切换
        • 模式保存到 Storage
          • salesbang_call_enabled
          • salesbang_call_mode
          • salesbang_call_user_id
        • 退出登录后清除模式,下次登录恢复手机拨打
      • 已接入页面
        • 电话本:pages/clues/list.vue
        • 临时通话:pages/client/calltopnhoe.vue
        • 意向客户:pages/client/index.vue
        • 高端意向客户:pages/client/gaoduan_index.vue
        • 意向/高端意向详情:pages/client/customerDetails.vue
        • 记账户列表:pages/bka/list.vue
        • 记账户详情:pages/bka/bkadetail.vue
      • 分流规则
        • 手机模式
          • 继续执行原本机拨号
          • 保留通话监听、录音和上传逻辑
        • 销售邦模式
          • 号码校验后调用销售邦接口
          • 不执行本机拨号和本地录音逻辑
          • 请求失败不自动回退手机拨打,防止重复呼叫
    • 六、发起拨号流程

      • 第一步:前端选择最终被叫号码
      • 第二步:调用后端对应接口
        • 电话本:call_lead
        • 意向/高端意向:call_customer
        • 记账户:call_bookkeeping
        • 临时通话:call_temporary
      • 第三步:后端校验
        • 当前登录身份
        • 销售邦人员权限
        • 防止短时间重复请求
        • 业务数据可见权限
        • 所选号码属于当前业务数据
      • 第四步:服务层生成鉴权参数
        • appId
        • 毫秒时间戳
        • 随机 seqNo
        • digest
      • 第五步:调用销售邦 clickToDial
        • 销售邦先呼叫员工绑定手机号
        • 员工接听后再呼叫客户
        • 返回唯一 callId
      • 第六步:写临时通话记录
        • 表:crm_call_to_log
        • type='销售邦'
        • sesssion_id=callId
        • tem_data 保存业务类型和正式入库所需字段
    • 七、销售邦回调处理

      • 中间状态
        • CallingCaller
        • CallingCallee
        • Connected
        • 只记录回调日志,不正式入库
      • 最终状态
        • 仅处理 Disconnected
        • 必须存在录音地址 recordingId
        • 必须满足 callDuration > 0
      • Redis 重复推送保护
        • 仅对有效最终回调去重
        • Redis 键:salesbang:callback:disconnected:{callId}
        • 使用原子 add 抢占处理资格
        • 有效期:24 小时
        • 重复推送直接返回 OK
        • 临时记录不存在时释放去重键
        • 数据库处理异常时释放去重键
        • 释放后允许销售邦继续重试,避免漏单
    • 八、正式通话记录

      • 电话本、意向客户、高端意向客户、临时通话
        • 正式表:crm_ryzn_calls
        • service_providers_type=5
        • session_id=callId
        • 保存主叫、被叫、时长、挂断原因和远程录音地址
      • 记账户
        • 正式表:crm_booking_callback_calls
        • service_providers_type=5
        • session_id=callId
        • call_duration 保存毫秒
        • duration 保存秒
        • 同步更新 crm_service_bookkeeping.last_call_time
      • 临时记录完成标记
        • 正式入库成功后更新 crm_call_to_log.status=1
    • 九、跟进记录与录音关联

      • 意向客户和高端意向客户
        • 新增 crm_customer_follow
        • follow_source=1
      • 记账户
        • 新增 crm_customer_follow
        • follow_source=2
        • 关联 bka_idbka_group_name
      • 录音
        • 远程录音地址写入 crm_files_storage
        • 不下载第三方录音文件
      • 客户动态
        • 通过 TrackRecord 写入电话跟进动态
    • 十、40秒过程量

      • 统一条件
        • 有效录音回调
        • 通话时长达到 40 秒
        • 员工与号码当天只计一次
        • 使用 BanzhuFun::checkUserPhoneDailyAdd 去重
      • 电话本和临时通话
        • 会计岗位增加 crm_accounting_amount_day.tonghua_new_source
        • 其他岗位增加 crm_sale_info_day.tonghua
      • 记账户
        • 仅会计岗位增加 crm_accounting_amount_day.tonghua_follow
        • 非会计岗位允许拨打,但不增加记账户回访过程量
    • 十一、电话标记与上次拨打时间

      • 电话标记
        • 仅电话本允许查看和修改
        • 其他业务模块不展示电话标记操作
      • 上次拨打时间
        • 多号码一次批量请求
        • 每个号码分别使用 Redis 缓存
        • 缓存时间:60 秒
        • 电话标记服务请求失败时静默忽略
        • 没有时间时显示“无”
    • 十二、日志与排查

      • 通话状态回调日志
        • 通道:salesbang_callback
        • 目录:storage/logs/salesbang/
        • 按天生成
        • 保留 30 天
      • AI 意向回调日志
        • 目录:storage/logs/salesbang/ai-intent/
        • 当前只保存原始回调内容
      • 常见排查顺序
        • 检查城市是否开启
        • 检查人员是否在职且绑定手机号
        • 检查 App 或业务系统是否处于销售邦模式
        • 检查销售邦接口是否返回 callId
        • 检查 crm_call_to_log 是否生成临时记录
        • 检查回调日志是否收到有效 Disconnected
        • 检查录音地址和通话时长是否有效
        • 检查 Redis 是否判定为重复回调
        • 检查正式通话表、跟进表和过程量表是否写入
作者:wangxuqian  创建时间:2026-08-14 14:15
最后编辑:wangxuqian  更新时间:2026-08-14 16:46