Leitet den Twilio-Anruf an Voicemail um, wenn er nicht beantwortet wird

8

Ich würde gerne ein paar Tipps zu meinem Twilio-Setup für ein Problem, das ich versuche zu lösen.

Übersicht:

Jeder Benutzer in unserem System erhält eine Twilio-Telefonnummer, die er an jeden weitergeben kann, der sie kontaktiert.

Wenn personA einen Benutzer in unserem System (userB) über die bereitgestellte twilio-Telefonnummer kontaktiert, möchten wir sie mit userB verbinden, wenn sie verfügbar sind. Wenn BenutzerB nicht verfügbar ist, möchten wir PersonA auf Voicemail verweisen. Mit anderen Worten, wir möchten sicherstellen, dass wir die Voicemail-Funktion und die Voicemail selbst steuern können, damit wir sie in unserem System speichern können, anstatt die Voicemail auf dem Gerät von UserB zu lassen.

Aktuelle Lösung:

  • Der eingehende Anruf von PersonA wird einer Warteschlange hinzugefügt. Zur gleichen Zeit wählt das System BenutzerB aus.
  • UserB wird aufgefordert, 1 zu drücken, um den Anruf anzunehmen. Der Grund für die explizite Eingabe von UserB besteht darin, zu erkennen, ob UserB verfügbar ist, um den Anruf zu beantworten. (Wenn zum Beispiel der Anruf an UserB zu seiner persönlichen Voicemail geht, wird die explizite Zifferneingabe nicht stattfinden und uns sagen, dass sie nicht antworten kann.)
  • Wenn BenutzerB in einer bestimmten Zeit nicht 1 eingibt, wird PersonA an Voicemail weitergeleitet.
  • Wenn UserB 1 drückt, wird der Aufruf von UserB geändert (über ttilio rest api), um die Warteschlange zu wählen, in der sich PersonA befindet, um UserB und PersonA zu verbinden.

Problem mit der aktuellen Lösung:

Bei dieser Lösung wird die Kontrolle darüber, wann der Anruf von personA an Voicemail umgeleitet wird, durch das Ergebnis des Aufrufs von UserB gesteuert, was suboptimal erscheint. Zum Beispiel können wir möglicherweise BenutzerB überhaupt nicht aufrufen. In diesem Fall würde personA unbegrenzt in der Warteschlange bleiben.

In diesem Fall möchte ich gerne die Warteschlangenperson abfragen, die sich in der Warteschleife befindet, und den Anruf an Voicemail umleiten, wenn die Zeit in der Warteschlange größer als ein Schwellenwert ist. Es scheint jedoch nicht möglich zu sein, genau zu wissen, wie lange ein Anruf in einer Warteschlange unbeaufsichtigt ist, weil:

  • Der Status eines Anrufs in einer Warteschlange ist in-progress , selbst wenn der Anrufer Wartemusik abhört. Dies ist derselbe Status, als ob der Anruf von PersonA beantwortet worden wäre.

  • Wenn sich UserB in die Warteschlange einwählt, wird der Anruf nur dann beendet, wenn die überbrückten Parteien die Verbindung trennen, ohne den Anrufstatus von PersonA zu ändern, um anzuzeigen, dass sie mit UserB verbunden sind.

Fragen

  • Verstehe ich, warum ich die Anrufwarteschlange nicht abfragen kann, um Anrufe an Voicemail korrekt umzuleiten?
  • Soll ich stattdessen PersonA zu einer Konferenz aufrufen und, wenn BenutzerB verfügbar ist, ihn mit der Konferenz verbinden, in der sich PersonA befindet?
  • Wenn ich ein Konferenzsetup verwende, was wäre der einfachste Weg zu erkennen, wie lange PersonA in der Konferenz gewartet hat, um den Anruf von PersonA an Voicemail umzuleiten, wenn UserB der Konferenz nicht beitritt?
kajham 08.12.2015, 00:12
quelle

1 Antwort

11

Twilio Entwickler Evangelist hier.

Ich denke, Sie haben die Dinge hier mit der Warteschlange vielleicht ein wenig zu kompliziert gemacht. Sie können die Nachricht tatsächlich bereitstellen und innerhalb des ursprünglichen Anrufs sammeln, ohne sich selbst anrufen zu müssen und eventuell die beiden Anrufe zu verbinden.

So geht's:

Ihr eingehender Anruf TwiML sollte wie folgt aussehen:

%Vor%

Wenn Sie der <Number> Nomen eine URL geben, wird der TwiML-Inhalt dieser URL abgespielt, bevor die beiden Anrufe verbunden sind. Sie können <Gather> hier verwenden, um sicherzustellen, dass der Benutzer den Anruf angenommen hat und nicht sein eigenes Voicemail-System:

%Vor%

Der /gather_result muss herausfinden, ob eine Taste gedrückt wurde oder nicht. Wenn es gedrückt wurde, gehen wir zum Anruf über, was wir mit einer leeren Antwort machen können, da dies die Kontrolle zurück zum ursprünglichen <Dial> gibt. Wenn keine Zahl gedrückt wurde, legen wir dieses Ende auf, was bewirkt, dass das ursprüngliche <Dial> vervollständigt wird und auf sein action -Attribut verweist. (Ich bin mir nicht sicher, mit welcher Sprache Sie arbeiten, aber hier ist ein Ruby-Pseudo-Code)

%Vor%

/call_complete wird dann aufgerufen, sobald die Aktion <Dial> beendet ist. Wenn der Status des Anrufs an diesem Punkt "abgeschlossen" oder "beantwortet" ist, hat der Benutzer den Anruf angenommen und richtig auf das Flüstern reagiert und wir können auflegen. Wenn es etwas anderes ist, leiten wir unseren Anruf auf unseren Voicemail-Recorder um.

%Vor%

Dann kann Ihre Aktion /record_complete mit der Aufnahme-URL alles tun, was Sie wollen, und den Anruf beenden.

%Vor%

Dies kann alles mit Twimlets erreicht werden, wie beschrieben in diesem Blogbeitrag . Lass es mich wissen, wenn das überhaupt hilft.

    
philnash 09.12.2015, 11:02
quelle

Tags und Links