07/04/2020, 10:00
Salve,
Sto realizzando un citofono che comunichi con il mio centralino VOIP usando un Raspberry (in realtà un Orange PI), sviluppando una applicazione in C che utilizza le librerie PJSIP.
Il mio client si basa sul sorgente pjsuasimple.c che si trova nella cartella degli esempi e si registra su un PBX asterisk. (al momento l'ho installato nello stesso Orange per semplicità di prove)
Il funzionamento del sistema è abbastanza semplice, premendo un pulsante si avvia una chiamata verso l'interno .
Diciamo che al momento funziona tutto abbastanza bene, a volte rispondendo cade la comunicazione e non ho ancora ben capito il motivo.
Ho però un errore, durante la selezione della chiamata che sembrerebbe dovuto al transport.
credo di aver capito che stia tentando di registrarsi su asterisk impostando il protocollo TCP dopodichè riprova in UDP, ma le mie impostazioni dovrebbero essere tutte in UDP
Spero qualcuno possa chiarirmi il significato e se posso risolverlo.
La mia configurazione:
Il SIP Debug :
Sto realizzando un citofono che comunichi con il mio centralino VOIP usando un Raspberry (in realtà un Orange PI), sviluppando una applicazione in C che utilizza le librerie PJSIP.
Il mio client si basa sul sorgente pjsuasimple.c che si trova nella cartella degli esempi e si registra su un PBX asterisk. (al momento l'ho installato nello stesso Orange per semplicità di prove)
Il funzionamento del sistema è abbastanza semplice, premendo un pulsante si avvia una chiamata verso l'interno .
Diciamo che al momento funziona tutto abbastanza bene, a volte rispondendo cade la comunicazione e non ho ancora ben capito il motivo.
Ho però un errore, durante la selezione della chiamata che sembrerebbe dovuto al transport.
Citazione:Temporary failure in sending Request msg INVITE/cseq=26510 (tdta0x130f7e4), will try next server: Unsupported transport (PJSIP_EUNSUPTRANSPORT)
credo di aver capito che stia tentando di registrarsi su asterisk impostando il protocollo TCP dopodichè riprova in UDP, ma le mie impostazioni dovrebbero essere tutte in UDP
Spero qualcuno possa chiarirmi il significato e se posso risolverlo.
La mia configurazione:
Codice:
pjsua_config cfg;
pjsua_logging_config log_cfg;
pjsua_config_default(&cfg);
status = pjsua_init(&cfg, &log_cfg, NULL);
/* Add UDP transport. */
{
pjsua_transport_config cfg;
pjsua_transport_config_default(&cfg);
cfg.port = 0; // selezione automatica della porta
status = pjsua_transport_create(PJSIP_TRANSPORT_UDP, &cfg, NULL);
if (status != PJ_SUCCESS) error_exit("Error creating transport", status);
}
/* Initialization is done, now start pjsua */
status = pjsua_start();
if (status != PJ_SUCCESS) error_exit("Error starting pjsua", status);
/* Register to SIP server by creating SIP account. */
{
pjsua_acc_config cfg;
pjsua_acc_config_default(&cfg);
cfg.id=pj_str("sip:" SIP_USER "@" SIP_DOMAIN);
cfg.reg_uri = pj_str("sip:" SIP_DOMAIN);
cfg.cred_count = 1;
cfg.cred_info[0].realm = pj_str("*");
cfg.cred_info[0].scheme = pj_str("digest");
cfg.cred_info[0].username = pj_str(c.sip_user);
cfg.cred_info[0].data_type = PJSIP_CRED_DATA_PLAIN_PASSWD;
cfg.cred_info[0].data = pj_str(c.sip_passwd);
status = pjsua_acc_add(&cfg, PJ_TRUE, &acc_id);
if (status != PJ_SUCCESS) error_exit("Error adding account", status);
}
Il SIP Debug :
Codice:
10:24:29.956 pjsua_core.c .RX 544 bytes Response msg 401/INVITE/cseq=26509 (rdata0xb320129c) from UDP 127.0.0.1:5070:
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 127.0.0.1:38959;branch=z9hG4bKPjelf0bstEyKeAHo2YqY.OLtsSKj0bQci8;received=127.0.0.1;rport=38959
From: sip:6001@127.0.0.1;tag=H5DE-uXrfoWKbOkgm7uuWv4j.GhoHZFp
To: sip:6002@127.0.0.1;tag=as196ab6ef
Call-ID: HV3NhW6Mmt-QnSCvKMHrkkX9hhFK3FIs
CSeq: 26509 INVITE
Server: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
Supported: replaces, timer
WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="64bb5ce7"
Content-Length: 0
--end msg--
10:24:29.956 pjsua_core.c ..TX 328 bytes Request msg ACK/cseq=26509 (tdta0xb3203234) to UDP 127.0.0.1:5070:
ACK sip:6002@127.0.0.1:5070 SIP/2.0
Via: SIP/2.0/UDP 127.0.0.1:38959;rport;branch=z9hG4bKPjelf0bstEyKeAHo2YqY.OLtsSKj0bQci8
Max-Forwards: 70
From: sip:6001@127.0.0.1;tag=H5DE-uXrfoWKbOkgm7uuWv4j.GhoHZFp
To: sip:6002@127.0.0.1;tag=as196ab6ef
Call-ID: HV3NhW6Mmt-QnSCvKMHrkkX9hhFK3FIs
CSeq: 26509 ACK
Content-Length: 0
--end msg--
10:24:29.957 tsx0xb3206184 .......Temporary failure in sending Request msg INVITE/cseq=26510 (tdta0x130f7e4), will try next server: Unsupported transport (PJSIP_EUNSUPTRANSPORT)
10:24:29.957 pjsua_core.c .......TX 1377 bytes Request msg INVITE/cseq=26510 (tdta0x130f7e4) to UDP 127.0.0.1:5070:
INVITE sip:6002@127.0.0.1:5070 SIP/2.0
Via: SIP/2.0/UDP 127.0.0.1:38959;rport;branch=z9hG4bKPjbVK7Nod1wbxdt4MBdIp.cBan9avlccLr
Max-Forwards: 70
From: sip:6001@127.0.0.1;tag=H5DE-uXrfoWKbOkgm7uuWv4j.GhoHZFp
To: sip:6002@127.0.0.1
Contact: <sip:6001@127.0.0.1:38959;ob>
Call-ID: HV3NhW6Mmt-QnSCvKMHrkkX9hhFK3FIs
CSeq: 26510 INVITE
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Supported: replaces, 100rel, timer, norefersub
Session-Expires: 1800
Min-SE: 90
Authorization: Digest username="6001", realm="asterisk", nonce="64bb5ce7", uri="sip:6002@127.0.0.1:5070", response="b3628e673809618208ff8285355b1f49", algorithm=MD5
Content-Type: application/sdp
Content-Length: 637
v=0
o=- 3795236669 3795236669 IN IP4 192.168.178.119
s=pjmedia
b=AS:84
t=0 0
a=X-nat:0
m=audio 4000 RTP/AVP 96 97 98 99 3 0 8 9 120 121 122
c=IN IP4 192.168.178.119
b=TIAS:64000
a=rtcp:4001 IN IP4 192.168.178.119
a=sendrecv
a=rtpmap:96 speex/16000
a=rtpmap:97 speex/8000
a=rtpmap:98 speex/32000
a=rtpmap:99 iLBC/8000
a=fmtp:99 mode=30
a=rtpmap:3 GSM/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:9 G722/8000
a=rtpmap:120 telephone-event/16000
a=fmtp:120 0-16
a=rtpmap:121 telephone-event/8000
a=fmtp:121 0-16
a=rtpmap:122 telephone-event/32000
a=fmtp:122 0-16
a=ssrc:239892811 cname:05c34e643e5774ab
--end msg--
10:24:29.966 pjsua_core.c .RX 520 bytes Response msg 100/INVITE/cseq=26510 (rdata0xb3200e9c) from UDP 127.0.0.1:5070:
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 127.0.0.1:38959;branch=z9hG4bKPjbVK7Nod1wbxdt4MBdIp.cBan9avlccLr;received=127.0.0.1;rport=38959
From: sip:6001@127.0.0.1;tag=H5DE-uXrfoWKbOkgm7uuWv4j.GhoHZFp
To: sip:6002@127.0.0.1
Call-ID: HV3NhW6Mmt-QnSCvKMHrkkX9hhFK3FIs
CSeq: 26510 INVITE
Server: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
Supported: replaces, timer
Session-Expires: 1800;refresher=uas
Contact: <sip:6002@127.0.0.1:5070>
Content-Length: 0
--end msg--
10:24:30.063 pjsua_core.c .RX 536 bytes Response msg 180/INVITE/cseq=26510 (rdata0xb3200e9c) from UDP 127.0.0.1:5070:
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP 127.0.0.1:38959;branch=z9hG4bKPjbVK7Nod1wbxdt4MBdIp.cBan9avlccLr;received=127.0.0.1;rport=38959
From: sip:6001@127.0.0.1;tag=H5DE-uXrfoWKbOkgm7uuWv4j.GhoHZFp
To: sip:6002@127.0.0.1;tag=as0d1fb90a
Call-ID: HV3NhW6Mmt-QnSCvKMHrkkX9hhFK3FIs
CSeq: 26510 INVITE
Server: Asterisk PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
Supported: replaces, timer
Session-Expires: 1800;refresher=uas
Contact: <sip:6002@127.0.0.1:5070>
Content-Length: 0