我用twilio和d打出站电话。基本上是使用呼叫资源对一个号码创建一个呼叫。现在我要在通话过程中进行人工检测。呼叫是由人选择的,那么我需要将呼叫转发给我的系统代理。为此,我试图在“应答”状态调用中获得"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"));
}
发布于 2019-01-07 00:51:42
两位开发人员在这里传道。
如果要在调用连接时响应,则不希望在状态回调中这样做。相反,您希望使用在请求中设置的URL来创建调用。
当前,当您启动调用时,仍然使用演示TwiML响应。
var call = CallResource.Create(
url: new Uri("http://demo.twilio.com/docs/voice.xml"),
您需要更新该url
以指向应用程序。然后,当调用连接时,Twilio将向您的应用程序发出请求。此请求将包括所有调用参数,包括从应答机检测到的响应。因此,传入的请求主体拥有所需的一切,而不是进行API调用来检索调用状态。然后,可以使用这些参数来影响响应中的调用。例如:
public ActionResult Call(string AnsweredBy) {
if (AnsweredBy.ToLower() == "human")
{
// do something
}
else
{
// do something else
}
}
如果这有帮助的话请告诉我。
https://stackoverflow.com/questions/53878939
复制相似问题