您当前的位置是:  首页 > 新闻 > 国内 >
 首页 > 新闻 > 国内 >

SIP讲座系列-关于音乐等待中的SDP变化

2017-11-28 16:25:18   作者: james.zhu    来源:Asterisk微信公众号   评论:0  点击:


  前面的讲座中我们谈到了SDP和SDP的修改的问题。在当前的企业通信中,我们会经常遇到一个功能叫语音等待功能,这个功能就涉及了SDP的修改问题。
  因此,在本章节我们会介绍一下音乐等待中的SDP修改过程,同时介绍以下各种INVITE概念和区别。
  1、大家都经常使用到SIP物理电话的Hold 键,这个功能键会触发一个事件让对端处于音乐等待状态。如果用户第一次按Hold键以后,双方的通话会被置于一个音乐等待的状态,语音流停止发送,对端可以听到一个音乐等待的提示音。一定时间后,再次按Hold键会重新创建一个session来进行进行双方的通话。双方之间的SDP消息会发生更新以支持启动或者重新启动新session的功能需求。
  以上图例说明了客户A和客户B之间的SDP交互消息情况。大家需要注意两次Hold按键以后的SDP的不同。
  在下面的内容中我们重点介绍启动Hold事件的流程和重新触发Hold事件的流程。
  2、在正常的环境中,客户A一直保持和客户B的通话,因为其他的原因,可能客户A会按Hold键触发一个SDP的修改事件,同时一个PBX会发送一个消息到客户B,客户B则返回一个消息,IPPBX会断开这个session,同时可以对客户B发送一个音乐等待。PBX使用这个语音等待功能对客户B播放音乐,具体音乐文件有PBX设置。
  在以上的举例中,我们可以看到。首先 客户A按了Hold键,然后触发了一个音乐等待的要求,SDP中的a为sendonly,PBX 会发送一个消息到客户B,客户在SDP中返回一个recvonly , PBX会停止双方的语音流,然后对客户B播放一个音乐等待文件,提示用户处于音乐等待时间。音乐等待的文件用户可以自己自定义,在PBX中获得支持。
  3、一段时间后,客户A按Hold键以后,重新触发一个事件,发送重新建立session的消息(a=sendrecv),PBX会重新发送一个消息到客户B,客户B重新发送消息,带了一个新的SDP消息a=sendrecv,然后重新创建一个新的session来继续进行通话流程。
  以上图例是结合置于音乐等待的状态来继续说明的。因为以前客户A触发了Hold语音等待,现在重新再次按Hold以后,SDP的a会更新到sendrecv, 同时通知PBX,PBX会通知客户B。客户B回复了一个SDP消息带了a=sendrecv的新的状态消息,PBX重新启动一个新的会话,双方通话重新开始。
  4、INVITE 可能是我们用户经常看到的一种消息内容,很多时候可能比较迷惑。这里的INVITE包括:原始的Original INVITE,Resent INVITE和reINVITE三种。
  Original INVITE 是用户发起的INVITE消息。
  Resent INVITE仍然是以前的INVITE,包含了以前的Call-ID和以前的CSeq(),通常是100 trying 还没有收到,然后发送到Proxy的INVITE。
  reINVITE 是用来修改目前存在session呼叫参数或等待处理的呼叫参数。它使用当前的Call-ID,因为这是一个新的request,所以使用一个新的CSeq id。
  在以上章节中我们主要介绍了MoH(音乐等待中的SDP状态修改),包括启动Hold,再次触发新的会话。在这些过程中,SDP的状态是完全不同的。另外,我们也简单介绍了几个INVITE的区别。希望通过本章节的介绍,大家对音乐等待中的SDP修改更新有更多的了解。当然,用户需要结合实际的环境做进一步的测试。例如,用户可以安装FreePBX,配合两台话机做一个类似的实验。
  关注公众号:asterisk-cn 获得更多有价值的行业技术分享,访问论坛:www.issabel.cn/forum 获得技术帮助。
【免责声明】本文仅代表作者本人观点,与CTI论坛无关。CTI论坛对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。

专题