2016-05-12 9 views
0

Ich habe einen Anwendungsfall, wo jemand meine Twilio-Nummer anruft und Twilio dann versucht, den Anrufer mit einem Agenten zu verbinden. Wenn der Agent # auftaucht, benutze ich den ScreenCall-Prozess, um sicherzustellen, dass es ein Mensch ist und sie eine Ziffer drücken müssen. Das Problem ist, sobald ich in den ScreenCall-Prozess gehe, funktioniert alles auf der Agentenseite, aber wenn sie eine Nummer drücken, ist der Anrufer nie mit ihnen verbunden.ScreenCall Prozess verbindet den Anruf nicht

Was fehlt mir? Sobald ich den Bildschirmanruf entferne, werden der Anrufer und der Agent verbunden, sobald der Agent antwortet.

public ActionResult CallAgents(string From, string To, string CallSid) 
    { 
     var response = "<Response><Dial action = '" + Url.Action("EndCall", "Call") + "'> 
<Number action = '" + Url.Action("ScreenCall", "Call") + "'>1231231234</Number></Dial></Response>"; 

     return new TwiMLResult(response); 
    } 

public ActionResult ScreenCall(string From, string To, string CallSid) 
    { 
     var response = new TwilioResponse(); 

     response.BeginGather(new { action = "AnswerCall", numDigits = 1 }) 
      .Say("Press any key to accept the call.") 
      .EndGather(); 


     return new TwiMLResult(response); 
    } 

public ActionResult AnswerCall(string From, string To, string CallSid) 
    { 
     var response = new TwilioResponse().Say("Thank you, you are now being connected.").Record(); 

     return new TwiMLResult(response); 
    } 

Antwort

0

response.BeginGather (new {action = "AnswerCall", numDigits = 1})

AnswerCall in dem obigen erscheint einfach eine Zeichenkette zu sein. Die action attribute von <Gather> erwartet eine absolute oder relative URL als Wert. Wenn der Agent die Eingabe der Ziffern beendet hat, wird Twilio eine GET- oder POST-Anfrage an diese URL senden. Nachdem Sie diese Anfrage gestellt haben, wird Twilio den aktuellen Anruf mit dem in Ihrer Antwort erhaltenen TwiML fortsetzen.

Sie können auch einen Code kompletten Call Screening Beispiel in diesem Tutorial finden Sie unter: https://www.twilio.com/docs/tutorials/walkthrough/ivr-screening/csharp/mvc#4

Der dort Schnipsel, wenn ein Agent schirmt das Gespräch wie folgt aussieht:

// POST: Agent/ScreenCall 
[HttpPost] 
public ActionResult ScreenCall(string from) 
{ 
    var response = new TwilioResponse(); 
    var incomingCallMessage = "You have an incoming call from: " + 
           SpelledPhoneNumber(from); 
    response.BeginGather(new {numDigits = 1, action = Url.Action("ConnectMessage")}) 
     .Say(incomingCallMessage) 
     .Say("Press any key to accept") 
     .EndGather(); 

    response.Say("Sorry. Did not get your response"); 
    response.Hangup(); 

    return TwiML(response); 
} 

// GET: Agent/ConnectMessage 
public ActionResult ConnectMessage() 
{ 
    return TwiML(new TwilioResponse() 
     .Say("Connecting you now...")); 
} 
+0

ich versuchte Schale, aber kein Veränderung. – ToddB

+0

Das Problem wurde gefunden. Es bricht zusammen, geben Sie einen "Record" -Befehl, sobald der screenCall verarbeitet hat und jemand den Anruf annimmt. Finde es heraus, indem du auf das zurückgriffen, was die Probe tat, was ich nicht war. – ToddB

Verwandte Themen