我很難讓Twilio執行收集。這個調用初始化得很好,但不是等待用戶按鍵,Gather只是進入下一個語句並掛起。Twilio收集不會暫停輸入
我的環境是Visual Studio 2015. .NET 4.6,MVC6,asp.net5。我安裝了RC1更新。 Nuget包是Twilio 4.4.1版,Twilio.TwiML 3.3.6。
下面是測試的WebAPI 2控制器:
[Route("api/[controller]")]
public class OutboundCallController : Controller
{
[HttpPost]
public IActionResult Post()
{
var twilioResponse = new TwilioResponse();
twilioResponse.BeginGather(new { timeout = "60", numDigits = "1", action = "Foo", method = "POST" });
twilioResponse.Say("Test Message Here");
twilioResponse.EndGather();
twilioResponse.Say("Fallthrough. Goodbye.");
return new ObjectResult(twilioResponse.ToString());
}
}
當Twilio接收它說下面的數據「測試消息在這裏下通再見。」立即停止,然後立即掛斷電話。
使用ngrok我可以看到效應初探到Twilio後到我的控制器:
<Response>
<Gather timeout="60" numDigits="1" action="Foo" method="POST">
<Say>Test Message Here</Say>
</Gather>
<Say>Fallthrough. Goodbye.</Say>
</Response>
此外,我的Twilio日誌看起來像(相同的):
<Response>
<Gather timeout="60" numDigits="1" action="Foo" method="POST">
<Say>Test Message Here</Say>
</Gather>
<Say>Fallthrough. Goodbye.</Say>
</Response>
編輯:
我也試過改變WebAPI返回一個字符串,而不是IActionResult。沒有什麼變化,結果相同。
[HttpPost]
public string Post()
{....}
答:
原來我沒有返回正確的內容類型,我修改了POST操作的迴歸,充分控制器代碼如下:
[Route("api/[controller]")]
public class OutboundCallController : Controller
{
[HttpPost]
public IActionResult Post()
{
var twilioResponse = new TwilioResponse();
twilioResponse.BeginGather(new { timeout = "60", numDigits = "1", action = "Foo", method = "POST" });
twilioResponse.Say("Test Message Here");
twilioResponse.EndGather();
twilioResponse.Say("Fallthrough. Goodbye.");
return Content(twilioResponse.ToString(), "application/xml");
}
}
謝謝,你讓我朝着正確的方向前進。內容類型在響應中不正確。我編輯了我的問題,向控制器顯示更改。 – mcbowes
太棒了!樂於幫助! –