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收集/播放循环录音

这里是Twilio的布道者。

你的看起来很接近。让我们看看在用户按下1的情况下传回Recording SID的情况,因为这相对容易通过使用您在Gather动词上设置的动作URL来为您保留一些状态:

action = baseUrl + "/api/Recording/Delete?recordingSid=" + recording.Sid;

现在,当用户按下1时,Twilio将向包含recordingSid参数的Action URL发出请求。

一旦你删除了录音,你可以重定向到你的消息端点继续收听更多的录音。为了跟踪你已经听过的录音,你可能需要在动作URL中传递一些额外的参数,你可以通过你的删除工作流并返回到听工作流。

希望对你有帮助。