Comment utiliser l'AMD améliorée via Twilio? Je comprends que cela ne peut se faire que via l'API REST (pas de TwiML) mais j'ai du mal à voir la connexion entre un appel standard et la détection du répondeur. J'ai lu plusieurs fois le this page, mais je ne comprends toujours pas. Donc, voici le code standard C# pour passer un appel via l'API REST:Détection de répondeur améliorée Twilio C#
TwilioClient.Init(AccountSid, AuthToken);
var to = new PhoneNumber("+14155551212");
var from = new PhoneNumber("+15017250604");
var call = CallResource.Create(to, from, url: new Uri("http://demo.twilio.com/docs/voice.xml"));
Et voici mon C# traduit le code à partir du lien ci-dessus:
using (var client = new HttpClient())
{
var byteArray = Encoding.ASCII.GetBytes([email protected]"{AccountSid}:{AuthToken}");
var header = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
client.DefaultRequestHeaders.Authorization = header;
var requestContent = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("To", "+15017250604"),
new KeyValuePair<string, string>("From", "+15017250604"),
new KeyValuePair<string, string>("MachineDetection", "DetectMessageEnd"),
new KeyValuePair<string, string>("Url", Url.Action("PostTransfer"))
});
var response = client.PostAsync(_amdRequest, requestContent);
var responseContent = response.Result.Content;
}
Alors qu'est-ce que je manque? Je suis sûr que c'est quelque chose de simple, mais je ne vois pas comment la DMLA améliorée sait quel appel écouter, et quel devrait être l'ordre des événements ici. Et enfin, comment suis-je censé voir les résultats?
EDIT:
Donc, pour être très clair, voici mon code comme il se trouve actuellement:
TwilioClient.Init(AccountSid, AuthToken);
var toPhone = new PhoneNumber(to);
var fromPhone = new PhoneNumber(from);
var call = CallResource.Create(toPhone, fromPhone, url: new Uri("http://demo.twilio.com/docs/voice.xml"));
using (var client = new HttpClient())
{
var byteArray = Encoding.ASCII.GetBytes([email protected]"{AccountSid}:{AuthToken}");
var header = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
client.DefaultRequestHeaders.Authorization = header;
var requestContent = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("To", to),
new KeyValuePair<string, string>("From", from),
new KeyValuePair<string, string>("MachineDetection", "DetectMessageEnd"),
new KeyValuePair<string, string>("Url", Url.Action("PostTransfer"))
});
var response = client.PostAsync(_amdRequest, requestContent);
var responseContent = response.Result.Content;
}
Et ailleurs dans mon code est une fonction appelée « PostTransfer » qui obtient le « AnsweredBy » paramètre et fait des choses après l'appel est placé. Est-ce que cela devrait fonctionner? Parce que ça ne l'est pas. L'appel passe et je peux entendre le fichier d'exemple de Twilio, mais il n'arrive jamais à la fonction "PostTransfer".
J'ai un peu édité la question originale. Je n'ai aucun moyen de savoir si quelque chose ne va pas avec la détection du répondeur car il n'atteint jamais la fonction à la fin de l'URL que je fournis. – bkmo
Ah, je crois, de la vérification [les docs] (https://msdn.microsoft.com/en-us/library/system.web.mvc.urlhelper.action (v = vs.118) .aspx), que 'URL.Action' renvoie un chemin, où Twilio a besoin d'une URL complète avec le domaine, etc. – philnash
Cela l'a fait. Je recevais seulement l'URL partielle avant. – bkmo