Hallo,
ich möchte ein DTMF-Signal am Anfang eines aktiven Gespräch (eingehend & ausgehend) schicken.
Mit welchem Befehl finde ich heraus, ob ein Gespräch aktiv ist oder nicht?
Vielen Dank!
Viele Grüsse,
Fabian
Hallo,
ich möchte ein DTMF-Signal am Anfang eines aktiven Gespräch (eingehend & ausgehend) schicken.
Mit welchem Befehl finde ich heraus, ob ein Gespräch aktiv ist oder nicht?
Vielen Dank!
Viele Grüsse,
Fabian
Hallo Fabian
Ich nehme an, du willst das aus der Modulumgebung machen?
Ruft das Modul dort an, und sendet das DTMF, oder soll das Modul bei einem bestehenden Gespräch eingreifen?
MfG
Fabian
Hallo Fabian,
das Modul soll in ein bestehendes Gespräch eingreifen.
Ich habe mittlerweile einen Forumsbeitrag von Dir gefunden, der meine Lösung ist: CallState
(Link: https://support.starface.de/fo…State&highlight=CallState)
Somit hast Du bereits darauf erfolgreich geantwortet
Vielen Dank!
Viele Grüsse,
Fabian
Hallo Fabian,
leider habe ich mich dann doch zu früh gefreut, bzw. ein anderes Problem ist aufgetaucht.
Dank Deiner beiden Klassen/Module habe ich nun das Event "LINKED", also ein aktives Gespräch.
Dann schicke ich ein DTMF-Signal (Testweise *1) mittels SendDTMF. Da die Aufzeichnung nicht startet und ich auch im Hörer kein DTMF-Signal höre, scheint hier etwas nicht richtig zu funktionieren.
Ist der Einsatz von SendDTMF an dieser Stelle falsch? (siehe Bild)
Vielen Dank und viele Grüsse,
Fabian
Hallo Fabian
Deshalb wollte ich dich fragen, ob der Anruf durchs Modul ausgeführt wird.
Denn der SendDTMF Baustein Funktioniert nur wenn das Modul ein Teilnehmer des Anrufst ist.
Ansonsten musst du ihn via Asterisk CLI Absetzen (System ==> Execute).
Und zwar mit der Syntax:
SendDTMF(digits,timeout_ms,duration_ms,channel)
digits List of digits 0-9,*#,abcd
timeout_ms Amount of time, in milliseconds, to wait between tones. (defaults to .25s)
duration_ms Duration of each digit, in milliseconds
channel Channel where digits will be played
Dementsprechend müsstest du die Channel UUID an die im Fork ausgeführte Funktion weitergeben, und wenn es dort Linked ist den entsprechenden Execute Befehl absetzen.
MfG
Fabian
Habe ich so jetzt implementiert und lande im nächsten (und hoffentlich letzten) Problem:
Es funktioniert nicht und im Log steht: No such command 'SendDTMF('*1','300','500',UUID)'
So rufe ich Execute auf: Execute('Asterisk CLI Command','SendDTMF('*1','300','500',UUID)','1024')
Muß ich hier irgendetwas noch installieren?
Vielen Dank & Grüsse,
Fabian
Probier mal mit dem Asterisk Application Command.
Danke! Das habe ich bereits herausgefunden
Dennoch stört sich das SendDTMF an der falschen Übergabe des Channels.
Mittels String.Append habe ich den SendDTMF-Befehl mit Parameter zusammengebastelt. Die UUID übergebe ich wie Fabian beschrieben hat, aber im log steht bei allen Tests & Versuchen "No active channel exists. Execute as Asterisk Application Command cannot operate without an active channel".
Okay, wie ermittle ich nun den aktiven Channel den SendDTMF möchte? GetCallUUID() ist es wohl leider nicht.
Vielen Dank für Eure Geduld!
Viele Grüsse,
Fabian
Hmm scheint wohl, als ob SendDTMF schon als ApplicationCommand absetzen müsste, aber mit der möglichkeit eine eigene UUID mitzugeben.
Ob das dann funktionieren würde, kann ich jedoch noch nicht sagen.
Ich werde mal einen Test bauen.
MfG
Fabian
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!