DTFM Codes mitschneiden

  • Hi, Ich finde in Forensuche nichts um DTMF Codes mit zuschneiden.


    Die Funktion Send DTMF gibt es.
    Aber eine ReadDTMF habe ich nicht gefunden.
    Ich habe einen Forum thread gefunden, wo jeamand schreibt das er es hinbekommen hat, aber leider nicht die Lösung gepostet.


    Vorhaben, wenn an der Türklingel die Taste auf dem Telefon Opendoor gedrückt wird (DTMF-Code wird gesendet), mochte ich das mit Starface in einem Modul auswerten, um dann darauf weitere Aktionen durchzuführen.
    Vielen Dank!


    Lg Bonkersdeluxe

  • Hallo Bonkersdeluxe


    Um DTMF Einzulesen, musst du ein PlaybackResourceFile (Im Tab Audio) ausführen.


    Dort kannst du definieren, wie lange du warten willst, und wie viele DTMF-Töne ass du erwartest.


    Du musst aber einen Text abspielen, welchen du via Resources hochgeladen hast. (Hochladen, danach den Haken bei Asterisk Sound File Drücken ==> Convert).
    (Du kannst auch einfach eine Leere Wav-Datei hochladen, wenn du keinen Text brauchst)


    MfG


    Fabian

  • Hi Fabian,
    geht das auch schon wenn das Telefonat noch gar nicht zustande gekommen ist?
    Türklingel wird gedrückt ==> Telefon klingelt.
    Auf dem Display des Telefons steht open Door.
    Open Door wird gedrückt. DTMF Code ausgelöst.
    Und genau wenn das passiert möchte ich auswerten und einen http://request durchführen


    Danke Dir
    Lg Bonkersdeluxe

  • Hi,
    Habs ausprobiert, beim Klingeltaster drücken, nimmt die Klingel den Playresource an und wartet auf den DTMF Code, erst nach dem Timeout verbindet Sie mit dem Telefon.
    Gibts eine Möglichkeit DTMF Codes mit zuschneiden. So das ich nicht auf Eingabe warte sondern, einfach mitgeteilt bekomme.


    Beispiel:


    Ich rufe die T-Online Hotline an.
    Drücke die 1 für Privatkunde
    Drücke die 3 für technische Hotline.



    Nun wollte ich wenn DTMF Code 3 gedrückt wird die Leitung getrennt wird.


    Das Beispiel hat absolut keinen Sinn, nur vielleicht verdeutlicht das was ich möchte.


    Vielen Dank!


    Lg Bonkersdeluxe

  • Hallo Bonkers


    Zitat

    Gibts eine Möglichkeit DTMF Codes mit zuschneiden. So das ich nicht auf Eingabe warte sondern, einfach mitgeteilt bekomme.


    Das ist leider der Einzige weg.
    Es gibt keine Möglichkeit aus dem Modulsystem bei einem aktiven Gespräch zwischen 2 Usern die DTMF mitzuschneiden.
    Die einzigen Makros, die dir dort zur Verfügung stehen sind aktive Call-Macros.


    MfG


    Fabian

  • Hi,
    Ok. Dankeschön, also muss ich mir was anderes überlegen.
    Vielleicht bekomme ich diese aus den Logs raus...
    Denn die Module Library unterstützt ja File Operationen.
    jetzt nur wissen wie Log Datei heißt und wo sie liegt und ob ich diese Öffnen kann.
    Denn auf der Appilance gibts anscheinen keinen ssh Zugang. Bzw ich kenne das root Kennwort nicht.


    Ich versuche es mit dem Artikel wegen dem root Passwort :
    https://knowledge.starface.de/…age.action?pageId=6128203


    Lg Bonkersdeluxe

  • Hallo Bonkers


    Schau mal in die Knowledge Base:


    Passwort für den root-User



    MfG


    Fabian

  • Hi,


    Cool Dankeschön.
    Bin drauf. Schaue mich gerade im Verzeichnis /var/log/starface um.
    Ich suche die Datei in der Diese Log Einträge zu finden sind.


    [Oct 24 07:55:52] DTMF[32190][C-0000005c] channel.c: DTMF begin '2' received on SIP/1025.ylnkt48s-000000bc
    [Oct 24 07:55:52] DTMF[32190][C-0000005c] channel.c: DTMF begin passthrough '2' on SIP/1025.ylnkt48s-000000bc
    [Oct 24 07:55:52] DTMF[32190][C-0000005c] channel.c: DTMF end '2' received on SIP/1025.ylnkt48s-000000bc, duration 90 ms


    Danke Dir
    Lg Bonkerdeluxe

  • So, ich habs fast soweit, allerings noch ein kleines Problem.
    Und zwar lass ich mein modul mittels timer jede Sekunde wiederholen.
    nun möchte ich aber vorher noch eine Abfrage das nur bei folgendender Nummer das suchen nacht DTMF und bei erfolg ereignis ausgelöst wird.
    Unter call processing die funktion und im Timer auch.


    Funktioniert leider nicht. Das Timing zwischen beiden passt nicht.
    Zweiter Versuch, Timer raus, eine Schleife eingebaut bis der DTMF gefunden wird.
    Allerdings wird der Ruf garnicht aufgebaut, da die Schleife das wählen an sich blockiert.
    Gibt es ne Funktion alla Sleep die aber den hintergrundprocess weiterlaufen lässt.
    Denn ich will ja während das telefon klingelt wissen wer ist der Angerufe und das zwar permanent, da meine Funktion in einem Timer läuft.
    So ne art Globale Variable gibts leider nicht. Dann hätte ich im call processing aufruf die nummer in eine globale Variable gespeichert und nachdem der DTFM Code gefunden wurde die Variable wieder auf leer gesetzt.


    Kurz gesagt : wie kann man schleifen die auf was Warten bauen ohne den Ablauf zu blockieren? Wenn nicht geht wie mach ich das dann?
    Denn lass ich die abfrage nach der Nummer raus. Funktioniert mein ermitteln des DTMF Codes hervorragend.
    Aber durch die Abfrage will ich verhindern, das jeder diesen DTFM Code auf seinem Telefon absetzen kann.
    Dankeschön


    Lg Bonkersdeluxe

  • Hallo Bonker


    Du musst den Code für das Log in eine separate Funktion legen.


    Diese kannst du dann mit Fork (Expert Mode ==> Basic Components) ausführen.


    Fork führt eine Funktion in einem Asynchronen Thread aus.


    MfG


    Fabian

  • Hi,


    Danke Dir. Das klappt. ;)
    Nur wie kann ich einen Thread wieder beenden?
    Telefonat ist aufgelegt. Die call Processing Funktion ist durch. Nur der Thread läuft noch.
    Denn die funktion isChannelOpen funktioniert im Thread anscheinend nicht...
    Ich kann dem Fork eine parameter übergeben. Aber das ist ja eine kopie und kein pointer.
    Bräuchte da nochmals hilfe


    *edit*


    Oder anders gesagt wie kann ich im thread auf Callobjekte zugreifen?
    Ich habe versucht die UUID als Parameter zu übergeben, um dann mit UCI 3.0 call.getcallstate die Daten abzugreifen.
    Leider ist call state dann null



    Ich expeirmentire gerade mit deiner Library
    https://support.starface.de/fo…?5803-Spielzeug-CallState
    Mal sehn ob ich damit was zu rande bekomme


    *edit*


    Vielen Dank!


    Lg Bonkersdeluxe

  • Hi,


    Danke für die Library, das hat schon mal geklappt in einem Testmodul. Nun nur noch mit meinem Modul kombinieren.
    Also gibt es noch eine API mit der man in Java drauf zugreifen kann.
    Hätte Ich damit auch die DTMF abfrage gestalten können...
    Nun zu DTMF-Erkennung parse ich jetzt die Log File...


    Dankeschön!


    Lg Bonkersdeluxe

Jetzt mitmachen!

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