Se, durante la creazione di un trunk PJSIP, notate che l'INVITE contiene la cifratura, come nell'esempio seguente:

2024/04/16 08:13:31.168379 167.172.150.53:5060 -> 87.248.52.227:5060
INVITE sip:0721405516@voip.bellnet.eu:5060 SIP/2.0
...
m=audio 10228 RTP/SAVP 0 8 18 101
a=crypto:1 AEAD_AES_256_GCM inline:WGfCoNIjy7wnMAO4upFw0wCx619TTejUJlfnmXKSiq6hUKqD9j59uk86BPg
...

Significa che manca l'header isTrunk=1 nell'INVITE. Questo consente ad Asterisk di indicare a Kamailio di non utilizzare la cifratura SRTP, permettendo al proxy (Kamailio) di inoltrare l'INVITE al provider senza cifratura.

Per gestire correttamente i provider VoIP che non necessitano di cifratura media, è utilizzata una query SQL come la seguente ( frammento di codice già presente) :

 /*Add isTrunk = 1 header to VoIP trunks that doesn't require SRTP encryption*/
            // Get all voip providers ip that doesn't need media encryption
            $sql = "SELECT t1.data
                FROM rest_pjsip_trunks_defaults AS t1
                JOIN rest_pjsip_providers AS t2 ON t1.provider_id = t2.id
                JOIN rest_pjsip_trunks_defaults AS t3 ON t2.id = t3.provider_id
                WHERE t3.keyword = 'media_encryption' AND t3.data = 'no'
                AND t1.keyword = 'sip_server'";


Per farlo con un operatore che non è accreditato bisogna effettuare i seguenti passaggi :

runagent -m nethvoiceX


Dove "X" è il numero di versione di NethVoice.


Accedere a Mysql :

mysql 

use asterisk;


Per vedere quali sono i provider già configurati nella tabella rest_pjsip_trunks_defaults, puoi usare la seguente query: 

MariaDB [asterisk]> select * from rest_pjsip_trunks_defaults where keyword like "sip_server";
+-------------+------------+-----------------------+
| provider_id | keyword    | data                  |
+-------------+------------+-----------------------+
|           1 | sip_server | sip.activenetwork.it  |
|           2 | sip_server | voip.eutelia.it       |
|           3 | sip_server | voip.sixcommgroup.it  |
|           4 | sip_server | sip.messagenet.it     |
|           5 | sip_server | sip.neomedia.it       |
|           6 | sip_server | 77.239.128.13         |
|           7 | sip_server | sip.opensolution.it   |
|           8 | sip_server | voip.opensolution.it  |
|           9 | sip_server | sipuser.plink.it      |
|          10 | sip_server | voip.sixcomm.net      |
|          11 | sip_server | sip.talkho.com        |
|          12 | sip_server | voce.voipvox.it       |
|          13 | sip_server | res.sip.twt.it        |
|          14 | sip_server | 185.144.72.100        |
|          15 | sip_server | voip.vivavox.it       |
|          16 | sip_server | sip.voipeasy.it       |
|          17 | sip_server | voip.voiptelitalia.it |
|          18 | sip_server | sip.voipvoicetel.it   |
|          19 | sip_server | trunk.voipvoice.it    |
|          20 | sip_server | user.voipvoice.it     |
|          21 | sip_server | sip.wicity.it         |
|          22 | sip_server | sip.mywic.it          |
|          23 | sip_server | 128.65.200.18         |
|          24 | sip_server | sip.digiclex.it       |
+-------------+------------+-----------------------+


In questo caso si può usare il successivo, ovvero il 25, per aggiungere il nuovo operatore.

La mia aggiunta di operatore ( esempio) in questo caso è di Bellnet quindi dovrò aggiungere

- id = 25 
- provider = Bellnet
- description = Bellnet VoIP ( questo viene visualizzato nell'interfaccia del wizard)
- sip_server = voip.bellnet.eu

- from_domain = voip.bellnet.eu

Ovviamente questi parametri si dovranno cambiare con quelli che vorreste aggiungere come provider.

Le insert da eseguire in mysql con in uso il db di asterisk sono le seguenti :

N.B. CAMBIARE LE VALUES QUELLE INDICATE

-- Inserimento del nuovo provider Bellnet
INSERT IGNORE INTO `rest_pjsip_providers` (`id`,`provider`,`description`) VALUES (25,'bellnet','Bellnet VoIP');

-- Inserimento delle impostazioni predefinite per Bellnet
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"aor_contact","");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"aors","");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"auth_rejection_permanent","off");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"authentication","outbound");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"client_uri","");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"codecs","ulaw,alaw");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"context","from-pstn-toheader");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"dialopts","");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"dialoutopts_cb","sys");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"direct_media","no");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"disabletrunk","off");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"dtmfmode","auto");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"expiration","300");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"failtrunk_enable","0");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"fatal_retry_interval","0");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"fax_detect","no");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"forbidden_retry_interval","10");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"force_rport","yes");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"from_domain","voip.bellnet.eu");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"hcid","on");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"identify_by","default");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"inband_progress","no");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"language","");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"match","");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"max_retries","10000");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"maxchans","");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"media_address","");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"media_encryption","no");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"message_context","");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"npanxx","");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"outbound_proxy","sip:10.5.4.1:5060;lr ");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"peerdetails","");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"qualify_frequency","60");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"register","");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"registration","send");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"retry_interval","60");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"rewrite_contact","no");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"rtp_symmetric","no");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"sendrpid","no");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"server_uri","");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"sip_server","voip.bellnet.eu");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"sip_server_port","5060");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"support_path","no");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"sv_usercontext","");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"t38_udptl","no");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"t38_udptl_ec","none");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"t38_udptl_maxdatagram","");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"t38_udptl_nat","no");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"transport","0.0.0.0-udp");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"trust_rpid","no");
INSERT IGNORE INTO `rest_pjsip_trunks_defaults` (`provider_id`,`keyword`,`data`) VALUES (25,"userconfig","");


Nel container di freepbx procedere con il seguente comando:

fwconsole reload


Dopodiché procedere alla creazione del trunk tramite il wizard di NethVoice dove ritroverete il nuovo operatore.