代码之家  ›  专栏  ›  技术社区  ›  TacB0sS

在SIP UAC上获取振铃响应,而不从其他UAC发送

  •  2
  • TacB0sS  · 技术社区  · 15 年前

    issue 我曾经通过请一个朋友帮我从一台远程电脑,我可以连接电脑之间,但这里的事情,根据所有的 examples

    传出请求5:

    INVITE sip:320@hostName.hn SIP/2.0
    Contact: "Client 310" <sip:310@hostName.hn>
    From: "Client 310" <sip:310@hostName.hn>
    Max-Forwards: 32
    CSeq: 2 INVITE
    Call-ID: f8d171d3278788df9e03eb9cf3acba70@xxx.xxx.x.xxx
    Allow: INVITE,CANCEL,ACK,BYE,OPTIONS
    Content-Type: application/sdp
    Proxy-Authorization: Digest username="310",nonce="012afffb",realm="asterisk",uri="sip:310@hostName.hn",algorithm=MD5,response="d19ca5b98450b4be7bd4045edb8a3a2f"
    Via: SIP/2.0/UDP hostName.hn:5060
    To: "Client 320" <sip:320@hostName.hn>;tag=as5a8fa200
    Content-Length: 257
    
    v=0
    o=310 7108915969559970847 7108915969559970847 IN IP4 xxx.xxx.x.xxx
    s=-
    i=Nu-Art Software - TacB0sS VoIP information
    c=IN IP4 xxx.xxx.x.xxx
    m=audio 3312 RTP/AVP 0 8 101
    a=rtpmap:0 PCMU/8000
    a=rtpmap:8 PCMA/8000
    a=rtpmap:101 telephone-event/8000
    

    传入响应6:

    SIP/2.0 100 Trying
    Via: SIP/2.0/UDP hostName.hn:5060;branch=f8d171d3278788df9e03eb9cf3acba70-xxx.xxx.x.xxx-2-invite-hostName.hn-5060333732;received=79.181.6.233
    From: "Client 310" <sip:310@hostName.hn>
    To: "Client 320" <sip:320@hostName.hn>;tag=as5a8fa200
    Call-ID: f8d171d3278788df9e03eb9cf3acba70@xxx.xxx.x.xxx
    CSeq: 2 INVITE
    User-Agent: Freeswitch 1.2.3
    Allow: INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,SUBSCRIBE,NOTIFY,INFO
    Supported: replaces
    Contact: <sip:320@yy.yy.yy.yy>
    Content-Length: 0
    

    SIP/2.0 180 Ringing
    Via: SIP/2.0/UDP hostName.hn:5060;branch=f8d171d3278788df9e03eb9cf3acba70-xxx.xxx.x.xxx-2-invite-hostName.hn-5060333732;received=79.181.6.233
    From: "Client 310" <sip:310@hostName.hn>
    To: "Client 320" <sip:320@hostName.hn>;tag=as5a8fa200
    Call-ID: f8d171d3278788df9e03eb9cf3acba70@xxx.xxx.x.xxx
    CSeq: 2 INVITE
    User-Agent: Freeswitch 1.2.3
    Allow: INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,SUBSCRIBE,NOTIFY,INFO
    Supported: replaces
    Contact: <sip:320@yy.yy.yy.yy>
    Content-Length: 0
    

    呼叫:320@hostName.hn 正在响

    传入响应8:

    SIP/2.0 183 Session Progress
    Via: SIP/2.0/UDP hostName.hn:5060;branch=f8d171d3278788df9e03eb9cf3acba70-xxx.xxx.x.xxx-2-invite-hostName.hn-5060333732;received=79.181.6.233
    From: "Client 310" <sip:310@hostName.hn>
    To: "Client 320" <sip:320@hostName.hn>;tag=as5a8fa200
    Call-ID: f8d171d3278788df9e03eb9cf3acba70@xxx.xxx.x.xxx
    CSeq: 2 INVITE
    User-Agent: Freeswitch 1.2.3
    Allow: INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,SUBSCRIBE,NOTIFY,INFO
    Supported: replaces
    Contact: <sip:320@yy.yy.yy.yy>
    Content-Type: application/sdp
    Content-Length: 264
    
    v=0
    o=root 27669 27669 IN IP4 yy.yy.yy.yy
    s=session
    c=IN IP4 yy.yy.yy.yy
    t=0 0
    m=audio 10914 RTP/AVP 0 8 101
    a=rtpmap:0 PCMU/8000
    a=rtpmap:8 PCMA/8000
    a=rtpmap:101 telephone-event/8000
    a=fmtp:101 0-16
    a=silenceSupp:off - - - -
    a=ptime:20
    a=sendrecv
    

    传入响应9:

    SIP/2.0 503 Service Unavailable
    Via: SIP/2.0/UDP hostName.hn:5060;branch=f8d171d3278788df9e03eb9cf3acba70-xxx.xxx.x.xxx-2-invite-hostName.hn-5060333732;received=79.181.6.233
    From: "Client 310" <sip:310@hostName.hn>
    To: "Client 320" <sip:320@hostName.hn>;tag=as5a8fa200
    Call-ID: f8d171d3278788df9e03eb9cf3acba70@xxx.xxx.x.xxx
    CSeq: 2 INVITE
    User-Agent: Freeswitch 1.2.3
    Allow: INVITE,ACK,CANCEL,OPTIONS,BYE,REFER,SUBSCRIBE,NOTIFY,INFO
    Supported: replaces
    Content-Length: 0
    

    谢谢,

    亚当。

    如果你注意到我收到回复的时间:

    传入响应7: 1275879030656 响铃

    传入响应8: 1275879038734 会话进度

    传入响应9: 服务不可用

    我不明白这里的逻辑,从第一次响铃到会话进程我有8秒,但是从 服务不可用 我有47毫秒?

    这有什么意义?50毫秒做什么?分析响应的时间+打开RTP会话的时间+构造响应的时间+构造SDP的时间+服务器接收消息所需的时间-503消息到达我的UAC所需的时间,这不是很接近吗?我应该在什么时候响应服务器?

    再次感谢你的帮助。

    1 回复  |  直到 9 年前
        1
  •  3
  •   sipsorcery    15 年前

    因为您调用的FreeSwitch服务器是 B2BUA 并且必须配置为独立于转发的呼叫分支生成回叫。如果您呼叫的服务器是没有B2BUA功能的SIP代理,那么在远端的SIP设备响应之前,您将不会收到任何响铃或其他响应。

    回答7和8将导致您的软电话响。对于响应7180铃声,由您的软电话生成铃声。对于响应8183会话进度与RTP,您的软电话将收到一个进度指示,从FreeSwitch服务器,它应该呈现。

    更新:

    如果您直接与UAS通信,则不太可能得到相同的响应模式。

    在通话结束后,你作为UAC唯一需要做的就是确认最后的回应,在本例中,503。您的SIP堆栈确实需要对180和183响应进行处理,以让用户知道发生了什么,但您不需要对它们进行响应,因为它们是所谓的信息响应,UAS不需要对它们进行响应。实际上,SIP标准有一个增强功能,可以处理临时响应的可靠处理,但它是可选的,如果我是你的话,我现在不会担心它。

    推荐文章