Twilio收集/播放循环录音
本文关键字:循环 录音 播放 收集 Twilio | 更新日期: 2023-09-27 18:03:40
我正在使用WebAPI构建Twilio IVR,并遇到了一点障碍。我正在尝试通过录音循环,并在每个录音结束时提供按1删除录音的选项。
我在c# WebAPI实现中找不到任何例子,下面的方法不起作用,我不知道该怎么做。
What I know;
- 需要收集输入的数字
- 以某种方式将录制端返回给api,以知道要删除哪个记录。
public HttpResponseMessage Messages() {
string baseUrl = Url.Request.RequestUri.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped);
var twilio = new TwilioRestClient(_accountSid, _authToken);
var recordings = twilio.ListRecordings(null, DateTime.Today, null, null);
var twilioResponse = new TwilioResponse();
if (recordings != null && recordings.Recordings.Count > 0)
{
var msgCount = 1;
var msgTotal = recordings.Recordings.Count();
foreach (var recording in recordings.Recordings)
{
var caller = twilio.GetCall(recording.CallSid);
var callerNumber = Regex.Replace(caller.From, @"([0-9]{1})", "$1,");
var callDate = recording.DateCreated.ToString("dddd MMMM d");
var callTime = recording.DateCreated.ToString("h m t");
twilioResponse.Say(string.Format("Playing message {0} of {1}, from {2} on {3} at {4} M.", msgCount, msgTotal, callerNumber, callDate, callTime),
new { voice = "woman" });
var voiceFile = string.Format("{0}2010-04-01/Accounts/{1}/Recordings/{2}.mp3", twilio.BaseUrl, _accountSid, recording.Sid);
twilioResponse.Play(voiceFile);
//twilioResponse.BeginGather(new
// {
// action = baseUrl + "/api/Recording/Delete",
// numDigits = 1,
// });
//twilioResponse.Say("TO DELETE THIS MESSAGE PRESS 1");
//twilioResponse.EndGather();
msgCount++;
}
}
return Request.CreateResponse(HttpStatusCode.OK, twilioResponse.Element, Configuration.Formatters.XmlFormatter);
}
我以前使用过Twilio的API,但这对我来说是一个新的,我真的不知道这是否可能。PHP的例子就是这么做的也许我没注意到因为我应该用另一种方式来做
这里是Twilio的布道者。
你的看起来很接近。让我们看看在用户按下1的情况下传回Recording SID的情况,因为这相对容易通过使用您在Gather动词上设置的动作URL来为您保留一些状态:
action = baseUrl + "/api/Recording/Delete?recordingSid=" + recording.Sid;
现在,当用户按下1时,Twilio将向包含recordingSid参数的Action URL发出请求。
一旦你删除了录音,你可以重定向到你的消息端点继续收听更多的录音。为了跟踪你已经听过的录音,你可能需要在动作URL中传递一些额外的参数,你可以通过你的删除工作流并返回到听工作流。
希望对你有帮助。