twilio - 有人知道如何使用 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 });
并且方法 APPEARS 被调用,但它不播放任何东西,只是挂断。
我还没有得到所有的“如果您对录音感到满意,请按 1,请按 2 再试一次,等等...”的所有内容。
我想我没有正确调用“记录”方法……有人知道魔术酱吗?
谢谢,
基因
解决方案
使用action
属性而不是recordingStatusCallback
:
response.Record(action: new Uri("http://<snip>.ngrok.io/voice/playmessage"));
从文档:
该
action
属性采用相对或绝对 URL 作为值。录制完成后,Twilio 将向该 URL 发出 GET 或 POST 请求,包括以下参数。
(注意“下面的参数”包括RecordingUrl
。)
不过要小心:
有一个例外:如果 Twilio 接收到空记录,它不会向
action
URL 发出请求。当前调用流程将继续使用当前 TwiML 文档中的下一个动词。
话虽这么说,你response.Say("Are you happy with this recording?");
应该是PlayMessage()
后的一部分Play
。
还可以查看示例Record a voicemail from the Twilio API doc。
推荐阅读
- java - HashMap 和列表
- django - 如何将属性传递给 Django 中的第 3 方 FormView?
- java - 如何将 Dokka 添加到 Android 项目而无需在依赖项部分添加额外的类路径?
- javascript - Babel 找不到模块核心/splash Node.js
- ios - 具有多个单元格模板的 CollectionView(使用未声明的类型,
在这种情况下类型查找不明确) - laravel - Laravel Mix - 不能在模板中使用 jQuery
- matlab - 在 MATLAB 中将零行插入矩阵的有效方法
- c# - PKCS#11 在本地主机上工作,但它不在实时 Web 服务器(客户端计算机)上工作
- javascript - 使用 JavaScript 向下滚动 div 时平滑滚动,向上滚动又卡又慢
- ios - 如何从 JSON 响应中检索特定数据?