2017-12-06 2 views
1

Ich möchte ausgehende Anrufe von meiner Konsole Anwendung mit C# mit Twilio Stimme API. Aber die meiste Zeit bekomme ich die connection error Nachricht. Mein System verwendet den Proxy-Server. Also möchte ich Proxy-Authentifizierung mit dem Code hinzufügen. Bitte vorschlagen.Proxy-Authentifizierung mit Twilio Sprache API in C#

Mein Code ist wie folgt:

const string accountSid = "*****************"; 
const string authToken = "*****************"; 
var client = new TwilioRestClient(accountSid, authToken); TwilioClient.Init(accountSid, authToken); 
var to = new PhoneNumber("*****************"); 
var from = new PhoneNumber("*****************"); `enter code here` 
var call = CallResource.Create(to, from, url: new Uri(tempURL));

Antwort

0

Twilio Evangelist hier.

Wenn Sie versuchen, den Proxy hier zu verwenden, wird die Verwendung unserer Rest-API hilfreich sein. Versuchen Sie diesen Code unter Ihrem Proxy-Server anschließen an das Httpclient Objekt:

public static HttpClient GetProxy() 
{ 
    // First create a proxy object 
    var proxyUri = $"{proxyServerSettings.Address}:{proxyServerSettings.Port}"; 

    var proxyCreds = new NetworkCredential("proxyuser", "proxypassword"); 

    var proxy = new WebProxy(proxyUri, false) 
    { 
     UseDefaultCredentials = false, 
     Credentials = proxyCreds, 
    }; 

    // Now create a client handler which uses that proxy 
    var httpClientHandler = new HttpClientHandler() 
    { 
     Proxy = proxy, 
     PreAuthenticate = true, 
     UseDefaultCredentials = false, 
    }; 

    return new HttpClient(httpClientHandler); 
} 

Um das Telefonat mit dem Proxy zu machen, können Sie den Beispielcode verwenden hier:

const string accountSid = "*****************"; 
const string authToken = "*****************"; 
string to = "+1xxxxxxxxxx"; 
string from = "+1xxxxxxxxxx"; 
string callUrl = $"https://api.twilio.com/2010-04-01/Accounts/{AccountSid}/Calls"; 
var httpClient = GetProxy(); 
var authorizationValue = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{accountSid}:{authToken}")); 
httpClient.DefaultRequestHeaders.Clear(); 
httpClient.DefaultRequestHeaders.Add("Authorization", $"Basic {authorizationValue}"); 
var result= httpClient.PostAsync(callUrl, new FormUrlEncodedContent(new Dictionary<string,string> 
{ 
    {"To", to}, 
    {"From", from}, 
    {"Url", "http://demo.twilio.com/docs/voice.xml"} 
})); 

Lassen Sie mich wissen, wenn Dies hilft oder wenn Sie auf zusätzliche Probleme stoßen. Glücklich, hier zu helfen

+0

Ich möchte eine Twiml übergeben, auch weil wir die Text-zu-Sprache-Funktion von Twilio verwenden. var call = CallResource.Create (zu, von, url: new Uri (tempURL)); Hier ist TempURL Twilio Twil, die wir passieren. also wie kann das in Ihrem Code enthalten – Ajith

+0

UriTemp = String.Format ("http://twimlets.com/echo?Twiml=%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22 % 3F% 3E% 0A% 3CResponse% 3E% 0A% 20% 20% 20% 20% 3CSay% 20voice% 3D% 22woman% 22% 20Sprache% 3D% 22en-gb% 22% 3EHi% 20i% 20am% 20calling% 20from % 20Service% 20Desk% 20A% 20M% 20S% 20Alerts.% 20A% 20High% 20Priorität% 20Incident% 20P% 20 {1}% 20has% 20been% 20aufgestockt% 20in% 20your% 20Service.% 20Service% 20name% 20is% 20 { 0}.% 20% 3C% 2FSay% 3E% 0A% 3C% 2FResponse% 3E & ", Servicename, Priorität); – Ajith

+0

Entschuldigung für die Verzögerung. Einfach hier einholen. Sie können die URL senden, indem Sie einfach einen "Url" -Parameter und dessen Wert hinzufügen - wie in diesem Codebeispiel: 'var result = httpClient.PostAsync (callUrl, new FormUrlEncodedContent (neues Dictionary { {" To " , to}, {"Von", von}, {"URL", "LINK_TO_TWIML_URL"})); ' Hier ist der [Link zu den Dokumenten] (https://www.twilio.com/docs/api/voice/making-calls # Post-Parameter), die die anderen Parameter auflisten, die Sie posten können. –