#!/bin/sh
# Change to fullscreen under Freetz
cat << EOF
EOF
if [ "$HELPPAGE" = "" ]; then HELPPAGE="vorwort"; fi
MAIN_CGI="dtmfbox.cgi?pkg=dtmfbox"
#
# Basiseinstellungen
#
if [ "$HELPPAGE" = "basiseinstellungen" ]; then
echo ''
show_title "Basiseinstellungen"
cat << EOF
Unter Basiseinstellungen wird die Datei dtmfbox.cfg bearbeitet.
Diese stellt die Grundkonfiguration des Programms dar. Standardmäßig ist die Datei so eingerichtet,
dass nur wenige Änderungen vorgenommen werden müssen, wie z.B. die Einrichtung von Accounts.
Der Aufbau ist in [Bereiche] unterteilt.
Im Text-Editor werden Kommentare mit Doppel-Slashes gekennzeichnet (// Kommentar). Siehe auch hier.
EOF
fi
#
# Vorwort
#
if [ "$HELPPAGE" = "vorwort" ]; then
echo ''
show_title "Vorwort"
cat << EOF
Die dtmfbox ist eine Softswitch Applikation, welche folgende Features unterstützt:
dtmfbox Copyright (c) 2006-2009 Marco Zissen (maz@v3v.de) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USAEOF fi # # Getting started... # if [ "$HELPPAGE" = "getting_started" ]; then echo '' show_title "Getting started..." cat << EOF
1.) Account(s) einrichten | (dtmfbox.cfg) |
2.) Interne Menüs zuweisen | (dtmfbox.cfg) |
3.) Skripteinstellungen | (script.cfg) |
4.) dtmfbox starten | (Status) |
rc.dtmfbox start|stop|restart # starten, stoppen, neu starten. rc.dtmfbox foreground # im Vordergrund starten, mit Skriptausgaben, für Tests. rc.dtmfbox log # geloggt starten, ohne Skriptausgaben.Ist die dtmfbox gestartet, werden alle Accounts (mit Registrierungsstatus), alle aktuellen Verbindungen und alle angemeldeten Clients angezeigt. Falls Nachrichten auf den Anrufbeantworter vorhanden sein sollten, werden diese ebenfalls auf der Seite "Status" angezeigt.
Es gibt vier Arten, Accounts einzurichten:
[acc1] active=1 // 1=aktiviert, 0=deaktiviert name=ISDN1 // Name (beliebig) number=1234567 // Rufnummer (MSN ohne Vorwahl!) type=capi // Account-Typ (type=capi) capi_controller_out=1 // Standardcontroller für ausgehende VerbindungenBeispiel (Analog):
[acc1] active=1 // 1=aktiviert, 0=deaktiviert name=1234567 // Name (Anschlussnummer ohne Vorwahl!) number=unknown // Rufnummer (unknown) type=capi // Account-Typ (type=capi) capi_controller_out=4 // Standardcontroller für ausgehende VerbindungenBei Analog wie auch ISDN wird die Nummer immer OHNE VORWAHL angegeben!
[voip] voip=1 // VoIP aktivieren! voip_registrar=1 // Registrar-Modus an! voip_max_clients=4 // Anzahl der Clients, die sich anmelden dürfen voip_realm=fritz.box // Realm für den Registrar voip_udp_port=5061 // Port, für SIP voip_rtp_start=4000 // Start-Port, für RTP/RTCP // ... // siehe auch Basiseinstellungen [acc1] active=1 // Analog-Account name=1234567 number=unknown type=capi capi_controller_out=4 registrar_active=1 // Aktiviert die Anmeldung an die dtmfbox registrar_user=1234567 // Username registrar_pass=secret // PasswortIm AVM-WebIf wird nun ein Internettelefonie-Account angelegt.
[acc1] active=1 // 1=aktiviert, 0=deaktiviert name=1234567 // Beliebiger Name number=0#1234567 // 0# = Erster Account, 1234567=Internetrufnummer type=capi // type=capi capi_controller_out=5 // Standardcontroller für ausgehende VerbindungenBeispiel (4. Internettelefonie-Account):
[acc1] active=1 // 1=aktiviert, 0=deaktiviert name=7654321 // Beliebiger Name number=3#7654321 // 3# = Vierter Account, 7654321=Internetrufnummer type=capi // type=capi capi_controller_out=5 // Standardcontroller für ausgehende Verbindungen
[voip] // ... // siehe Basiseinstellungen [acc1] active=1 // 1=aktiviert, 0=deaktiviert name=SIP Account // Beliebiger Name (wird als Display-Name verwendet) number=1234567 // Internetrufnummer type=voip // type=voip voip_registrar=sip.registrar.de // Registrar-Server voip_realm=registrar.de // SIP-Realm (* für automatische Suche) voip_user=MeinUsername // Username voip_pass=MeinPasswort // Passwort voip_do_not_register=0 // 1=Keine Registrierung, 0=Registrieren voip_id= // Optional: SIP-ID (MeinUsername@sip.registrar.de) voip_proxy= // Optional: Proxy voip_contact= // Optional: SIP-ContactManchmal wird für die Registrierung ein STUN-Server benötigt. Bei NAT-Problemen ist manchmal auch die Aktivierung von ICE nötig (z.B. One-Way Audio). Näheres siehe auch Basiseinstellungen.
[voip] // ... // siehe Basiseinstellungen voip_stun=stun.1und1.de voip_stun_port=3478 voip_ice=1 [acc1] active=1 // 1=aktiviert, 0=deaktiviert name=49123456789 // Beliebiger Name (wird als Display-Name verwendet) number=49123456789 // Internetrufnummer type=voip // type=voip voip_registrar=sip.1und1.de // Registrar-Server (oder IP direkt: 212.227.15.197) voip_realm=1und1.de // SIP-Realm (* für automatische Suche) voip_user=49123456789 // Username voip_pass=MeinPasswort // Passwort voip_do_not_register=0 // 1=Keine Registrierung, 0=Registrieren voip_id=49123456789@1und1.de // Optional: SIP-ID (MeinUsername@sip.registrar.de) voip_proxy= // Optional: Proxy voip_contact= // Optional: SIP-ContactBeispiel (Sipgate):
[voip] // ... // siehe Basiseinstellungen voip_stun=stun.1und1.de voip_stun_port=3478 voip_ice=1 [acc1] active=1 // 1=aktiviert, 0=deaktiviert name=49123456789 // Beliebiger Name (wird als Display-Name verwendet) number=49123456789 // Internetrufnummer type=voip // type=voip voip_registrar=sipgate.de // Registrar-Server voip_realm=sipgate.de // SIP-Realm (* für automatische Suche) voip_user=55112233 // Username voip_pass=MeinPasswort // Passwort voip_do_not_register=0 // 1=Keine Registrierung, 0=Registrieren voip_id=55112233@sipgate.de // Optional: SIP-ID (MeinUsername@sip.registrar.de) voip_proxy= // Optional: Proxy voip_contact= // Optional: SIP-Contact
[acc1] // ... // siehe Accounts menu_keycode=*800 // Kurzwahl (hier *800) menu_entry=menu:main // Menü-Einstiegspunkt (menu:main ist das Hauptmenü)Von Außerhalb kann das Menü über den Anrufbeantworter, bzw. über Callback/Callthrough erreicht werden.
Es kann vorkommen, dass das Telefon nicht auf die Kurzwahl reagiert. Dies kann mit verschiedenen Dingen zusammenhängen (FW-Version, Telefone, usw.).
Man sollte zunächst prüfen, ob überhaupt DTMF-Zeichen empfangen werden, wenn gewählt wird. Dies kann mithilfe des Logs festgestellt werden.
Wenn abgenommen wird (Log: Hook up), aber kein Ton zu hören ist oder die Navigation per DTMF nicht möglich sein sollte, liegt das oft an dem Format der Kurzwahl.
Man sollte daher folgende Kurzwahlen durchprobieren:
Falls immer noch kein Ton zu hören ist, bzw. die Navigation nicht funktioniert, kann man im AVM-WebIf unter Telefoniegeräte\Festnetz eine zusätzliche Rufnummer hinterlegen (in dem Fall die gewünsche Kurzwahl, z.B. 800). Danach nochmal die oberen Kombinationen ausprobieren.
Falls dieser Versuch ebenfalls scheitert, bleibt noch die Möglichkeit, die ISDN-Telefone per SIP-Registrar anzubinden (siehe auch Accounts einrichten).
Gibt an, ob die dtmfbox beim Booten automatisch gestartet werden soll.
Callthrough Regeln bestehen aus max. zwei Teilen, welche durch Schrägstriche getrennt werden:
Callback Regeln bestehen aus zwei bis fünf Teilen, welche ebenfalls durch Schrägstriche getrennt werden:
Das Webradio kann man im Menü unter "(4) Sonstiges -> (4) Radio" erreichen. Vorraussetzung für das Abspielen von MP3-Streams ist das Programm 'madplay' (siehe auch: "Programme & Pfade").
Die Rückwärtssuche ermöglicht das Anzeigen von Name und Adresse auf dem ISDN-Telefon als Display-Message.
Hinweise:
Das Anti-Callcenter Skript dient dazu, unbekannte Anrufer direkt anzunehmen und zur Rufnummerneingabe aufzufordern.
Jedem Account kann eine Weiterleitungs-Rufnummer hinterlegt werden:
Hinweis:
Hier können die Einstellungen zu eSpeak verändert werden.
Bei der USB-Version finden sich espeak, madplay usw. unter /var/dtmfbox/extras, sodass dieser Pfad hier voreingestellt ist.
Das Speicherverhalten kann auf "Diff + Patch + GZip" oder nur "GZip" eingestellt werden. Erstere Methode spart etwas Flash-Speicher, falls die dtmfbox im RAM installiert wurde.
Jedem Skript können Parameter mitgegeben werden, die in den Variablen \$1 bis \$32 zur Verfügung stehen. Dies können Ereignisse sein, aber auch benutzerdefinierte Parameter.
Man kann weitere Skripte unter /var/dtmfbox/script ablegen, welche automatisch mitgespeichert werden.
EOF
fi
#
# Nachrichten
#
if [ "$HELPPAGE" = "nachrichten" ];
then
echo ''
show_title "Nachrichten"
cat << EOF
Der Menüpunkt "Nachrichten" zeigt die Aufnahmen auf dem Anrufbeantworter an.
Übersicht der Ereignisse:
Die Kurzwahl darf in dem Fall aber kein # oder * enthalten! Beim ersten Internet-Telefonieaccount würde man *121#800 wählen.
EOF
fi
#
# Das Menü
#
if [ "$HELPPAGE" = "menu_start" ]; then
show_title "Das Menü"
cat << EOF
In der dtmfbox-Standardkonfiguration ist ein vorgefertigtes Menü integriert, welches bei Bedarf geändert werden kann.
Das Menü kann über drei Wege erreicht werden:
Menüstruktur:
Dies gilt für ISDN-Accounts, wie auch Accounts, welche über den Registrar-Modus angebunden sind (SIP-Clients angemeldet an dtmfbox). Das Einstiegsmenü kann unter Basiseinstellungen geändert werden (Standardmäßig [menu:main])
Sobald der Anrufbeantworter abhebt, wird der AB-Pin eingegeben. Das Einstiegsmenü ist [menu:main]
Das Einstiegsmenü ist [menu:callthrough_pin]
Hauptmenü
|
|- 1 = Anrufbeantworter
| |
| |- X# = Nachricht X abhören
| |- 0# = Einstellungen
| | |
| | |- 1 = Aktivieren / Deaktivieren
| | |- 2 = Aufnahmen löschen
| | | |
| | | |- 1 = Alle Aufnahmen löschen
| | | |- * = Zurück
| | |
| | |- * = Zurück
| |
| |- * = Zurück
|
|- 2 = DTMF-Befehle
| |
| |- X = Eigene Befehle, Shellskripte, etc.
| |- * = Zurück
|
|- 3 = Callthrough
| |
| |- 1234# = Pineingabe (Pin kann im Menü bearbeitet werden)
| | |
| | |- X# = Account 1-10 oder 0# für die Wahl über den internen S0 Bus
| | |
| | |- NUMMER# = Nummer eingeben und wählen (#)
| | |- NUMMER*# = Nummer eingeben und korrigieren (verwählt)
| | |- # = Auflegen
| | |- * = Zurück
| |
| |- * = Zurück
|
|- 4 = Sonstiges
|
|- 1 = Fritz!Box
| |
| |- 1 = IP-Adresse
| |- 2 = Letzter Reboot
| |- 3 = Uhrzeit
| |- * = Zurück
|
|- 2 = Wettervorhersage
| |
| |- 1 = Wetter-Podcast abspielen
| |- * = Zurück
|
|- 3 = Checkmaild
| |
| |- X = Mailanzahl von Checkmail-Account X (1-3) abfragen
| |- * = Zurück
|
|- 4 = Radio
|
|- X = Radiostream 1-9
|- * = Zurück
EOF
fi
#
# Menü bearbeiten
#
if [ "$HELPPAGE" = "menu" ]; then
show_title "Menü bearbeiten"
cat << EOF
Das Menü kann individuell bearbeitet werden.
Es ist ebenfalls in [Bereiche] unterteilt, jedoch werden diese anders interpretiert.
Es gibt vier Bereiche:
Alle Menü-, Skript- und Library-Bereiche müssen einen eindeutigen Namen besitzen.
Stellt ein Menü dar.
Es können DTMF-Zeichen hinterlegt werden, welche ein Menü [menu:] , ein Skript [script:] oder eine Library-Funktion [lib:] aufrufen.
Führt ein Skript aus, wenn der Bereich aufgerufen wird.
Es kann ein Skript hinterlegt werden, welches ausgeführt werden soll (inkl. Parameter).
Führt eine Funktion in einer Library aus, wenn der Bereich aufgerufen wird.
Es kann eine Library und ein Funktionsname hinterlegt werden (inkl. Parameter).
Führt einen [script:] oder [lib:] Bereich aus, bei bestimmten Ereignissen.
Es werden die Ereignisse und ein [script:] oder [lib:] Bereich angegeben.
Der Name wird nach dem Doppelpunkt gesetzt. Z.B. [menu:my_menu1], [script:my_script1], usw...
Es können beim Aufruf der Bereiche auch Parameter übergeben werden (bis zu 32):
[menu:main]
say=Hauptmenue
1=script:myscript("Hallo", "Test") // "Hallo" und "Test" an Skript übergeben
2=menu:zweites_menu("Hallo2") // "Hallo2" an Menü übergeben
[menu:zweites_menu]
say=Zweites Menue
1=script:myscript("%\$1%", "Test2") // %\$1%="Hallo2" u. "Test2" an Skript übergeben
*=menu:main
[script:myscript] // 1. und 2. Argument an Skript übergeben
cmd=/var/script/myscript.sh(/var/script/myscript.sh, "%\$1%", "%\$2%")
Die Parameter stehen dann als Argumente innerhalb des Bereiches zur Verfügung (von %\$1% bis %\$32%)
Ereignisse können ebenfalls als Parameter übergeben werden.
EOF
fi
#
# [menu: ... ]
#
if [ "$HELPPAGE" = "menu_menu" ];
then
echo ''
show_title "[menu: ... ]"
cat << EOF
Ein [menu:XYZ] stellt einen Menü-Bereich dar. In dem Fall mit dem eindeutigen Namen XYZ.
Ein Menü kann beliebig lang sein. Es können einzelne DTMF-Zeichen mit Untermenüs, Skripten und Library-Funktionen verknüpft werden.
Ganze DTMF-Zeichenfolgen sind ebenfalls möglich.
Beispiel (einzelne DTMF-Zeichen):
[menu:main]
say=1 Erstes Menue, 2 Zweites Menue
1=menu:menu_1
2=menu:menu_2
[menu:menu_1]
say=Menu 1. Zurueck mit *
*=menu:main
[menu:menu_2]
say=Menu 2. Zurueck mit *
*=menu:main
Beispiel (mehrere DTMF-Zeichen):
[menu:main]
say=101# Erstes Menue, 102# Zweites Menue
101#=menu:menu_1
102#=menu:menu_2
[menu:menu_1]
say=Menu 1. Zurueck mit *
*=menu:main
[menu:menu_2]
say=Menu 2. Zurueck mit *
*=menu:main
Wird say= mit angegeben, wird das text2speech= Skript ausgeführt, welches unter den Basiseinstellungen hinterlegt ist.
Der angegebende Text wird auf das Telefon ausgegeben, solange eSpeak verwendet wird (Skripteinstellungen > ESPEAK_INSTALLED=X).
EOF
fi
#
# [script: ... ]
#
if [ "$HELPPAGE" = "menu_script" ];
then
echo ''
show_title "[script: ... ]"
cat << EOF
Ein [script:XYZ] stellt einen Skript-Bereich dar. In dem Fall mit dem eindeutigen Namen XYZ.
Skripte können von Menüs [menu:] und Aktionen [action:] aufgerufen werden.
Beispiel 1:
[menu:main]
say=1 Erste Skript Funktion, 2 Zweite Skript Funktion.
1=script:myscript(1) // 1 übergeben
2=script:myscript(2) // 2 übergeben
[script:myscript]
say=Skript %\$1% ausführen // say "Skript X ausführen"
cmd=/var/dtmfbox/script/myscript1.sh(/var/dtmfbox/script/myscript1.sh, "%\$1%", "%src_id%")
In dem obigen Beispiel wird zweimal das selbe Skript aufgerufen, jedoch mit unterschiedlichen Parametern (1 und 2).
Zusätzlich wird der Platzhalter "%src_id%" an das Skript "myscript1.sh" übergeben.
Im Skript stehen die Parameter dann als Argumente zur Verfügung (\$1="1" oder "2" und \$2="%src_id%").
Auch hier kann say= angegeben werden, um einen Text auszugeben.
Beispiel 2 (selbes Skript wie oben, nur dynamisch):
[menu:main]
say=Skript-Funktion aufrufen
#=script:myscript(%dtmf%) // DTMF-Zeichen übergeben
[script:myscript]
say=Skript %\$1% ausführen // say "Skript X ausführen"
cmd=/var/dtmfbox/script/myscript1.sh(/var/dtmfbox/script/myscript1.sh, "%\$1%", "%src_id%")
In dem obigen Beispiel wird ebenfalls das Skript aufgerufen, jedoch etwas dynamischer.
Anstelle einzelne Skriptaufrufe für bestimmte Tasten festzulegen, wird beim Drücken der #-Taste der ganze DTMF-Buffer an das Skript übergeben.
Solange # nicht eingegeben wurde, werden die DTMF-Zeichen "gesammelt".
Wird z.B. 100# eingegeben, so steht in %dtmf% ebenfalls "100#". In %data% steht immer das letzte Zeichen, welches in dem Fall "#" wäre.
In cmd= wird das eigentliche Skript angegeben. Der Aufruf ist wie bei der Funktion 'execl' unter C.
Die Skriptdatei wird vor der Klammer und als erster Parameter angegeben.
EOF
fi
#
# [lib: ... ]
#
if [ "$HELPPAGE" = "menu_lib" ];
then
echo ''
show_title "[lib: ... ]"
cat << EOF
Ein [lib:XYZ] stellt einen Library-Bereich dar. In dem Fall mit dem eindeutigen Namen XYZ.
Libraries können von Menüs [menu:] und Aktionen [action:] aufgerufen werden.
Hierbei wird gezielt eine Funktion in einer Library aufgerufen. Die Libraries müssen nicht zwingend als Plugin eingebunden werden.
Beispiel:
[menu:main]
1=lib:speak("Hallo 1")
2=lib:speak("Hallo 2")
3=lib:speak("Hallo 3")
[lib:speak]
library=/var/dtmfbox/menu.plugin.so
function=speak(%src_id%,"%\$1%")
Es können char*-und integer-Datentypen übergeben werden. Integer-Werte werden ohne Anführungsstriche angegeben.
In dem obigen Beispiel wird die Funktion "speak()" in der Library menu.plugin.so aufgerufen. Der erste Parameter ist ein Integer, der Zweite ein char*.
EOF
fi
#
# [action: ... ]
#
if [ "$HELPPAGE" = "menu_action" ];
then
echo ''
show_title "[action: ... ]"
cat << EOF
Ein [action:XYZ] stellt eine Aktion dar, die bei bestimmten Ereignissen ausgelöst wird. In dem Fall mit dem eindeutigen Namen XYZ.
Stimmen die angegebenen Ereignisse der Aktion überein, wird ein Skript oder eine Library aufgerufen.
Im Gegensatz zu den anderen Bereichen, wird eine Aktion nicht von Menüs verwendet.
Beispiel:
[action:action_1]
event=CONNECT
//type=
direction=INCOMING
//src_id=
//dst_id=
//src_no=
dst_no=0049301234567
//data=
action=script:action_hookup
[script:action_hookup]
cmd=/var/action_hookup.sh(/var/action_hookup.sh, "%event%", "%type%", "%direction%", "%src_id%", "%dst_id%")
Wenn:
%event%="CONNECT" und %direction%="INCOMING" und %dst_no%="0049301234567",
Dann:
"action_hookup.sh" ausführen (und Platzhalter übergeben).
Innerhalb des Skriptes könne man z.B. die Verbindung annehmen (\$DTMFBOX \$4 -hook up).
Hinweis:
Bei mehrere Aktionen werden diese nacheinander ausgeführt (nach Namen sortiert).
Eine Erläuterung zu den Ereignissen befindet sich hier. Eine Erläuterung zu den Befehlen, hier.
EOF
fi
#
# Skripteinstellungen
#
if [ "$HELPPAGE" = "skripteinstellungen" ];
then
echo ''
show_title "Skripteinstellungen"
cat << EOF
Unter Skripteinstellungen werden die Einstellungen zu den Skripten vorgenommen.
Alle Skripte binden diese Datei ein, wie auch das Webinterface, um Einstellungen am Text-Editor vorzunehmen zu können (Zeilen/Wrap).
EOF
fi
#
# Skripte bearbeiten
#
if [ "$HELPPAGE" = "skripte_bearbeiten" ];
then
echo ''
show_title "Skripte bearbeiten"
cat << EOF
Skripte lassen unter Skripte bearbeiten ändern und erweitern.
Um accountspezifische Einstellungen zu hinterlegen, muss man im Text-Editor die jeweiligen Einträge hinzufügen, mit dem Präfix ACCX_ (X=Account ID). Globale Einstellungen fangen mit dem Präfix GLOBAL_ an.
Um z.B. die Ansage von Account 5 zu ändern, folgende Zeile hinzufügen:
ACC5_AM_ANNOUNCEMENT_START=/var/dtmfbox/play/ansage.wav # Ansage für Account Nr. 5
Als Ansage und Endansage kann man auch eine URL angeben, wie z.B. http://www.url.de/ansage.wav oder ftp://www.url.de/ansage.wav.
Wichtig ist, dass die PCM-Wave vom Format 8000hz, 16bit, Mono ist.
Aufnahmen können per eMail verschickt oder auf einen FTP-Server abgelegt werden.
Beim eMail-Versand werden die Aufnahme als Wave-Datei versendet. Beim FTP-Streaming werden PCM-Dateien ohne Wave-Header geschrieben, welche ebenfalls über das AB-Menü abgehört werden können (RAW 8000hz, 16bit, Mono).
Trigger-Nr./[Trigger-Accout]
Die Trigger-Nr. muss angegeben werden. Sie ist die Nummer, die den Callthrough auslösen soll. Als Trigger-Nummer kann man eine Regular-Expression verwenden, um z.B. beliebigen Nummern den Zugang zum Callthrough zu ermöglichen.
Der Trigger-Account ist optional. Dies kann die Account-ID oder die Nummer des Accounts sein, welcher auf Callthroughs reagieren soll.
Wenn kein Trigger-Account angegeben wird, ist die Callthrough-Regel für alle Accounts aktiv.
Beispiel:
Account 1 soll bei einem Anruf der Nummer 004922112345 das Gespräch annehmen und an das Callthrough Menü weiterleiten:
004922112345/1 # Mit Angabe der Account-ID
004922112345/322423 # Mit Angabe der Account-Nummer
004922112345 # Ohne Angabe der Account-ID. Callthrough ist für alle Accounts aktiv.
.*2112345 # Callthrough mithilfe von Regular Expressions
Hinweis:
Trigger-Nr./Rückruf-Nr./[Trigger-Account]/[Rückruf-Account]/[CAPI-Controller]
Die Trigger- und Rückruf-Nr. muss angegeben werden. Die Trigger-Nr. ist die Nummer, welche den Callback auslösen soll. Rückruf-Nr. ist die Nummer, auf welche nach dem Auflegen zurückgerufen werden soll.
Optional können noch Trigger- und Rückruf-Account und ein CAPI Controller angegeben werden. Trigger-Account ist, wie beim Callthrough auch, die Einschränkung des Callbacks auf einen bestimmten Account.
Rückruf-Account ist der Account, welcher den Rückruf durchführen soll. Hier kann die Account-ID, aber auch die Nummer angegeben werden. Der CAPI-Controller bestimmt den ausgehenden Controller für den Callback und sollte bei VoIP-Accounts nicht angegeben werden.
Beispiel:
Der Callback soll auf die Rufnummer 004922112345 reagieren. Die Nummer, auf die zurückgerufen werden soll, ist die 0160555555555. Als MSN soll 3322211 verwendet werden (Account 1).
004922112345/0160555555555/3322211 # Es wird hier die Nummer direkt angegeben.
004922112345/0160555555555/1 # Es wird hier die Nummer als ID übergeben.
004922112345/0160555555555 # Ohne Accountangabe. Callback für alle Accounts aktiv.
.*22112345/0160555555555 # Rückruf mithilfe von RegEx.
\(.*22112345\)/\1 # Rückruf mithilfe von RegEx auf Trigger-Nr.
# Trigger-Nr wird als Rückrufnummer verwendet. Nicht 0160555555555
Hinweis:
Es können bis zu neun MP3-Streams hinterlegt werden (URLs). Durch eine entsprechende Menüänderung lassen sich aber mehr Streams einfügen.
Beispiel:
[menu:misc_radio]
say=Radio
1#=script:misc_radio(1)
...
50#=script:misc_radio(50)
oder:
[menu:misc_radio]
say=Radio
01=script:misc_radio(1)
...
50=script:misc_radio(50)
Den Accounts wird dabei eine Pseudo-MSN zugeordnet. Im Telefon wird die original Empfangs-MSN durch die Pseudo-MSN ersetzt. Die Sende-MSN bleibt unverändert!
Fon1-3 und das interne DECT der FB werden nicht unterstützt!
Bei ISDN ist es die MSN (bei aktiver Rückwärtssuche, die Pseudo-MSN).
Bei Analog und VoIP kann eine SIP-Adresse angegeben werden, wie z.B. 12345@fritz.box (siehe auch Accounts einrichten / SIP-Registrar).
Es wird das Skript action_anticallcenter.sh aufgerufen.
Analog-Telefone müssen nicht unbedingt per SIP angebunden werden. Es reicht aus, im AVM-Webif einen Internet-Telefonieaccount anzulegen und einem FON-Anschluss zuzuordnen.
Die Einstellungen des Internet-Telefonieaccount könnten folgendermaßen aussehen:
Internetrufnummer: 9000
Der angelegte Telefonieaccount wird anschließend dem FON-Anschluss als zusätzliche Empfangsrufnummer zugeordnet.
Benutzername: 9000
Passwort: 9000
Registrar: localhost
Rufnummernformat anpassen: (alle Haken rausnehmen)
Im dtmfbox-Webif wird die Weiterleitung 9000@fritz.box:5060 oder 9000@192.168.178.1 hinterlegt. Der jeweilige FON-Anschluss lässt sich über diese SIP-Uri direkt ansprechen.
Es gibt drei Modis:
Hinweis:
eSpeak ist installiert. Entweder auf USB oder im Flash (Einstellungen zur Pfadangabe unten beachten!)
eSpeak über Webstream abrufen. Eine Installation von eSpeak ist nicht nötig.
eSpeak deaktivieren. Nur Beep.
Der Typ: f5 und m5 (mbrola) ist nur als Webstream verfügbar.
Bei Freetz liegen die Programme an anderen Orten:
Es handelt sich hierbei um Shellskripte, welche die eigentlichen Funktionen der dtmfbox implementieren (Anrufbeantworter, Callback/Callthrough, ...).
Alle Skripte werden durch das Menü-Plugin ausgeführt. Die einzelnen Skriptaufrufe stehen in den Bereichen [script:X].
Es kann zwischen den einzelnen Accounts gewechselt werden. Aufnahmen lassen sich abhören und löschen.
Wird das "FTP-Streaming" verwendet, werden die Dateien auf dem FTP-Server abgelegt und stehen dort als RAW-PCM zur verfügung (8000hz/16bit/mono). Das sind ganz normale Wave-Dateien, jedoch ohne Header.
Gespeicherte Aufnahmen sind im WAV-PCM Format (8000hz/16bit/mono).
EOF
fi
#
# Webphone
#
if [ "$HELPPAGE" = "webphone" ];
then
echo ''
show_title "Webphone"
cat << EOF
Unter "Webphone" befindet sich ein Java-Applet, womit es möglich ist, über die Weboberfläche, per Headset, zu telefonieren.
Es wird das Standard-Sounddevice verwendet. Account auswählen, Zielrufnummer eingeben und wählen.
Achtung: Alpha!! ;-)
Für das Webphone wird die Java Runtime Engine benötigt.
Download hier: http://www.java.com/de/download/
EOF
fi
#
# dtmfbox Befehle
#
if [ "$HELPPAGE" = "befehle" ];
then
echo ''
show_title "Befehle"
cat << EOF
Die dtmfbox und die Plugins stellen eine Reihe von Befehlen zur Verfügung, welche über Kommandozeile oder über eine Funktion innerhalb der Plugins augerufen werden können.
Um Befehle auszuführen, muss die dtmfbox gestartet sein.
EOF
echo "Standard-Befehle (dtmfbox):"
echo -n ""
if [ ! -z "$(pidof "dtmfbox")" ]; then
/var/dtmfbox/dtmfbox
else
echo -n "dtmfbox wurde nicht gestartet!"
fi
echo "
"
echo "
Plugins (dtmfbox -list plugins):"
echo -n ""
if [ ! -z "$(pidof "dtmfbox")" ]; then
/var/dtmfbox/dtmfbox -list plugins
else
echo -n "dtmfbox wurde nicht gestartet!"
fi
echo -n "
"
fi
#
# dtmfbox Webinterface
#
if [ "$HELPPAGE" = "webinterface" ];
then
echo ''
show_title "Webinterface"
cat << EOF
Die Einstellungen der dtmfbox werden zur Laufzeit ausgelesen und dynamisch angezeigt.
Dies trifft hauptsächlich auf die Dateien dtmfbox.cfg und script.cfg zu, wobei Letzere interessant sein kann, um benutzerdefinierte Skripteinstellungen zu hinterlegen.
Jeder Einstellung wird im Text-Editor ein Kommentar zugewiesen:
Dieser Kommentar wird als Bezeichnung für die Einstellung verwendet. Klickt man nun auf "Speichern" und verlässt den Text-Editor, stellt man fest, das die Einstellung mit dem jeweiligen Kommentar, als Textbox, angezeigt wird.
Es gibt weitere Flags, um die Darstellung und das Verhalten von Einstellungen zu verändern.
Diese werden ebenfalls im Kommentarteil angegeben:
[HTML:X]
HTML-Code angeben, für Überschriften, Javascript, etc. (X = HTML-Code)[HIDE:1]
Einstellung verbergen[WIDTH:X]
Textbox Breite (in px)[OPTION:X1|Y1|X2|Y2 ...]
Kombobox anzeigen mit vorgegebenen Optionen.
X1/X2 = Wert, der gespeichert wird
Y1/Y2 = Wert, der angezeigt wird
[TYPE:X]
Input-Type direkt angeben (z.B. X=password)[ONCHANGE:function()]
Javascript-Funktion aufrufen, wenn der Wert geändert wird. Eine Javascript-Funktion kann mittels [HTML:X]-Tag angegeben werden.
[SECTION:X]
Einen neuen Bereich erzwingen (X = Bereichsname)
Hierüber kann man feststellen, ob eine Verbindung gerade aufgebaut wird (CONNECT), ob ein DTMF-Zeichen empfangen wurde (DTMF), ob aufgelegt wurde (DISCONNECT), usw...
Zudem stehen einem noch weitere Informationen zur Verfügung, wie die Account-ID, Account-MSN/-Nummer, die Anrufernummer, Connection-ID, usw.
In Menüs können Ereignisse als Parameter an Skripte und Libraries übergeben werden.
Zudem können Ereignisse genutzt werden, um Skripte bei bestimmten Verbindungszuständen auszuführen (Aktionen).
%event% // Aktuelles Ereignis (DDI, EARLY, CONNECT, CONFIRMED, DTMF, UNCONFIRMED, DISCONNECT)
%direction% // Verbindungsrichtung (INCOMING, OUTGOING)
%type% // Verbindungstyp (CAPI, VOIP, USER)
%src_id% // Source Connection-ID (eigene Verbindungs-ID)
%dst_id% // Target Connection-ID (Gesprächspartner-ID)
%src_no% // Rufnummer (Account/MSN)
%dst_no% // Anrufer oder Zielrufnummer
%acc_id% // Account-ID
%data% // DTMF-Zeichen, wenn %event%=DTMF (Aktuell, einzelnes Zeichen), bzw. Statuscode
%dtmf% // DTMF-Zeichen (Buffer, gesammelte Zeichen).
Ansonsten dient %data% dazu, das aktuell übertragene DTMF-Zeichen zurückzuliefern (%event%="DTMF").
EOF
fi
#
# Inhalt / Menüleiste
#
cat << EOF