Marco25
Solo per aggiornamento, non ho trovato molte altre strade purtroppo.
Il mio problema non è la mancata funzionalità delle call in ingresso o in uscita, ma il fatto che, senza quel comando "Answer()", Zoiper traccia, per ogni call in ingresso, dalle 6 alle 12 chiamate perse perché, evidentemente, legge tutti gli INVITE. Di questi, effettivamente, solo uno va a buon fine, mentre tutti gli altri si prendono un 486 BUSY dal device "bob".
Da quello che vedo, sembra essere corretta l'ipotesi che hai fatto nei primi post di questo thread: l'ISP, nel mio caso TIM, invia un primo INVITE e, probabilmente, si aspetta una risposta molto veloce. Asterisk risponde 100 Trying, che dovrebbe evitare ulteriori INVITE. Ora, non so se è perché il trying arriva con un certo delay, ma TIM continua ad inviare INVITE: si ferma a cinque o sei, normalmente. Nel frattempo Asterisk proxa questi INVITE, via PJSIP, al device "bob", che risponde 486 BUSY a tutti tranne che ad uno, per il quale invia il 200 OK (PRACK).
Senza il comando "Answer()", tutto questo traffico di INVITE e BUSY viene letto da Zoiper, che considera ogni canale in BUSY una chiamata persa, anche se, in realtà, la chiamata è una sola e c'è anche stata regolare risposta (infatti, nel registro di Zoiper, c'è anche una chiamata a buon fine).
Se inserisco il comando "Answer()" invece, l'ho spostato nel context "external", è vero che rispondo sempre alla chiamata, ma ho il registro su Zoiper assolutamente in linea con quello che succede sul dispositivo "bob" e, comunque, se dopo il comando "Answer()" la chiamata non va a buon fine, in ogni caso scatta il comando "Hangup()" e quindi anche chi chiama non si accorge che c'è stata una risposta e percepisce solo che la chiamata non è andata a buon fine.
So che è un compromesso, ma con il provider che invia più INVITE è l'unico modo di tenere in ordine il registro delle chiamate. Gli INVITE multipli ci sono anche quando inserisco il comando "Answer()", ma ho visto che TIM, a quel punto, si accorge di aver già ricevuto una risposta 200 OK e cancella le altre chiamate: inizio a pensare che gli INVITE multipli siano un meccanismo del provider, poco ortodosso, per massimizzare la possibilità che la chiamata vada a buon fine, cancellando poi quelli in eccesso.
Grazie e buon proseguimento.
Un saluto.