Aus Gründen der Kürze halber habe ich einen Endpunkt, die in einigen Parametern nimmt und gibt eine TwiML Antwort den Anruf an einen anderen Endpunkt zu umleiten ein DTMF-Antwort des Benutzers zu sammeln:URL-safe Aktionen in Twilio TwiML Antworten
[HttpGet]
public async MyEndpoint<ActionResult> Test(string parameterOne, string parameterTwo)
{
var response = new VoiceResponse()
.Redirect(
url: $"https://example.com/Gather?parameterOne={parameterOne}¶meterTwo={parameterTwo}",
method: "POST");
return TwiML(response);
}
, das die folgenden XML erzeugt:
<?xml version="1.0" encoding="utf-8"?>
<Response>
<Redirect method="POST">https://example.com/Gather?paramaterOne="test"&parameterTwo="test"</Redirect>
</Response>
die Idee ist, dass Twilio zu diesem Endpunkt Standard-Request-Objekt ist es schreiben soll, aber ist meine Parameter im Query-String:
[HttpPost]
public async Task<ActionResult> Gather([FromUri] string parameterOne, string parameterTwo [FromBody] TwilioCallbackRequest request)
{
// Do stuff
}
Die Anforderung schlägt jedoch fehl, da der XML-codierte &
vom Webserver nicht als Abfragezeichenfolgen-Delimeter interpretiert wird.
Idealerweise gibt es eine Möglichkeit, die Formularwerte der Twilio-Anfrage so zu ändern, dass sie die Parameter enthält, die ich übergeben muss, aber ich glaube nicht, dass diese Funktion existiert.
Meine Fragen sind:
A. Gibt es eine Möglichkeit Twilio zu bekommen encodieren URL von Abfragen ist ?, oder
B. Was ist der beste Weg, um eine Abfrage-String zu akzeptieren, die in dieser ungültig ist Weise in ASP.NET ohne Fehler, bevor ich eine Chance habe, die Anfrage zu bearbeiten?
Derzeit ist meine hacky Problemumgehung, meine Abfrage-String-Parameter als eine große Zeichenfolge mit Unterstrich-Trennzeichen zu senden und meine Parameter manuell zu analysieren, aber ich bezweifle, dass dies der beste Weg ist. Ich habe auch erwogen, Anfragen mit OWIN-Middleware abzufangen und zu versuchen, die Abfragezeichenfolge für diesen Endpunkt zu ändern.
Danke für die Anregung, aber dies gibt die folgenden: 'Statuscode: 200, ReasonPhrase: 'OK', Version: 1.1, Inhalt: System.Net.Http.StringContent, Sockel: { Content-Type: Anwendung/xml; charset = utf-8 } ' was Twilio nicht mag (12100 Document Parse Fehler) –
Sehr interessant, dass Sie diese Antwort bekommen. Würde es Ihnen etwas ausmachen, den genauen Code, den Sie für beide Methoden verwenden, zu posten (oder mir eine E-Mail an [email protected] zu schicken)? Basierend auf der obigen Antwort vermute ich, dass der Inhalt der Zeichenfolge nicht tatsächlich gesendet wird. –
Sie haben Recht! Ich hatte MVC und WebAPI Bindungen für die gleichen Routen kämpfen. Es ist jedoch zu beachten, dass der Twilio XML-Generator (der 'TwiML'-Konstruktor) wahrscheinlich nicht mit den kaufmännischen Und-Zeichen (engl.) Zu tun haben sollte, wenn er XML zurückgibt. –