sip 180 183区别:
180 不带sdp, 183带sdp信息;
如果A的SIP终端收到183,它就协商媒体,将B端发过来的Early Media在自己的扬声器里放出来;但如果收到的是180,没有SDP就没法协商媒体,因此,B就没法给A发Early Media了。怎么办,总不能让主叫用户干等着啊,所以,A的话机在这种情况下能自己产生一个回铃音,或任何用户在A话机上设置的音乐

首先,我们先看一种熟悉的情况。FreeSWITCH可以假装它就是B,这样,配置方法跟上面讲的基本一样,只是它在假装后还要假戏真做,要用bridge这个Application再去呼叫B,并把电话接通。

<action application="ring_ready"/><action application="sleep" data="2000"/><action application="answer"/><action application="playback" data="/tmp/hello.wav"/><action application="bridge" data="user/B"/>

所以在上面的配置中,至于是回180还是183,配置方式跟上面讲的一模一样,就没必要多说了。

其次,FreeSWITCH心情好,想听听B的意见。如果它即不执行ring_ready,也不执行answer,而是直接用bridge去呼叫B。

<action application="bridge" data="user/B"/>

这种情况其实也简单,那就是,如果B向FreeSWITCH回复180,FreeSWITCH就向A回180;如果B回183,FreeSWITCH就向A回183。这种情况其实就相当于FreeSWITCH不存在,所有消息都是透明的。(不过,要记住:FreeSWITCH是一个B2BUA,即它是一个中间人,它不会直接拿B回给它的180或183消息“转”给A,而是自己新产生了一个180或183消息回给A。当然,也许你不关心这个,但你说得越不清楚,我越累啊,要不然人家还会说我的回答不严谨呢。或者,万一我猜错的你问的意思呢?)

再次,FreeSWITCH跟B这两天不大对付,什么事情都拧把。B回180,FreeSWITCH就回183,B回183,FreeSWITCH就回180。

好吧,看起来是越来越复杂了。又是两种情况。

先看B回180的情况。FreeSWITCH要想给A回一个183,由于B的180中不带媒体,FreeSWITCH就要“造”一个媒体出来,因此,它想了这种一种办法,在bridge之前造一个媒体:

<action application="set" data="ringback=/tmp/ring.wav"/><action application="bridge" data="user/B"/>

由于在执行bridge之前还没有B,因此FreeSWITCH不知道什么时候B回180还是183。通过在bridge之前使用set设置一个变量(ringback),实际上相当于FreeSWITCH给bridge下了一个套,到了bridge阶段,不管你什么时候B回180,FreeSWITCH都会向A播放事先“造”好的回铃音ring.wav。当然,FreeSWITCH要向A发送媒体前要先用183建立媒体通道,这就完成了180到183的转换。

所以,这也是FreeSWITCH设计精巧之处——同是一个bridge,通过一个ringback变量改变了它的行为。

再看183变180的情况。

如果B向FreeSWITCH回了183,FreeSWITCH要向A回180,那就不能把媒体信息送给A。所以,实现也很简单,还是一个简单的bridge,只是,把B送来的Early Media忽略掉就行了:

<action application="ring_ready"/><action application="bridge" data="{ignore_early_media=true}user/B"/>

跟set不同。set是一个Application,它作用于当前的Channel,即A那一个Channel(那时候还没有B)。而{ignore_early_media=true}这种语法,在建立B端的Channel的同时,将ignore_early_media作用于B。再强调一次,FreeSWITCH是一个B2BUA,因此A跟B间的通话要产生两个Channel,即所谓的a-leg和b-leg。

在建立B通道的时候,ignore_early_media也是给bridge下了一个套。即不管什么时候B回了183,忽略它。由于我们选择了忽略,因此,为了让A仍能听到回铃音,我们用ring_ready在bridge前送一个180。严格来说,它不是183变180,因为FreeSWITCH以收到183前就已经送出了180,但是,如果你不趴在FreeSWITCH内部看,谁知道什么时候变得呢?

N种情况讲了N种了,永远都会有N+1。既然FreeSWITCH位于中间,那它能不能把B发过来的广告(彩铃)换成它自己的广告呢?能是能,但我不教你怎么做。不过,不幸的是,如果你不是特别笨的话,我上面已经教会你了……

sip 180 183区别相关推荐

  1. IPPBX,IAD,AG,SIP,GW的区别

    IP PBX:IP PBX通过软交换技术,满足通信业务和企业内部VoIP通信需求. IAD:IAD属于小型语音网关,外形以盒式设备为主,容量在1-32口之间.能够接入普通模拟电话及数据设备(通过LAN ...

  2. IMS 会话过程 响应180还是183?

    在FreeSWITCH中怎么配置回180还是183,是一个经常被问到的问题.然而,答案却远没有你想象中的那么简单. 要明白怎么配置,首先你需要明白180和183的来龙去脉.另外,你自己还要知道你要干什 ...

  3. SIP协议详解(中文)-6

    由于MIME包体是在"inner"消息中的,实现中通常会加密MIME指定的头域,包括:MIME-Version,Content-Type,Content-Length, Conte ...

  4. RFC3261(SIP协议)

    1.SIP协议介绍 Internet的许多应用都需要建立和管理一个会话,会话在这里的含义是在参与者之间的数据的交换.由于考虑到参与者的实际情况,这些应用的实现往往是很复杂的:参与者可能是在代理间移动, ...

  5. (转)sip协议中文收藏

    sip协议中文(1)收藏 1.SIP协议介绍 Internet的许多应用都需要建立和管理一个会话,会话在这里的含义是在参与者之间的数据的交换.由于考虑到参与者的实际情况,这些应用的实现往往是很复杂的: ...

  6. RFC3261 SIP 会话初始化 规范 中文版

    1.SIP协议介绍 Internet的许多应用都需要建立和管理一个会话,会话在这里的含义是在参与者之 间的数据的交换.由于考虑到参与者的实际情况,这些应用的实现往往是很复杂的:参与者可能是在代理间移动 ...

  7. sip协议中文(3)

    选择最佳的应答 对于一个有状态的proxy来说,如果根据上边的步骤,没有任何终结应答被立刻发送,并且在客户端事务中的所有的客户端服务都已经终结,那么这个proxy必须发送一个终结应答到一个应答上下文的 ...

  8. 基于p2p的sip电话系统

    摘要 p2p系统天生拥有高扩展性.健壮性和高容错性的特点,这些特点得益于系统没有中央服务器并且网络是自己管理的这种结构.本系统实现了在 p2p系统中较长的延迟的代价下定位感兴趣的资源.internet ...

  9. VoLTE题库(含解析)-中高级必看

    VOLTE题库 一.VOLTE 概述 1. LTE 语音业务最终解决方案(B). A.CSFB B.VOLTE C.SvLTE 3.VoLTE 主要是引入(C)来提供高质量的(语音)分组域承载. A. ...

最新文章

  1. HDU1212(大数取模-秦九昭算法)
  2. ssh_config sshd_config 详解
  3. .so 依赖目录 cmake_CMake 的研究与学习笔记
  4. P1941-飞扬的小鸟【dp】
  5. jq中查找上级_【节能学院】电能管理系统在福州三岐小学项目中的设计及应用...
  6. 中小微企业一大重要数据解析|司法数据指标与报告维度
  7. Android 中文字体的设置方法和使用技巧
  8. redis、mysql、和php原生array数组效率对比
  9. 顺流交易会计处理的通俗理解
  10. Linux—RAID磁盘阵列与阵列卡
  11. PS-第六天-色彩调整
  12. 网页导出pdf不完整_偶尔偷个懒吧:3种pdf文献全文一键翻译的方法
  13. 浅析游戏中的打击感如何实现
  14. 初识ArrayList集合【小白学Java-学习笔记02】
  15. 精神病学专科哪家强?且看最新医院排行榜
  16. matlab excel 新建sheet,matlab excel的sheet增加,重命名操作
  17. 固态硬盘寿命不长?!快来看看12个固态硬盘优化技巧
  18. 股市投资必修课二十八--前瞻性地把握未来
  19. 解密车厂押注车载人机交互背后:更丰富的形式,更激烈的战场
  20. CVE-2022-1388 F5 BIG-IP权限绕过命令执行漏洞复现

热门文章

  1. ubuntu 16.04 chrome flash player 插件更新(adobe flash player 不是最新版本)
  2. word2计算机fx公式,Word的fx公式怎么使用说明
  3. 前端身份证号码校验js代码
  4. linux怎么打开pak文件怎么打开,如何在 Linux 上安装并启用 Flatpak 支持?
  5. C/C++黑魔法-没有临时值的交换
  6. 安卓开发那些事(三)之淘宝联盟接入
  7. java课程设计qq_Java课程设计(qq聊天程序)
  8. 华为电脑HUAWEI MateBook X 2021如何进BIOS设置
  9. 安盎顺汲称叫蒲惺勤狙陡邮可王大胖,从小就和他这个堂弟要好,听了此事,当然不肯罢休,找上
  10. 能用好小人的老板才算优秀