Ho un'applicazione desktop Windows, creata dal mio gestore di rete mobile, che fa tutto con SIP: chiamata, invio messaggio, ecc. Schermata di come questa app invia correttamente MESSAGE
(le ultime 4 righe): Come inviare un messaggio immediato tramite SIP
MESSAGE
richiesta, da un'applicazione desktop, viene inviato come (4 ° linea da dietro):
MESSAGE sip:[email protected] SIP/2.0
Via: SIP/2.0/UDP LOCALIP:2112;branch=z9hG4bK-d8754z-905183245f478c76-1---d8754z-;rport
Max-Forwards: 70
To: "TO"<sip:[email protected]>
From: "FROM"<sip:[email protected]>;tag=63088d09
Call-ID: NGVhMDJhYzQwNmExOTQyNThmNjc5OGNmOTViNDUyYWM.
CSeq: 2 MESSAGE
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO
Content-Type: text/plain
Content-Length: 4
test
e la risposta di successo per quello è:
SIP/2.0 407 Proxy Authentication Required
Via: SIP/2.0/UDP LOCALIP:2112;received=EXTERNALIP;branch=z9hG4bK-d8754z-905183245f478c76-1---d8754z-;rport=2112
To: "TO"<sip:[email protected]>;tag=c005f0e30133ec730add76fc91f4bea
From: "FROM"<sip:[email protected]>;tag=63088d09
Call-ID: NGVhMDJhYzQwNmExOTQyNThmNjc5OGNmOTViNDUyYWM.
CSeq: 2 MESSAGE
Content-Length: 0
Proxy-Authenticate: Digest nonce="3F178051B97E1F5200A3C53D4B",realm="DOMAIN",algorithm=MD5,qop="auth"
Allora provo a trasmettere identici (e n-varianti) richiesta da PHP, ma ho sempre ricevere SIP/2.0 403 Forbidden
invece di SIP/2.0 407 Proxy Authentication Required
:
SIP/2.0 403 Forbidden
Via: SIP/2.0/UDP LOCALIP;received=EXTERNALIP
To: "TO"<sip:[email protected]>;tag=aprqngfrt-f7ccjj0000020
From: "FROM"<sip:[email protected]>;tag=8f7be81d
Call-ID: [email protected]
CSeq: 1 MESSAGE
Reason: Q.850;cause=55;text="Call Terminated"
Content-Length: 0
La parte divertente è, che se io mando REGISTER
richiesta funziona, e ricevo correttamente l'intestazione SIP/2.0 401 Unauthorized
con WWW-Authenticate
. Ricalco l'autorizzazione e la invio di nuovo. Quindi ricevo SIP/2.0 200 OK
. Qual è il modo in cui dovrebbe funzionare con MESSAGE
.
Cosa potrebbe essere sbagliato? Cosa mi sono perso? La richiesta MESSAGE
necessita di qualche altra richiesta prima (ho già provato prima REGISTER
)?
Ho letto RFC 3428 su e giù, ho provato tutti gli esempi possibili, ma senza successo.
Non sono un esperto di 'SIP' e sembra che tu sappia cosa stai facendo. Tutto quello che posso dire è che se credi che stai facendo esattamente come l'altro software (che funziona) senza alcun blocco, direi andare per le cose che potresti fare in modo diverso. Forse la mancata corrispondenza dei caratteri di controllo potrebbe essere un buon inizio, come '\ n' vs' \ n \ r'. – Mehran
@Mehran: Non penso che i diversi tipi di "nuove linee" possano fare alcuna differenza, poiché il metodo "REGISTER" funziona. Se, ad esempio, rimuovo l'intestazione 'CSeq' dalla richiesta, il server SIP restituisce' SIP/2.0 400 Missing CSeq Header' ... Ciò mi dice che la comunicazione è OK. Penso che il metodo 'MESSAGE' sia inviato correttamente, deve essere qualcos'altro ( –