DTMF in aktives Gespräch senden

  • 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,


    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)


    02-10-_2020_12-15-12.jpg


    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

  • 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

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!