在我的概念验证代码中,我成功地创建了一个电话会议,并且能够进入等候室并听到暂停音乐,直到另一位参与者加入。然而,当我在visualstudio中将此代码移到.NETCore生产类型的解决方案中时,它会读取Room#并立即挂断。我相信这与.NET核心有关,但还无法确定根本原因。
概念验证码
using Twilio.TwiML;
using Twilio.AspNet.Mvc;
using System.Web.Mvc;
using Twilio.TwiML.Voice;
namespace MakeAndReceiveCalls.Controllers
{
public class PhoneController : TwilioController
{
[HttpPost]
public ActionResult MakeConferenceCall()
{
var response = new VoiceResponse();
var dial = new Dial();
dial.Conference("Room 1234");
response.Append(dial);
return Content(response.ToString());
}
}
}
生产代码
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Twilio.AspNet.Core;
using Twilio.TwiML;
using Twilio.TwiML.Voice;
namespace RL.Domain.AudioConference.API.Controllers
{
[Route("v1/[Controller]")
public class AudioConferenceController : TwilioController
{
[HttpPost("MakeConferenceCall")]
public ActionResult MakeConferenceCall()
{
var response = new VoiceResponse();
var dial = new Dial();
dial.Conference("Room 1234");
response.Append(dial);
return Content(response.ToString());
}
}
}
在返回TwiML时检查返回的HTTP MIME类型。
https://www.twilio.com/docs/voice/twiml#twilio-了解mime类型
更改返回类型从:
ActionResult
return Content(response.ToString());
收件人:
TwiMLResult
return TwiML(response);
修复了此问题。不知道为什么第一种方法在我的概念验证中起作用。