SIP:如何编译对 INVITE 的 TRYING 响应

问题描述 投票:0回答:1

我正在用 Python 开发一个能够管理 SIP 事务的应用程序。 我不需要接听或发送/接收媒体,我只想跟踪来电并发送 INIVTE 并在之后取消(这非常简单)。 我成功编写了代码来获取传入的 SIP 消息并发送响应,但消息内容有问题。 例如:我收到一个 INVITE,我想用 TRYING 来回答。应用程序拦截 INVITE,读取消息内容并发送 TRYING,但服务器无法识别与 INVITE 相关的 TRYING,并继续发送 INVITE。

“TRYING”消息有什么问题?

消息:

Session Initiation Protocol (INVITE)
    Request-Line: INVITE sip:[email protected]:5060 SIP/2.0
    Message Header
        Via: SIP/2.0/UDP 79.98.45.133:5060;branch=z9hG4bK2f7cb45b;rport
        Max-Forwards: 70
        From: <sip:[email protected]>;tag=as35f49270
        To: <sip:[email protected]:5060>
        Contact: <sip:[email protected]:5060>
        Call-ID: [email protected]:5060
        [Generated Call-ID: [email protected]:5060]
        CSeq: 102 INVITE
        User-Agent: MOR Softswitch
        Date: Mon, 30 Sep 2024 14:18:02 GMT
        Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
        Supported: replaces, timer
        Content-Type: application/sdp
        Content-Length: 361
    Message Body

No.     Time           Source                Destination           Protocol Length Info
     33 6.391889       192.168.178.83        79.98.45.133          SIP      324    Status: 100 Trying | 

Frame 33: 324 bytes on wire (2592 bits), 324 bytes captured (2592 bits)
Ethernet II, Src: HewlettP_cc:df:08 (68:b5:99:cc:df:08), Dst: AVMAudio_bb:b4:a0 (38:10:d5:bb:b4:a0)
Internet Protocol Version 4, Src: 192.168.178.83, Dst: 79.98.45.133
User Datagram Protocol, Src Port: 38119, Dst Port: 5060
Session Initiation Protocol (100)
    Status-Line: SIP/2.0 100 Trying
    Message Header
        Via: SIP/2.0/UDP 79.98.45.133:5060; branch=z9hG4bK2f7cb45b
        From: <sip:[email protected]>; tag=as35f49270
        To: <sip:[email protected]:5060>
        Call-ID:  0e23cffb0fdc0fbe19949dd042d668ac
        [Generated Call-ID: 0e23cffb0fdc0fbe19949dd042d668ac]
        Cseq: 102 INVITE
        User-Agent: PythonSIPClient
        Content-Length: 0
sip invite
1个回答
0
投票

您的代码应该从原始 INVITE 中复制“Call-ID”标头的值并将其放入 TRYING 中。根据提供的 pcap 片段,它会跳过该值的一部分并在其之前添加额外的空间。 “CSeq”标头名称也有错误:

Call-ID: [email protected]:5060
Call-ID:  0e23cffb0fdc0fbe19949dd042d668ac

CSeq: 102 INVITE
Cseq: 102 INVITE
© www.soinside.com 2019 - 2024. All rights reserved.