2017-11-16 8 views
0

私はCallControllerのConnectアクションでこのコードを持つTwiMLアプリを持っています。このコードは、Twilioのデモから直接取り込まれています。Twilio TwiML app XMLエラー

[HttpPost] 
public virtual ActionResult Connect(string phoneNumber, string called) 
{ 
    var response = new VoiceResponse(); 

    var dial = new Dial(callerId: "+6138595????"); 
    if (phoneNumber != null) 
    { 
     dial.Number(phoneNumber); 
    } 
    else 
    { 
     dial.Client("support_agent"); 
    } 
    response.Dial(dial); 

    return TwiML(response); 
} 

これが呼び出されると、「ルートレベルのデータが無効です。行1、位置1」というエラーが発生します。

これは生成XMLは、私たちはTwilio SDKをスキップし、自分でXMLを生成することによって、私たちのWEBAPIでそれを解決し、同じ問題を抱えていた

<?xml version="1.0" encoding="utf-8"?> 
<Response> 
    <Dial callerId="+6138595????"> 
    <Client>support_agent</Client> 
    </Dial> 
</Response> 

答えて

1

です。

私は、これはあまりにもあなたのために働くことを願っています:

[HttpPost] 
public virtual HttpResponseMessage Connect(string phoneNumber, string called) 
{ 
      string twiml = $"<?xml version=\"1.0\" encoding=\"utf-8\"?><Response><Dial callerId=\"{phoneNumber}\"><Client>support_agent</Client></Dial></Response>"; 
      var xmlResponse = new HttpResponseMessage(); 
      xmlResponse.Content = new StringContent(twiml, Encoding.UTF8, "text/xml"); 

      return xmlResponse; 
} 

行の終わりがないことに注意してください - "\ nを"、\ rを」など

1

Twilioエバンジェリストここ

簡単な質問 - メソッドが呼び出されるたびに、または特定の入力が提供されている場合にのみ起こりますか?手動で文字列を作成する必要はありませんので、これをトリガした結果。

私は

return new TwiMLResult(response.ToString(), new UTF8Encoding()); 

return TwiML(response); 

を置き換えることによって、それを修正することができ、私を発見した

+0

いつも、私は回避策を見つけましたが、おそらくTwilioライブラリのバグです。 – Craig

+0

@Craigを共有してくれてありがとう。デフォルトでは 'return TwiML(response)'はレスポンスのエンコーディングを[Encoding.Default]に設定します(https://docs.microsoft.com/en-us/dotnet/api/system.text.encoding.default? view = netframework-4.7.1)。私はEncoding.Defaultがここにいくつかの問題を与えていると思います。代わりに 'return TwiML(response、new UTF8Encoding())'を指定することでそれを無効にすることができます。 [GitHubのコード](https://github.com/twilio/twilio-aspnet/blob/master/src/Twilio.AspNet.Mvc/TwilioController.cs)に基づいて、それはあなたのソリューションと同じことをするでしょう。 –

1

は、最初の方法を使用して、問題をコードのいくつかの種類のように見えます。

関連する問題