使用AMD的Twilio Tailor呼出电话

时间:2018-12-21 03:50:30

标签: c# twilio amd twilio-api outbound

我正在将twilio amd与呼出电话一起使用。基本上使用callresource拨打一个号码来建立呼叫。现在,我想在通话过程中进行人为检测。电话被人接听了,然后我需要将呼叫转发给我的系统代理。因此,为此,我试图在“已答复”状态回叫中获取“ AnswerBy”值,但“ Answerby”始终为空。有人可以让我知道在通话过程中如何获取“ Answerby”,然后将其转接。下面是我正在使用的代码示例。

创建呼出电话

        string accountSid = WebConfigurationManager.AppSettings["AccountSid"];
        string authToken = WebConfigurationManager.AppSettings["AuthToken"];
        TwilioClient.Init(accountSid, authToken);
        var statusCallbackEvent = new List<string>();
        statusCallbackEvent.Add("initiated");
        statusCallbackEvent.Add("answered");

        var call = CallResource.Create(
            url: new Uri("http://demo.twilio.com/docs/voice.xml"),
            to: new Twilio.Types.PhoneNumber("+1XXXXXXXXXXXXX"),
            from: new Twilio.Types.PhoneNumber(WebConfigurationManager.AppSettings["FromNumber"]),
            method: Twilio.Http.HttpMethod.Get,
            machineDetection: "Enable",
            statusCallbackEvent: statusCallbackEvent,
            statusCallback: new Uri("https://68456c0d.ngrok.io/TwilioCallback/CallResponse"),
            statusCallbackMethod: Twilio.Http.HttpMethod.Get


        );

        var response = call.Sid;

已应答状态回调

string accountSid = WebConfigurationManager.AppSettings["AccountSid"];
        string authToken = WebConfigurationManager.AppSettings["AuthToken"]; ;
        TwilioClient.Init(accountSid, authToken);
        var response = new VoiceResponse();
        var call = CallResource.Fetch(pathSid: obj.CallSid);
        if (call.AnsweredBy?.ToLower() == "human")
        {
            //TO- DO
        }
        else
        {

            response.Say("hello world!", voice: "alice");
            response.Play(new Uri("http://demo.twilio.com/docs/classic.mp3"));
        }

1 个答案:

答案 0 :(得分:0)

这里是Twilio开发人员的传播者。

如果您想在呼叫连接时做出响应,则不想在状态回调中进行响应。相反,您想使用在请求中设置的URL来创建呼叫。

当前,当您开始通话时,您仍在使用演示TwiML response

    var call = CallResource.Create(
        url: new Uri("http://demo.twilio.com/docs/voice.xml"),

您需要更新url以指向您的应用程序。然后,当呼叫接通时,Twilio将向您的应用程序发出请求。该请求将包括all the call parameters,包括response from the answering machine detection。因此,传入请求主体无需进行API调用来检索呼叫状态,而是拥有您需要的一切。然后,您可以使用这些参数来影响响应中的呼叫。例如:

public ActionResult Call(string AnsweredBy) {
  if (AnsweredBy.ToLower() == "human")
  {
     // do something
  }
  else
  {
     // do something else
  }
}

让我知道是否有帮助。