2017-08-15 7 views
0

Ich verwende Twilio, um eine SIP-Wähllösung für meine Firma zu bauen, und ich empfange eine Fehler "Dial-> Sip: SIP-URI DNS löst nicht auf oder löst auf eine nicht-öffentliche IP-Adresse auf". Ich habe ein Testkonto bei onsip, um die Funktionalität zu testen, und wenn ich diese Kontonummer anrufe, schlägt es fehl. Der relevante TwiML ist:Twilio zu OnSip App Fehler: Wählen-> Sip: SIP-URI DNS löst nicht oder löst zu einer nicht öffentlichen IP-Adresse

<?xml version="1.0" encoding="UTF-8"?> 
<Response> 
<Dial callerId="+15555555555"> 
    <Sip>sip:[email protected]</Sip> 
</Dial> 
</Response> 


Soweit googeln mich bekommen hat, glaube ich, dass ich meine Bewerbung müssen eventuell weiße Liste. Ich fragte mich auch, dass, weil ich meine Anwendung auf localhost verwendet wurde, das war das Problem, aber ich habe ngrok verwendet, und immer noch den Fehler erhalten.

Antwort

0

Es gibt einen Weg um dieses Problem mit Twilio neu implementiert functions.

So etwas sollte

const dns = require('dns'); 

let sipUri = '[email protected]'; 
let protocol = 'udp'; 
let region = 'us2' ; 

exports.handler = function(context, event, callback) {  
    var user = sipUri.split('@')[0]; 
    var host = sipUri.split('@')[1]; 

    // generate the TwiML to tell Twilio how to forward this call 
    let twiml = new Twilio.twiml.VoiceResponse(); 

    const dial = twiml.dial(); 

    dns.resolveSrv('_sip._'+protocol+'.'+host, (err, addresses) => { 
    var resolvedhost = addresses[0].name+':'+addresses[0].port; 
    dial.sip('sip:'+user+'@'+resolvedhost+';region='+region); 
    console.log(twiml.toString()); 
    // return the TwiML 
    callback(null, twiml); 
    }); 
}; 

work-- Diese Abfragen manuell den Hostnamen für SRV-Einträge und verwendet dann das erste Ergebnis zurückgegeben. Berücksichtigt Gewicht und Prioritäten nicht.

Nodejs docs