私は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>
いつも、私は回避策を見つけましたが、おそらくTwilioライブラリのバグです。 – Craig
@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)に基づいて、それはあなたのソリューションと同じことをするでしょう。 –