有人知道如何录制和播放Twilio录音吗?



我正在尝试实现一个简单的'语音邮件'类型的系统,其中语音邮件所有者可以记录自己的问候。

我想我可以这样做:

response.Say("Record your message");
response.Record(recordingStatusCallback: new Uri("http://<snip>.ngrok.io/voice/playmessage"));
response.Say("Are you happy with this recording?");
return TwiML(response);

然后在playmessage方法

[HttpPost]
public TwiMLResult PlayMessage()
{
string url = Request.Form["RecordingUrl"];
var vr = new VoiceResponse();
vr.Play(url: new Uri(url));
return TwiML(vr);
}

它在记录结束后挂起,然后PlayMessage方法被调用。

我尝试添加一个RecordingEventEnum。InProgress,像这样:

response.Record(recordingStatusCallback: new Uri("http://<snip>.ngrok.io/voice/playmessage"), recordingStatusCallbackEvent: new List<Record.RecordingEventEnum> {Record.RecordingEventEnum.InProgress });

和方法似乎被调用,但它不播放任何东西,只是挂起。

我还没有到所有的'按1如果你对你的录音满意,按2再试一次,等等…的东西。

我想我没有正确地调用'record'方法…有人知道魔法酱吗?

谢谢,

基因

使用action属性代替recordingStatusCallback:

response.Record(action: new Uri("http://<snip>.ngrok.io/voice/playmessage"));

From the doc:

action属性接受相对URL或绝对URL作为值。当记录完成后,Twilio将对包含以下参数的URL发出GET或POST请求。

(注意下面的参数)包括RecordingUrl.)

但要小心:

有一个例外:如果Twilio接收到一个空记录,它将不会向actionURL发出请求。当前调用流将继续使用当前TwiML文档中的下一个动词。

也就是说,你的response.Say("Are you happy with this recording?");应该是Play之后的PlayMessage()的一部分。

还可以看看从Twilio API文档中录制语音邮件的示例。

最新更新