Modul mit automatischer DTMF-Eingabe

  • Hallo STARFACE-Community,


    ich habe folgendes Anliegen, welches ich mit dem Module Designer abbilden möchte.


    Für die Steuerung einer Türöffnung, haben wir bei einem Kunden ein Rocom Doormaster FTZ verbaut. Darüber lässt sich die Tür mit der Eingabe der Nebenstelle und eines darauffolgenden DTMF-Ton öffnen. Nun möchte der Kunden allerdings nicht immer erst die Nebenstelle wählen müssen und dann auch noch händisch die DTMF-Taste drücken.


    Daher war der Gedanke, diesen Prozess per Modul zu lösen. Sprich das Modul, soll als Funktionstaste auf ein Yealink hinterlegt werden und mit betätigen der Taste soll folgendes automatisch ausgeführt werden:


    -> Anwählen der Nebenstelle des Doormaster
    -> Nach Rufaufbau soll die Eingabe der DTMF-Ton erfolgen
    -> Anruf beenden/ auflegen


    Bis zum Anwählen des Doormaster klappt das auch soweit, allerdings bekomme ich es mit keiner meiner Versuche hin, dass die Taste "8" als DTMF automatisch übertragen wird.:(


    Folgendes habe ich unter anderem probiert:


    ----------------------------------------
    1. CallPhoneNumber ('21',",",'30',---)--> _success
    2. if(?(_succes))
    3. SendDTMF('8',")
    4. exit
    ----------------------------------------


    Ich habe auch schon probiert, "SendDTMF" als "delayed FORK" zu integrieren, oder auch mit "IsChannelOpen" eine Abfrage zu starten. Jedoch immer ohne Erfolg.


    Die Anforderungen an das Script, sollte eigentlich keine große Herausforderung sein.


    Habe ich hierbei etwas zu beachten? :confused: Über hilfreiche Informationen würde ich mich freuen!


    Vielen Dank!

  • Dein Beispiel funktioniert bei mir einwandfrei (6.4.2.19). Schau mal in's PBX-Log (/var/log/asterisk/full), müsste so aussehen:


    Rufnummer (79) wird angerufen:


    Das Endgerät (SIP/rawri) klingelt und nimmt das Gespräch an:

    Code
    [Jul 21 16:04:31] VERBOSE[21179][C-00000000] app_dial.c:     -- SIP/rawri-00000000 is ringing
    [Jul 21 16:04:35] VERBOSE[21179][C-00000000] app_dial.c:     -- SIP/rawri-00000000 answered Local/79@modules-00000000;2
    [Jul 21 16:04:31] VERBOSE[21179][C-00000000] app_dial.c:     -- SIP/rawri-00000000 is ringing
    [Jul 21 16:04:35] VERBOSE[21179][C-00000000] app_dial.c:     -- SIP/rawri-00000000 answered Local/79@modules-00000000;2


    DTMF wird in den Channel gespielt:

    Code
    [Jul 21 16:04:36] VERBOSE[21185][C-00000000] pbx.c:     -- Executing [79@standby:3] AGI("SIP/rawri-00000000", "agi:async,X-UCI_ORIGINATE: 0d99709d-0d3c-4e61-a6d7-54cbb4b2b458,,,") in new stack
    [Jul 21 16:04:36] VERBOSE[21185][C-00000000] res_agi.c:     -- AGI Script Executing Application: (SendDTMF) Options: (8)

    Viele Grüße
    Niklas


    - Ex STARFACE Support: 2014-2020 -

  • Vielen Dank für das Feedback!


    Ich habe nun die PBX Log-Datei geprüft.


    1. Rufnummer 79 wird angerufen:


    2. Dann nimmt die Gegenstelle das Gespräch an:


    Code
    [Jul 24 11:55:25] VERBOSE[24424][C-00000002] app_dial.c:     -- SIP/1336.ylnkt46-00000003 is ringing
    [Jul 24 11:55:29] VERBOSE[24424][C-00000002] app_dial.c:     -- SIP/1336.ylnkt46-00000003 answered SIP/R01.Yealink.Kai-00000002


    3. Aber dann kommt folgende Meldung:


    Code
    [Jul 24 11:55:29] VERBOSE[24424][C-00000002] res_rtp_asterisk.c:        > 0x7f7890018e30 -- Probation passed - setting RTP source address to 192.168.50.50:12684
    [Jul 24 11:55:29] VERBOSE[24424][C-00000002] res_rtp_asterisk.c:        > 0x7f78d41b3d30 -- Probation passed - setting RTP source address to 192.168.50.47:12422


    4. Und nach dem Auflegen:

    Code
    [Jul 24 12:40:21] VERBOSE[13489][C-00000006] pbx.c:     -- Executing [h@dialstart:1] NoOp("SIP/R01.Yealink.Kai-00000006", "HC 16") in new stack
    [Jul 24 12:40:21] VERBOSE[13489][C-00000006] pbx.c:     -- Executing [h@dialstart:2] Goto("SIP/R01.Yealink.Kai-00000006", "_exit_,0") in new stack
    [Jul 24 12:40:21] VERBOSE[13489][C-00000006] pbx.c:     -- Goto (dialstart,_exit_,0)
    [Jul 24 12:40:21] VERBOSE[13489][C-00000006] pbx.c:   == Spawn extension (dialstart, 79, 1) exited non-zero on 'SIP/R01.Yealink.Kai-00000006


    Was sagt mir die Meldung bei Position 4 und was kann ich ändern?


    Ein DTMF-Ton wird weiterhin nicht übertragen. :(


    Nachfolgend die Darstellung im Module Designer:
    Modul.PNG

  • Hallo Kai


    Bitte bau zwischen dem CallPhonenumber und dem DTMF mal noch einen Sleep von 1 Sekunde ein (Expert Mode) ==> System ==> Sleep(1);


    Sonst schickt der die DTMF ins leere, weil eventuell die RTP-Verbindung noch nicht steht.


    Und ich würde beim DTMF ausserdem beim SendDTMF Timeout auf 200 setzen, da zu schnelle DTMF Abfolgen von der Gegenstelle sonst falsch oder nicht vollständig interpretiert werden können.


    Ruf damit mal ein Telefon an, und nimm ab. Dann solltest du die DTMF Töne ja hören


    MfG


    Fabian

  • Heureka, jetzt habe ich es verstanden! Du rufst das Modul an, welches dann die Türsprechstelle anruft.
    So wie du das programmiert hast werden der ursprüngliche Anruf und der zweite Anruf verbunden.


    Ergo wird der Anruf an das Modul an die Türsprechstelle "weitergeleitet".


    Das passiert immer dann, wenn auf einen bestehenden Channel (Anruf) ein zweiter folgt.


    Probier mal folgendes:
    Z9GKGev.png

    Viele Grüße
    Niklas


    - Ex STARFACE Support: 2014-2020 -

  • Kurze Ergänzung:


    Ihr wisst aber, dass die Türe auch anrufen kann. Bei den Yealinks kann man dann auch direkt eine Taste mit DMTF-Code hinterlege (und sogar ein Kamerabild) so dass wenn jemand an der Türklingel direkt per Telefon informiert wird und mit nur einer Taste die Türe öffnen kann.
    Wenn ja ignoriert meinen Kommentar :D


    LG Marco

  • Hallo nochmal!


    erstmal msc_i22 danke für den Hinweis, ist jedoch in dem Szenario vom Kunden nicht ohne weiteres möglich.


    Wie oben beschrieben funktionierte die Funktionalität in unserer Testumgebung. Modul aktivieren -> Nebenstelle anrufen -> Nebenstelle erhält akustischen DTMF Ton.


    Dieses Modul haben wir dann vor kurzem beim Kunden auf der STARFACE installiert. Jedoch funktioniert es dort nicht wie gewünscht. Der DTMF Ton scheint nicht übertragen zu werden, obwohl es identisch zu der Programmierung in unserer Testumgebung ist. Einziger Unterschied ist, dass sich noch ein Patton SmartNode 4114 zwischen Anlage und dem Doormaster befindet. In unserer Testumgebung waren wir direkt am analogen Port der Compact dran.


    Nun die Frage - Ist es möglich, dass der Patton SmartNode Probleme bei der DTMF Übertragung verursachen kann? Bzw. der DTMF über den Patton verzögert, zu leise oder ähnliches übertragen wird, so dass dieser nicht vom Doormaster erkannt werden kann? Wenn ja, hat jemand eine Idee das zu korrigieren?


    Vielen Dank im Voraus! :)

  • Also wir haben ebenfalls ein Patton SmartNode 4114 zu unserer Türgegensprechanlage und hier klappen die DMTFs einwandfrei. Wie löst Ihr den dem DTMF Ton aus? Erzeugt Ihr überhaupt einen DMTF Ton oder schickt ihr nur den Code an das Patton und erwartet das dieser den erzeugt? Gibt hier ja verschiedene Verfahren.

Jetzt mitmachen!

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