当前位置: 首页 > news >正文

FreeSWITCH 的 effective_caller_id_name 和 effective_caller_id_number

在 FreeSWITCH 中,effective_caller_id_nameeffective_caller_id_number是两个非常重要的通道变量(Channel Variables)

它们的核心作用是:控制在呼叫去电(Outbound Call)时,被叫方(接收者)手机或话机屏幕上显示的“来电显示”信息。

以下是详细的解释和用法:

1. 核心作用

当你通过 FreeSWITCH 进行bridge(桥接)或者originate(发起呼叫)时,FreeSWITCH 需要决定告诉对方“谁在打这个电话”。

  • effective_caller_id_name:设置显示的名称(如:Company Support)。
  • effective_caller_id_number:设置显示的号码(如:01012345678)。

2. 为什么要用 “Effective”(有效的)?

在 FreeSWITCH 中,有两种类型的 Caller ID 变量,它们有微妙的区别:

  • caller_id_number:通常代表真实的源号码(即拨号者原本的号码)。
  • effective_caller_id_number:代表对外呈现的号码

关键逻辑:
当 FreeSWITCH 执行bridge操作发起呼出请求时,它会优先查找effective_caller_id_xxx。如果设置了这两个变量,FreeSWITCH 就会在 SIP 的From头部或者Remote-Party-ID头部使用这些值。如果没有设置,它才会退而求其次使用caller_id_xxx

3. 常见使用场景

场景 A:企业总线号码代发

公司内部员工的内部短号是1001,但他拨打外部客户手机时,不希望显示1001(因为客户回拨不进来),而是希望显示公司的统一对外大号010-88888888

  • 操作:在拨号计划(Dialplan)中,将effective_caller_id_number设置为01088888888
场景 B:呼叫转移(Call Forwarding)

A 打给 B,B 设置了呼叫转移到 C。

  • 如果 B 转发给 C 时,希望 C 看到是 A 在打过来,B 就会把effective_caller_id_number设置成 A 的号码。
  • 如果 B 希望 C 看到是 B 转过来的,就设置成 B 的号码。

4. 如何在 Dialplan 中设置

通常在conf/dialplan/default.xml中使用:

<extensionname="outbound_call"><conditionfield="destination_number"expression="^(\d+)$"><!-- 设置显示的名称 --><actionapplication="set"data="effective_caller_id_name=My Company"/><!-- 设置显示的号码 --><actionapplication="set"data="effective_caller_id_number=01012345678"/><!-- 执行外呼 --><actionapplication="bridge"data="sofia/gateway/my_provider/$1"/></condition></extension>

5. 注意事项

  1. 运营商限制:尽管你可以在 FreeSWITCH 里随便设置effective_caller_id_number,但当你通过中继线(Gateway/Trunk)打到公网(移动/联通/电信)时,运营商通常会强制修改或丢弃你自定义的号码,以防止诈骗电话。你只能设置成该中继线合法绑定的号码。
  2. 变量继承:这两个变量通常设置在“A腿”(主叫通道)上,当执行bridge时,它们会被传递并应用到“B腿”(被叫通道)的 SIP 消息中。
  3. origination_caller_id_number的区别:
    • 如果你是使用originate命令(通过 API 或脚本发起呼叫),通常使用origination_caller_id_number
    • 如果你是在 Dialplan 中处理现有的通话,通常使用effective_caller_id_number

总结

  • effective_caller_id_name: 你想让对方看到的名字
  • effective_caller_id_number: 你想让对方看到的来电号码
http://www.jsqmd.com/news/209589/

相关文章:

  • 超详细版JLink仿真器使用教程:适用于DCS系统下载程序
  • 部署模块一键发布:将模型封装为RESTful API服务
  • 非洲地区数字治理:Qwen3Guard-Gen-8B支持斯瓦希里语内容审核
  • ms-swift支持合同审查与条款生成模型
  • 万物识别开发宝典:从环境搭建到模型部署
  • 企业DevOps必看,VSCode集成Entra ID的7大核心优势与实施要点
  • 基于Android开发的健康饮食推荐系统
  • 百考通AI:您的智能学术护航者,让论文降重与AIGC优化一步到位
  • 基于ms-swift的新闻摘要生成系统训练与部署全记录
  • 基于Android智能旅游管家的设计与实现
  • java springboot基于微信小程序的社区服务系统社区设施维修缴费(源码+文档+运行视频+讲解视频)
  • VSCode智能体测试能力全面评测:谁才是真正的AI编码助手王者?
  • ms-swift支持PyTorch与LMDeploy双引擎推理加速
  • 计算机毕业设计|基于springboot + vue小区居民物业管理系统(源码+数据库+文档)
  • 如何通过ms-swift实现T4/V100老旧显卡再利用?
  • 小区居民物业管理系统
  • 深度伪造检测模型开发新方向
  • VSCode子智能体测试能力曝光,AI驱动测试时代已来?
  • 统计重思2024:贝叶斯数据分析终极指南
  • 错过将影响开发效率!,VSCode 1.107必须启用的4项部署优化配置
  • 大模型时代的内容防线:Qwen3Guard-Gen-8B安全推理实战
  • Docker镜像源配置繁琐?ms-swift一键容器化部署简化流程
  • 计算机毕业设计|基于springboot + vue旅游网系统(源码+数据库+文档)
  • 多语言文本生成:ms-swift支持全球化业务
  • 【VSCode行内聊天性能优化】:揭秘影响开发效率的5大瓶颈及解决方案
  • Qwen3Guard-Gen-8B与Kubernetes集群集成实现弹性伸缩
  • VSCode Multi-root Workspace管理多个Qwen3Guard-Gen-8B项目
  • 旅游推荐引擎内容治理:Qwen3Guard-Gen-8B屏蔽非法目的地
  • 教育行业如何借助ms-swift打造个性化AI辅导系统
  • DeFi借贷协议说明:Qwen3Guard-Gen-8B警告高风险投资表述