dtmfbox (AB/CB/CT VoIP/ISDN/Analog)

bodega

Aktives Mitglied
Mitglied seit
6 Jun 2006
Beiträge
1,980
Punkte für Reaktionen
7
Punkte
0
dtmfbox v0.5.0 (Freetz/USB/Standalone)
http://www.ip-phone-forum.de/showpost.php?p=1277467&postcount=1593

http://dtmfbox.v3v.de

About

Die dtmfbox ist eine Softswitch Applikation für SIP und CAPI (VoIP/ISDN).

Bei eingehenden und ausgehenden Verbindungen wird ein Ereignis an ein Skript (Shellskript/Batch) oder Plugin übergeben. Innerhalb des Skriptes kann man die Verbindung annehmen, eine Wave-Datei abspielen, DTMF Zeichen auswerten, das Gespräch aufzeichnen, usw..

Die dtmfbox wird einmal als Daemon gestartet und kann bei weiteren Aufrufen über Parameter gesteuert werden.

Ein optionaler Registrar-Modus ist ebenfalls integriert. Mit einem SIP-Client kann man sich an die dtmfbox anmelden und über die Accounts raustelefonieren. Eingehende Gespräche werden ebenfalls signalisiert.

Die dtmfbox ist Open Source und kann unter Windows und Linux kompiliert werden. Die Verwendung des Programmes geschieht auf eigene Gefahr (Lizenz).

Features
  • Internes (Sprach-)Menü
  • Integrierter SIP-Server
  • Anrufbeantworter
    • Abfragbar per PIN (extern) --> internes Menü.
    • Aufnahmen im Wave-Format (8khz, 16bit, Mono)
    • Aufnahmen auf USB/FTP ablegen
    • Aufnahmen per eMail versenden
    • Ansagen und Endansagen lassen sich auf USB oder Webserver ablegen
    • Aufnahme- und Abhebezeit einstellbar
    • Aufnahmemodus (Sofort, nach Ansage, keine Aufnahme)
    • Abhebemodus (nur unbekannte Anrufer, Alle Anrufer, ...)
    • Schedule
  • DTMF-Befehle
    • Es können bis 50 individuelle Skripts hinterlegt werden (WOL, Reboot, Informationen, etc.).
    • Pin-Abfrage (optional)
  • Callback & Callthrough
    • Individuelle Callback/Callthrough-Regeln einstellbar, auch für mehrere Nummern.
    • Regular Expressions können für den Rückruf verwendet werden
    • Pin-Abfrage (optional)
  • Rückwärtssuche (für ISDN/S0-Bus)
    • Rückwärtssuche über benutzerdefinierte Funktion & dasOertliche.de mit Anzeige auf Telefondisplay
  • Anti-Callcenter
    • Unbekannte Anrufer auffordern, Telefonnummer einzugeben und mit Raute zu bestätigen
    • Weiterleitung auf SIP-Uri oder MSN
  • Sonstiges
    • IP Abfrage
    • Uptime
    • Uhrzeit
    • Checkmaild
    • Wetter(podcast)
    • Radio-MP3 Stream
  • Benutzerdefinierte Skripts
    • Änderungen der eMail-Nachricht
    • bestimmte Anrufer abweisen
    • WOC
    • usw...
  • (Sprach-)Menü anpassbar
  • Alle Einstellungen können über das WebIf vorgenommen werden
  • Dynamisches Webinterface. Neue Einstellungen lassen sich über den "Text-Editor" hinzufügen.
  • Java WebPhone
  • Hilfe-Button im WebIf ;)

Installation
  • Freetz
    Code:
    make menuconfig  [I](und dtmfbox auswählen)[/I]
    make
    Um das Paket komplett neu zu kompilieren:
    Code:
    make pjproject-dirclean
    make dtmfbox-dirclean
    make dtmfbox-precompiled
  • USB
    Code:
    cd /var/media/ftp/usb-pfad
    wget http://dtmfbox.v3v.de/dl/dtmfbox-0.5.0_mipsel.tar
    tar xv -f dtmfbox-0.5.0_mipsel.tar
    cd dtmfbox-0.5.0
    ./rc.dtmfbox install usb /var/media/ftp/usb-pfad/dtmfbox-0.5.0
    ./rc.dtmfbox start_httpd
    Das Webinterface ist unter http://fritz.box:6767 zu erreichen.

    Falls eine ältere dtmfbox-Version existiert, diese vorher deinstallieren! Entweder über das Webinterface oder per Konsole:
    Code:
    cd /var/dtmfbox
    ./rc.dtmfbox uninstall
  • Standalone
    Code:
    cd /var
    wget http://fritz.v3v.de/dtmfbox/dtmfbox-dl/0.5.0/rc.dtmfbox
    chmod +x rc.dtmfbox
    ./rc.dtmfbox install ram
    ./rc.dtmfbox start_httpd
    Das Webinterface ist unter http://fritz.box:6767 zu erreichen.

    Die Deinstallation geschieht entweder über das Webinterface oder über die Konsole (siehe auch USB).

Ältere Versionen

dtmfbox v0.5.0_rc3 (Freetz/USB/Standalone):
http://www.ip-phone-forum.de/showpost.php?p=1255882&postcount=1552

dtmfbox v0.5.0_rc2:
http://www.ip-phone-forum.de/showpost.php?p=1244591&postcount=1534

dtmfbox v0.5.0_rc1:
http://www.ip-phone-forum.de/showpost.php?p=1229426&postcount=1516

dtmfbox v0.5.0_beta1:
http://www.ip-phone-forum.de/showpost.php?p=1136032&postcount=1295

dtmfbox v0.4.1_rc4_6 (usb + standalone):
http://www.ip-phone-forum.de/showpost.php?p=1069483&postcount=1056

dtmfbox v0.4.1_rc3_5 (usb + standalone):
http://www.ip-phone-forum.de/showpost.php?p=1057878&postcount=998

dtmfbox v0.4.1_rc2_4 (usb + standalone):
http://www.ip-phone-forum.de/showpost.php?p=1050089&postcount=976

dtmfbox v0.4.0_1 (usb + standalone):
http://www.ip-phone-forum.de/showpost.php?p=1034609&postcount=884

dtmfbox v0.4.0-beta6 (usb):
http://www.ip-phone-forum.de/showpost.php?p=989864&postcount=823

dtmfbox v0.3.9 (usb + standalone):
http://www.ip-phone-forum.de/showthread.php?p=895394#post895394

dtmfbox v0.3.8 (usb + dsmod + standalone):
http://www.ip-phone-forum.de/showpost.php?p=878155&postcount=348


dtmfbox v0.3.7 (dsmod addon + standalone):
http://www.ip-phone-forum.de/showpost.php?p=869107&postcount=301

dtmfbox v0.3.6 (dsmod addon):
http://www.ip-phone-forum.de/showpost.php?p=861192&postcount=277

dtmfbox v0.3.5 (dsmod addon + standalone):
http://www.ip-phone-forum.de/showpost.php?p=845918&postcount=212

dtmfbox v0.3.4 (dsmod addon):
http://www.ip-phone-forum.de/showpost.php?p=841134&postcount=178

dtmfbox v0.3.3 (dsmod addon):
http://www.ip-phone-forum.de/showpost.php?p=831682&postcount=133

dtmfbox v0.3.1 -beta-:
http://www.ip-phone-forum.de/showpost.php?p=824019&postcount=108

dtmfbox v0.3.0 -beta-:
http://www.ip-phone-forum.de/showpost.php?p=815455&postcount=87

dtmfbox v0.2:
http://www.ip-phone-forum.de/showpost.php?p=713379&postcount=5
 
Zuletzt bearbeitet:
Zwar kenne ich mich damit nicht aus, doch ich wäre an einer Lösung interessiert. Und unterstütze dieses Vorhaben!
 
Soweit mir bekannt ist sind (FBox 7050):
- Controller 1 und 2 der Externe ISDN-Bus.
- Controller 3 der interne ISDN-Bus
- Controller 4 der Analoge Amtsanschluß
- Controller 5 Voip (dieser wird aber über das Netzwerk-CAPI nicht freigegeben)
 
Danke für die Info.

Dann macht der Anruf von Ctrl 3 ja Sinn (bzw. Ctrl 4, wenn man Analog hat)...

Warum Ctrl 1 und 2 die Leitung beim abheben blocken, muss dann noch geprüft werden.
 
DTMF-BOX v0.2

Kurz zusammengefasst:

Die DTMF-BOX ist ein Tool, mit dem verschiedene Steuerungsaufgaben über Telefontastatur ausgeführt werden können (per DTMF-Signal).

Die DTMF-Zeichenfolgen werden an ein Skript übergeben, welches individuell anpassbar ist:

So kann man Beispielsweise über "100#" den PC über etherwake aufwecken, mit "101#" die eMail-Anzahl von CheckMailD abfragen, uvm...
Zur Signalisierung kann eine Sounddatei abgespielt (-play [file]), bzw. auch aufgezeichnet werden (-record [file]).
Mithilfe von espeak (text-to-speech) kann auch ein Text in eine Sounddatei umgewandelt werden.

Das Programm wurde unter ISDN getestet (FB-7170) und greift auf die CAPI20 Schnittstelle zurück.

Code:
./dtmfbox --help
-------------------------------------------------------------------------------
 DTMF-BOX v0.2
-------------------------------------------------------------------------------
 dtmfbox [CONTROLLER] [MSN] [OPTIONS]

 [CONTROLLER]               Controller-Nummer (von 1 bis x)
 [MSN]                      MSN, welche verwendet werden soll

 [OPTIONS]
 -call [number]             Call-Mode   (Nummer wählen)
 -listen                    Listen-Mode (bei jedem Anruf abheben)
 -listen [number]           Listen-Mode (nur bei bestimmter Nummer abheben)
 -listen script             Listen-Mode (per Skript abheben)

 -script [scriptfile]       Skriptdatei (Parameter: $1 = DTMF-Signal)
 -delimiter [(0-9,"#","*")] Trennzeichen verwenden
 -daemonize                 Als Daemon starten
 -workdir [directory]       Arbeitsverzeichnis
-------------------------------------------------------------------------------
 dtmfbox 1 12345 -call 54321 -script /var/myscript.sh -delimiter "#"
 dtmfbox 1 12345 -listen -daemonize -script /var/myscript.sh -delimiter "*"
-------------------------------------------------------------------------------

Steuerungs-Parameter (wenn bereits gestartet):
Code:
-------------------------------------------------------------------------------
 DTMF-BOX v0.2 - (PID 17197)
-------------------------------------------------------------------------------
 dtmfbox [ACTIONS]

 [ACTIONS]
 -hook up                   Abheben
 -hook down                 Auflegen
 -play [soundfile]          Sounddatei ausgeben
 -record [soundfile]        Sounddatei aufnehmen
 -loop [1-x]                Wiederholungen (von -play [soundfile])
 -stop play                 Ausgabe stoppen
 -stop record               Aufnahme stoppen
 -stop daemon               Programm beenden
-------------------------------------------------------------------------------

z.B.:
./dtmfbox 1 12345 -call 016012345 -script /var/tmp/dtmf.sh -delimiter "#"

(MSN 12345 ruft 016012345 an und übergibt DTMF-Signale an /var/tmp/dtmf.sh)

Wichtig hier:
volle Pfadangabe beim Skript und das Trennzeichen in Anführungsstriche


Im Archiv befinden sich unter anderem drei Beispielskripte (simple.sh, dtmf.sh, answering-machine.sh) und eine Sounddatei (die nicht so schön ist ;))

Die Skripte müssten zwar ein wenig angepasst werden, aber das dürfte kein Problem sein.

EDIT:
Text-To-Speech (espeak): http://www.ip-phone-forum.de/showpost.php?p=766237&postcount=51
 

Anhänge

  • dtmfbox-0.2.tar.gz
    44.4 KB · Aufrufe: 228
Zuletzt bearbeitet:
Nur für mein Verständnis:

Controller 3 ist der interne S0 bei der 7050/5050/7170.
Wie willst Du dort ein Handy unter der Nummer 016012345 anrufen??

Ansosnteneine MSN ist immer OHNE Vorwahl, das sollte auch in den Beispielen so sein, da i.d.R: eingehende Rufe nämlich immer mit der MSN als Called Party Number kommen (OHNE Vorwahl)
 
Da hast du vollkommend recht. Ist geändert. Es war gestern auch etwas spät ;)

Wie gesagt, dass mit den Controllern hab ich mir nicht näher angeschaut. Ich verwende die Sache auch nur intern (ruf meine eigene MSN an / Listen auf Ctrl 1).

EDIT:
hieße also, dass ich nur interne MSNs mit Ctrl 3 erreiche?
 
Zuletzt bearbeitet:
stsoft schrieb:
Soweit mir bekannt ist sind (FBox 7050):
- Controller 5 Voip (dieser wird aber über das Netzwerk-CAPI nicht freigegeben)


Heißt das, dass man keine Internet-Rufnummer als Nummer verwenden kann?
 
Ich verwende das CAPI20 Modul von AVM, welches statisch gelinkt wurde.
Ob diese Modul Gebrauch vom Remote-CAPI macht oder direkt drauf zugreift, kann ich nicht sagen.

Controller 5 (VoIP) wird auch gefunden und kann registriert werden.

Das müsste mal einer testen, da ich kein VoIP hab :(
 
Ich habe einen ANALOGEN Telfonanschluss + Internettelefonie. Ich möchte mit meinem Handy diese Internetrufnummer anrufen, diese soll dann den Anruf annehmen, usw.

Wie würde dazu der Befehl aussehen? Ist das überhaupt möglich?
 
Ob das Möglich ist, kann ich nicht sagen, aber probier mal folgendes:

Code:
./dtmfbox 5 [INETRUFNR] -listen -script /var/tmp/woauchimmer/dtmf.sh -delimiter "#"
Wenn Ctrl 5 zum Voip gehört, müsste es in der "Therorie" funktionieren.

um auf den analogen Anschluss zu lauschen:
Code:
./dtmfbox 4 [ANALOGNR] -listen -script /var/tmp/woauchimmer/dtmf.sh -delimiter "#"

Interessant zu wissen wäre, ob sich das Programm sofort verabschiedet oder "nur" nicht rangeht...

Wie gesagt, leider kann ich VoIP und Analog nicht testen :( ...
 
Zuletzt bearbeitet:
Mit der Internetrufnummer geht es bisher soweit, dass der Anruf angenommen wird. Nach dem annehmen kann ich leider keinen BEEP-Ton oder sonstiges machen. Außerdem wird die Leitung nicht mehr freigegeben. Das Script reagiert auf das Abnehmen des Hörers und auf Rufnummerwahlen, indem er diese blockiert.
 
Es hat sich nichts geändert.

Hier ein kurzer Auszug von meinem TELNET-PROTOKOLL mit Kommentaren:

# cd /vaa r/flash/dtmfbpx  ox-0.1
# ./dtmfbox 5 [INTERNETRUFNUMMER] -listen [RUFNUMMER] -script /var/flash/dtmfbox-0.1/dtmf.sh -delimiter "#"
-------------------------------------------------------------------------------
DTMF-BOX v0.1
-------------------------------------------------------------------------------
5 Controller gefunden (10 B-Kanäle)!
CAPI erfolgreich initialisiert!
Controller Nr. 5!
Antworte bei [RUFNUMMER] auf Anschluss [INTERNETRUFNUMMER]...

// In der TELNET-Konsole tut sich nichts mehr...
// Anruf der INTERNETRUFNUMMER

Anruf von ¤[RUFNUMMER] an ... abheben! // 100# Am Handy eingegeben; nur ein gewöhnliches rauschen und leises sanftes knacksen; keine Spur von einem BEEEP!!
telefon: SIGCHLD received!
Aufgelegt!

Anruf von ¤0 an ... ignorieren! //Telefonhörer abnehmen #Ein beepen (Standardbeepen), als würde ich irgendwo anrufen
Aufgelegt!

Anruf von ¤0 an ... ignorieren! //Telefonhörer abnehmen #Ein beepen (Standardbeepen), als würde ich irgendwo anrufen
Aufgelegt!

Anruf von ¤0 an ... ignorieren! //Rufnummer wählen - Telefonhörer abnehmen #Kurzes beepen, Rufnummer wird gewählt (in dem Fall das Handy), Standardbeepen,..., (HANDY KLINGELT JEDOCH NICHT!!!)
Aufgelegt!

//Über die Telnetkonsole lassen sich keine ausführbaren Befehlen mehr eingeben wie zb. "exit" o.Ä.

Was meint ihr dazu?
 
Ob vieleicht aus genau diesem Grund der 5. Controller auch nicht per NET-Capi freigegeben wird???
 
@stsoft:
Ich greif eigentlich nicht per Remote auf die CAPI zu. Oder seh ich das falsch?

@BoardPimp:
Zumindest erkennt das Programm den Anruf und erkennt auch das Auflegen.

Leider ist's für mich schwer an der Stelle zu testen, da ich nicht die nötige Hardware habe. Die DTMF Signale werden anscheinend nicht erkannt deswegen fehlt auch die Ausgabe des BEEPs.

Ich könnte noch versuchen, das es per Analog funktioniert.

Das Programm kannst du mit CTRL+C beenden.
 
Remote zugriff oder nicht ist doch egal, wenn der 5. Controller eben nicht 100% CAPI-Konform ist.

Und desshalb wird er eben auch nicht per Remote freigegeben.

Und deshalb wird man ihn auch auf der Box evt. nicht wirklich mit anderen Anwendungen nutzen können!
 
Kann natürlich sein, dass er wegen anderen Gründen per Remote nicht freigegeben wurde.
Das er nicht CAPI-Konform ist, ist was ganz Anderes (schon klar, CAPI wurde damals für ISDN entwickelt).

Kernel-Mode Programmierung würd ich jetzt dafür nicht anfangen und wenn es keine vernünftige User-Mode Schnittstelle gibt, macht's da eventuell keinen Sinn mit Voip weiter zu testen.

Bleibt also Analog und ISDN als Schnittstelle.
 
DTMF-Box

Hallo bodega,

ich bin begeistert von Deiner der "dtmfbox".
Mit den Controllern der Fritz!Box kenne ich mich allerdings weniger aus.
Da kann ich leider nichts dazu beitragen.
Ich habe Deine "dtmfbox" in den boot-Script meiner Fritz!Box eingebaut.
Vorher habe ich die "calllog" benutzt, um einen PC per WakeOnCall über meinen ISDN-Anschluss hochzufahren. Um einen weiteren 2. PC unabhängig vom 1. ferngesteuert hochfahren zu können hätte ich eine zusätzliche MSN hierfür opfern müssen. Aber mit der "dtmfbox" genügt eine MSN für verschiede Steuerungsaufgaben.
Mich würde diesbezüglich noch folgendes interessieren.
- Welches Format hat die Datei "beep.711".
- Hat das Format etwas mit G.711 zu tun? Ist es möglich auch andere Töne (oder gesprochener Text) einzustellen und mit welchem Tool?
- Wenn die "dtmfbox" mit einer Instanz auf der Fritz!Box läuft, kann nur von einem bestimmten Anschluss (Anrufernummer) aus die "dtmfbox" genutzt
werden. Ist es möglich die "dtmfbox" von mehreren Anrufernummern aus zu
nutzen?

So sieht es auf meiner Fritz!Box 7170 aus:
Ein Auszug aus dem selbstgestrickten boot-Script, der beim hochfahren meiner Fritz!Box ausgeführt wird. Die Software befindet sich auf einem gesteckten USB-Stick.
Im nachfolgenden ist XXXXXXX = MSN , YYYYYYY = authorisierte Anrufernummer

Code:
...

USBSTICK=`cd ${0%/*} 2>/dev/null && pwd || echo ${0%/*}`

...

#####################################################################################
### DTMF-Box - Befehle per Telefon-Anruf

# Links fuer dtmfbox
ln -s $USBSTICK/dtmfbox /var/tmp
ln -s $USBSTICK/dtmfboxscript /var/tmp
ln -s $USBSTICK/silent.711 /var/tmp
ln -s $USBSTICK/beep.711 /var/tmp

# dtmfbox starten
/var/tmp/dtmfbox 1 XXXXXXX -listen YYYYYYY -daemonize -workdir "/var/tmp" -script "/var/tmp/dtmfboxscript" -delimiter "*"

Hier noch der Script "dtmfboxscript" der von der "dtmfbox" aufgerufen wird.
Ich habe Deinen Script etwas für meine Experimente angepasst.
Code:
#!/bin/sh

# --------------------------------------------------------------------
# Standard-Sound vorbelegen (Keinen Sound oder 2x beep.711 abspielen)
#
# Die Sounddatei, welche als nächstes ausgegeben werden soll, wird
# durch die Datei NEXTPLAY festgelegt. 
# Diese befindet sich im gleichen Verzeichnis wie die dtmfbox.
#
# Die NEXTPLAY Datei hat folgendes Format:
#
# /var/media/ftp/usb/sound.711 3
# ^ die Sounddatei             ^ Anzahl der Wiederholungen 
#
# Die Sounddateien sind 8khz, Mono kodiert.
#
# --------------------------------------------------------------------

# Keinen Sound abspielen (silent.711)
#
echo "silent.711 1" > NEXTPLAY
#

# --------------------------------------------------------------------
#
if [ "$1" = "111" ]; then
   # 4 mal beep.711 abspielen. Einer wird bei mir verschluckt.
   echo "beep.711 4" > NEXTPLAY
   /sbin/dsld -i -n   
   /var/tmp/wakeup_mars 
fi

# --------------------------------------------------------------------
#
if [ "$1" = "222" ]; then
   # 4 mal beep.711 abspielen. Einer wird bei mir verschluckt.
   echo "beep.711 4" > NEXTPLAY
   /sbin/dsld -i -n
   /var/tmp/wakeup_erde
fi

# --------------------------------------------------------------------
# Hier noch ein Test.
if [ "$1" = "333" ]; then
   # 6 mal beep.711 abspielen
   echo "beep.711 7" > NEXTPLAY
fi

Ich hoffe Du bleibst noch am Ball. Und läßt die "dtmfbox" noch wachsen.
Sie läßt sich jetzt schon gut verwenden.

Schöne Grüße

joe3
 
Hallo Joe3,

- bei den .711 Dateien handelt es sich um das ISDN .alaw Format.
Ein Tool zum Konventieren gibt es hier: http://www.prog-link.com/wav2pcm/
Damit kann man dann eigene Sounds umwandeln (WAV->ALAW / ALAW->WAV).

- Die DTMF-Box reagiert momentan nur auf einer Nummer. Ich könnte das Programm etwas erweitern, das es auf mehreren Nummern reagiert (eventuell sogar mit Verzögerung beim Abheben). Am besten sowas ähnliches wie die calllog, die bei jedem Anruf entscheidet, ob Abgehoben wird oder nicht.

- Versuche mal ein 'sleep 1' am Ende des Skripts einzufügen. Dann müsste es 4mal beepen ;).
 
DTMF-BOX v0.1

Hallo bodega,

danke für Deinen Tip.
In der Zwischenzeit habe ich zum Umwandeln einer WAV-Datei in eine ALAW-Datei auch noch das Tool "sox" gefunden.
Die WAV-Dateien können für Deine DTMF-Box unter Windows(MSDOS) folgendermaßen umgewandelt:

"sox sound.wav -c 1 -t la -r 8000 sound.711"

Sox liefert nach meiner Einschätzung eine gute Tonqualität.
Das Tool findet man leicht im Internet. Es wird für verschiedene Plattformen angeboten.
Viel Spaß noch bei der Weiterentwicklung der DTMF-Box.

Schöne Grüße

Joe3
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.