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

Habe einen Workaround für das Problem in der "callthrough.sh" gefunden

Hallo,

Habe das Problem gelöst.
Fehler in der "callthrough.sh"

Die Callback_Calling_CTRL wurde nicht richtig übergeben ; nämlich 5 bei CAPI.
Anscheinend klappt das Auslesen aus der config nicht oder es läuft gar nicht in die "If" Schleife

Code:
   # get number from dtmfbox.cfg  and remove X#... from capi-voip accounts
   get_cfg_value "/var/dtmfbox/dtmfbox.cfg" "acc$TRG_ACC_ID" "number"
   if [ ! -z "$CFG_VALUE" ]; then					
	CALLBACK_CALLING_ACC_TMP=`echo $CFG_VALUE | sed 's/.*#//g'`						
	get_cfg_value "/var/dtmfbox/dtmfbox.cfg" "acc$TRG_ACC_ID" "type"
	if [ "$CFG_VALUE" = "capi" ] && [ "$CALLBACK_CALLING_CTRL" = "" ]; then
		get_cfg_value "/var/dtmfbox/dtmfbox.cfg" "acc$TRG_ACC_ID" "capi_controller_out"
		CALLBACK_CALLING_CTRL="$CFG_VALUE"
	fi
	TRG_ACC_ID="$CALLBACK_CALLING_ACC_TMP"						
	echo "Callthrough-Script: $TRG_ACC_ID -> $NO (Ctrl: $CALLBACK_CALLING_CTRL)"
    fi

    # make call
    # Geaendert
    # $DTMFBOX $SRC_ID -call "$TRG_ACC_ID" "$NO"  $CALLBACK_CALLING_CTRL"
    # Neu    
  $DTMFBOX $SRC_ID -call "$TRG_ACC_ID" "$NO" "5"

Jetzt klappt es prima.

Weitere Lösung um die "CALLBACK_CALLING_CTRL" erfolgreich abzufragen

Code:
   # get number from dtmfbox.cfg  and remove X#... from capi-voip accounts
   get_cfg_value "/var/dtmfbox/dtmfbox.cfg" "acc$TRG_ACC_ID" "number"
   if [ ! -z "$CFG_VALUE" ]; then					
	CALLBACK_CALLING_ACC_TMP=`echo $CFG_VALUE | sed 's/.*#//g'`						
	get_cfg_value "/var/dtmfbox/dtmfbox.cfg" "acc$TRG_ACC_ID" "type"
        # Nur die Zeichen 'a bis z' zulassen - Leerstellen rausfiltern
        if [ ! -z "$CFG_VALUE" ]; then
           CFG_VALUE=`echo $CFG_VALUE | sed -e 's/[^a-z]//g'`
        fi 
	if [ "$CFG_VALUE" = "capi" ] && [ "$CALLBACK_CALLING_CTRL" = "" ]; then
		get_cfg_value "/var/dtmfbox/dtmfbox.cfg" "acc$TRG_ACC_ID" "capi_controller_out"
                # Nur die Zahlen '0 bis 9' zulassen - Leerstellen rausfiltern
                if [ ! -z "$CFG_VALUE" ]; then
                  CFG_VALUE=`echo $CFG_VALUE | sed -e 's/[^0-9]//g'`
                fi 
		CALLBACK_CALLING_CTRL="$CFG_VALUE"
	fi
	TRG_ACC_ID="$CALLBACK_CALLING_ACC_TMP"						
	echo "Callthrough-Script: $TRG_ACC_ID -> $NO (Ctrl: $CALLBACK_CALLING_CTRL)"
    fi
 
Zuletzt bearbeitet:
@philcorda:
Der Ruf wird von 1und1 direkt als Verboten zurückgewiesen mit der Call-By-Call Nummer:
Code:
 23:01:08 [type=voip/out conid=0 accid=3] Call state changed to CALLING
 23:01:08 [type=voip/out conid=0 accid=3] Call DISCONNECTED (reason=403, Forbidden)
Es liegt also nicht an der Ansage, sondern der Provider erlaubt die Nummer nicht.
Wenn es mit dem voipd geht, musst du mal schauen, wie dieser den Anruf durchführt. Wireshark wäre ganz gut.
Eine andere Möglichkeit wäre, die voip-Accounts über CAPI zu registrieren (Ctrl. 5).

@Dagobert1:
Wenn die Telefonie-Anmeldedaten weg waren, muss wahrscheinlich irgendwo ein Syntax-Error vorgekommen sein. Kann das jetzt nur raten. Aber wie du im Thread gelesen hast, sind die Einstellungen von Box zu Box unterschiedlich. Deswegen könnte ein Werksreset abhilfe schaffen. Wenn es nicht klappen sollte, hilft es wohl nur, die dtmfbox auf Port 5060 zu setzen und voipd auf Port 5061. Also die /var/flash/voip.cfg editieren.

@gee2803:
1. Das Einstiegsmenü ist standardmäßig "menu:main" und lässt sich im Account (Basiseinstellungen) einstellen.
2. Du kannst das Einstiegsmenü für Callthrough in der Datei action_cbct.sh ändern ($DTMFBOX $SRC_ID -goto "menu:callthrough_pin").
3. espeak ist leider keine natürliche Stimme. Im Webstream-Modus mit f5 oder m5 hört es sich natürlicher an (mbrola).
4. Schau dir mal das action_anticallcenter.sh Skript an. Dies wäre ein guter Start für ein Hotlinemenü. Im Menü "menu:anticallcenter" würdest du anstelle von "#=" z.B. "1234#=" schreiben. Der Rufaufbau findet dann nur mit der Eingabe von "1234#" statt. "#=2 könntest du auf ein anderes Skript umleiten und dort z.B. eine Ansage ausgeben.
5. Hast du da schon etwas angefangen? Das wäre ja auch was fürs Anti-Callcenter Skript :). Also während des Rufaufbaus eine Melodie abspielen...

@harry47:
Vielen Dank für deine Tests. So macht das wirklich Spass :). Eigentlich hatte ich gedacht, dass dies in rc3 behoben ist, da ich die Leerzeichen und Tabs in der Funktion get_cfg_value() filtere.
Wie sieht denn der Eintrag "type=" in der dtmfbox.cfg aus (Texteditor)? Könntest du eventuell auch auf der Konsole ein 'vi /var/dtmfbox/dtmfbox.cfg' ausführen? Vielleicht hat sich bei type= auch ein Sonderzeichen eingeschlichen???
 
Sorry, aber ich erkenne da sogut wie garnichts. Kannst du bitte Code-Tags verwenden oder noch besser: die Datei anhängen?

Beiträge editieren geht auch. Mehrfachpostings sind unnötig.
 
Callback mit VOIP Accounts, Fritzbox 7270 und dtmfbox rc3, Schritt für Schritt

Callback ist eine Funktion, die ich schon lange in der FritzBox vermisse. Umso mehr habe ich mich gefreut, beim google'n die DTMFBox zu finden. Diese ist wirklich ein Super Software Werkzeug um die Callback Funktionalität in die FritzBox zu integrieren.
Wie immer bei Software gibt es aber kleine Stolpersteine, die entsprechend der zu Grunde liegenden Hard- und Software gemeistert werden müssen.
Da ich die Callback Funktion mit einer FritzBox 7072 und zwei VOIP Provider Zugängen bei mir einrichten konnte, möchte ich eine Schritt für Schritt Anleitung hier veröffentlichen.
Ein Problem besteht darin, dass in die Rufnummer in Hotels oder im Ausland oft nicht korrekt übertragen wird und daher kein Callback zu Stande kommt.

Wunsch:
  1. Callback zum Handy
  2. Callback-Nummer ändern per DTMF Befehle
  3. Callback-Nummer ändern per Internet-Zugang zum USB Stick
Zuerst muss in der FritzBox der Telnet Zugang eingeschaltet werden.
Per Telefon:
#96*7* Telnet an
#96*8* Telnet aus

Es ist zu beachten, dass damit schon der Originalzustand der Firmware der FritzBox verändert wird und AVM keinen Support mehr leistet.

Für die folgende Anleitung kann ich natürlich keine Gewähr bieten und jeder handelt auf seine eigene Verantwortung.

Nach den Änderungen soll folgendes möglich sein.


  1. Anruf mit dem Handy auf acc1 ( Carpo-Lidl Rufnummer(MSN)). Rückruf zum Handy auch wenn die Handynummer im Ausland nicht richtig übertragen wurde.
    • Pin eingeben und mit '#' abschließen. Telefonnummer wählen und mit '#' abschließen. Telefonieren.
    • '*' eingeben, Pin eingeben und mit '#' abschließen. Neue Rückrufnummer eingeben und mit '#' abschließen. Rückrufnummer für Callback Regel 3 wird geändert.
  2. Anruf von irgendeinem Telefon auf acc1 ( Carpo-Lidl Rufnummer(MSN)). Rückruf , aber nur möglich, wenn die Nummer richtig übertragen wurde.
    • Pin eingeben und mit '#' abschließen. Telefonnummer wählen und mit '#' abschließen. Telefonieren.
    • '*' eingeben, Pin eingeben und mit '#' abschließen. Neue Rückrufnummer eingeben und mit '#' abschließen. Rückrufnummer für Callback Regel 3 wird geändert.
  3. Anruf von irgendeinem Telefon auf acc2 ( 1und1 Rufnummer(MSN)).
    Rückruf über acc1 (Carpo-Lidl Rufnummer (MSN)) zur gespeicherten Rückrufnummer, die unabhängig von dem benutzten (anrufenden ) Telefon ist.
    • Pin eingeben und mit '#' abschließen. Telefonnummer wählen und mit '#' abschließen. Telefonieren.
    • '*' eingeben, Pin eingeben und mit '#' abschließen. Neue Rückrufnummer eingeben und mit '#' abschließen. Rückrufnummer für Callback Regel 3 wird geändert.
  4. Ändern der Rückrufnummer per Internet Zugriff auf den USB Stick. Dazu muss der Zugriff in der Fritxbox ermöglicht werden ( Erweiterte Einstellungen - USB - Geräte - USB-Speicher ). Passwort-Einrichtung notwendig. Danach kann man auf den USB-Stick vom Internet zugreifen. Es wird die aktuelle IP benötigt. Diese kann man per eine der Callback Methoden erfahren, die oben beschrieben sind.
    Danach einfach die Datei 'callback.cfg' ersetzen oder ändern.
    • Callback Nummer anwählen ( siehe oben ). Rückruf abwarten.
    • '*' eingeben
    • '*' eingeben
    • Aktuelle IP wird zweimal angesagt.
    Folgendes in die Adresszeile des Browsers eingeben: 'ftp://ftpuser:AKTUELLES_PASSWORT@AKTUELLE_IP' z.B 'ftp://ftpuser:[email protected]'.


System-Voraussetzungen:

  1. FRITZ!Box Fon WLAN 7270 (UI) Firmware-Version 54.04.67
  2. USB Stick am FrtzBox USB-Anschluss
  3. DTMFBox-0.5.0-rc3 USB Version

Zugänge ( können natürlich auch andere sein; aber mit diesen klappt es bei mir:
1&1 Doppel-FLAT 16000
Carpo-Lidl ( Mobilfunk 9 Cent/Min , günstige Tarife ins Ausland )

Telnet-Anwendung in Windows XP starten:

Code:
„Start-Button – Ausführen – Eingeben: 'telnet 192.168.178.1' – OK“

Telnet-Fenster sollte sich öffnen. Falls in der FritzBox ein Password angelegt wurde, muss das jetzt eingegeben werden.

Installation der DTMFBox:

Mit der Fritzbox 7270 funktioniert das Entpacken leider nicht korrekt, daher musste ich die Installation von bodega leicht ändern.

Bitte beachten, den Platzhalter „USB_STICK_NAME“ mit dem tatsächlichen Namen des USB-Sticks zu ersetzten ( Kann man im Windows Explorer ablesen. z.B: UT-165USB2FlashStorage-00 ).

Code:
cd /var/media/ftp/*
wget http://fritz.v3v.de/busybox/busybox
chmod +x busybox
wget http://fritz.v3v.de/dtmfbox/dtmfbox-usb/dtmfbox-0.5.0-rc3.tar.gz
./busybox tar xvz -f  dtmfbox-0.5.0-rc3.tar.gz
rm busybox
cd dtmfbox-0.5.0-rc3
./rc.dtmfbox install usb /var/media/ftp/USB_STICK_NAME/dtmfbox-0.5.0-rc3
./rc.dtmfbox start_httpd

Danach steht einem das WebInterface der dtmfbox zur Verfügung.http://fritz.box:6767

Einstellungen:
Ich habe folgende Einstellungen vorgenommen.

Alle Eingaben werde ich als Text-Editor Anzeigen einstellen. Kann natürlich auch über die Eingabemasken erfolgen. Das Resultat sollte dann aber dem Angezeigten entsprechen. Telefonnummern müssen natürlich angepasst werden.

Basiseinstellungen - VOIP - Deaktiviert
Code:
[voip]
voip=0				// <b>VoIP</b> [OPTION:1|aktiviert,0|deaktiviert] [ONCHANGE:set_group('DIV_VOIP_ACTIVE', 'voip_voip', '1')]
				// [HTML:<div ID='DIV_VOIP_ACTIVE'>]
voip_registrar=1		// Registrar-Modus [OPTION:1|aktiviert,0|deaktiviert] [ONCHANGE:set_group('DIV_VOIP_REGISTRAR_MODE', 'voip_voip_registrar', '1')]
				// [HTML:<div ID='DIV_VOIP_REGISTRAR_MODE'>]
voip_max_clients=4		// Registrar-Modus: Max. Clients [OPTION:0|0,1|1,2|2,3|3,4|4,5|5,6|6,7|7,8|8,9|9,10|10]
voip_realm=fritz.box		// Registrar-Modus: Authentication-Realm [WIDTH:250px]
				// [HTML:</div><script>set_group('DIV_VOIP_REGISTRAR_MODE', 'voip_voip_registrar', '1')</script>]
voip_udp_port=5061		// SIP Port [WIDTH:50px]
voip_rtp_start=4000		// RTP/RTCP Start-Port [WIDTH:50px]
voip_rtp_max=4			// Max. Anzahl an RTP/RTCP Ports [OPTION:0|0,1|1,2|2,3|3,4|4,5|5,6|6,7|7,8|8,9|9,10|10,11|11,12|12,13|13,14|14,15|15,16|16,17|17,18|18,19|19,20|20]
voip_register_interval=3600	// Registrierungs-Intervall (in sec) [WIDTH:50px]
voip_keep_alive=180		// Keep-Alive alle X sec senden (0=aus) [WIDTH:50px]
voip_use_vad=0			// VAD (silence detection) [OPTION:1|aktiviert,0|deaktiviert]
voip_ip_addr=			// IP-Adresse des Interfaces (optional) [WIDTH:250px]
voip_stun=			// STUN-Server [WIDTH:250px]
voip_stun_port=3478		// STUN-Port [WIDTH:50px]
voip_ice=1			// ICE [OPTION:1|aktiviert,0|deaktiviert]
voip_nameserver=		// Nameserver (max. 4, Komma-getrennt) [WIDTH:250px]
voip_codecs=g711		// Codecs (g711, speex, gsm, Komma-getrennt) [WIDTH:250px]
voip_allow_unknown=0		// Ereignis auslösen, bei unbekannten Accounts? (nicht ändern!) [HIDE:1]
				// [HTML:</div><script>set_group('DIV_VOIP_ACTIVE', 'voip_voip', '1')</script>]

Basiseinstellungen - CAPI - keine Änderung zum Originalzustand
Code:
[capi]
capi_controller=1,4,3,5		// Listen CAPI-Controller. Komma getrennt
capi_int_prefix=		// Landesvorwahl (z.B. 0049) [WIDTH:50px]
capi_nat_prefix=		// Ortsvorwahl (z.B. 203) [WIDTH:50px]
capi_ulaw=0			// Alaw=0, Ulaw=1 (nicht ändern!) [HIDE:1]
capi_allow_unknown=0		// Ereignis auslösen, bei unbekannten Accounts? [HIDE:1]
Basiseinstellungen - ACC1 und ACC2
Ich habe insgesamt 5 VOIP Rufnummern in der FritzBox eingetragen. 4 von 1und1 , eine von Carpo-Lidl. Eine von 1und1 und die Carpo-Lidl ist keinem Telefoniegerät zugewiesen.
Code:
[acc1]
active=1			// <b>Account</b> [OPTION:1|aktiviert,0|deaktiviert] [ONCHANGE:set_group('DIV_ACC1_ACTIVE', 'acc1_active', '1')]
				// [HTML:<div ID='DIV_ACC1_ACTIVE'>]
name=Carpo Callback				// Name [WIDTH:250px]
number=4#47416632				// Rufnummer [WIDTH:250px]
type=capi			// Account-Typ [OPTION:capi|capi,voip|voip] [ONCHANGE:set_group('DIV_ACC1_TYPE_CAPI', 'acc1_type', 'capi'); set_group('DIV_ACC1_TYPE_VOIP', 'acc1_type', 'voip')]
				// [HTML:<div ID='DIV_ACC1_TYPE_CAPI'><br><script>show_title('CAPI')</script>]							
capi_controller_out=5		// Standardcontroller (ausgehende Verbindung): [OPTION:1|1,2|2,3|3,4|4,5|5]
				// [HTML:</div><script>set_group('DIV_ACC1_TYPE_CAPI', 'acc1_type', 'capi')</script><div ID='DIV_ACC1_TYPE_VOIP'><br><script>show_title('VoIP')</script>]
voip_registrar=			// Registrar-Server [WIDTH:250px]
voip_realm=			// Registrar-Realm (oder *) [WIDTH:250px]
voip_user=			// Username [WIDTH:250px]
voip_pass=			// Passwort [WIDTH:250px] [TYPE:password]
voip_do_not_register=0		// Registrieren [OPTION:0|ja,1|nein]
voip_proxy=			// (Optional) Proxy [WIDTH:250px]
voip_id=			// (Optional) ID [WIDTH:250px]
voip_contact=			// (Optional) Contact [WIDTH:250px]
				// [HTML:</div><script>set_group('DIV_ACC1_TYPE_VOIP', 'acc1_type', 'voip')</script><br><script>show_title('Registrar-Login')</script>]
registrar_active=0		// Registrar-Login [OPTION:1|aktiviert,0|deaktiviert] [ONCHANGE:set_group('DIV_ACC1_REGISTRAR', 'acc1_registrar_active', '1')]
				// [HTML:<div ID='DIV_ACC1_REGISTRAR'>]
registrar_user=			// Username [WIDTH:250px]
registrar_pass=			// Passwort [WIDTH:250px] [TYPE:password]
				// [HTML:</div><br><script>set_group('DIV_ACC1_REGISTRAR', 'acc1_registrar_active', '1');show_title('Internes Menü')</script>]
menu_entry=menu:main		// Einstiegsmenü [WIDTH:250px]
menu_keycode=*610		// Interne Kurzwahl [WIDTH:50px]
				// [HTML:</div><script>set_group('DIV_ACC1_ACTIVE', 'acc1_active', '1')</script>]

[acc2]
active=1			// <b>Account<b> [OPTION:1|aktiviert,0|deaktiviert] [ONCHANGE:set_group('DIV_ACC2_ACTIVE', 'acc2_active', '1')]
				// [HTML:<div ID='DIV_ACC2_ACTIVE'>]
name=1und1 Raus und Callback Raus				// Name [WIDTH:250px]
number=3#4703781				// Rufnummer [WIDTH:250px]
type=capi			// Account-Typ [OPTION:capi|capi,voip|voip] [ONCHANGE:set_group('DIV_ACC2_TYPE_CAPI', 'acc2_type', 'capi'); set_group('DIV_ACC2_TYPE_VOIP', 'acc2_type', 'voip')]
				// [HTML:<div ID='DIV_ACC2_TYPE_CAPI'><br><script>show_title('CAPI')</script>]							
capi_controller_out=5		// Standardcontroller (ausgehende Verbindung): [OPTION:1|1,2|2,3|3,4|4,5|5]
				// [HTML:</div><script>set_group('DIV_ACC2_TYPE_CAPI', 'acc2_type', 'capi')</script><div ID='DIV_ACC2_TYPE_VOIP'><br><script>show_title('VoIP')</script>]
voip_registrar=			// Registrar-Server [WIDTH:250px]
voip_realm=			// Registrar-Realm (oder *) [WIDTH:250px]
voip_user=			// Username [WIDTH:250px]
voip_pass=			// Passwort [WIDTH:250px] [TYPE:password]
voip_do_not_register=0		// Registrieren [OPTION:0|ja,1|nein]
voip_proxy=			// (Optional) Proxy [WIDTH:250px]
voip_id=			// (Optional) ID [WIDTH:250px]
voip_contact=			// (Optional) Contact [WIDTH:250px]
				// [HTML:</div><script>set_group('DIV_ACC2_TYPE_VOIP', 'acc2_type', 'voip')</script><br><script>show_title('Registrar-Login')</script>]
registrar_active=0		// Registrar-Login [OPTION:1|aktiviert,0|deaktiviert] [ONCHANGE:set_group('DIV_ACC2_REGISTRAR', 'acc2_registrar_active', '1')]
				// [HTML:<div ID='DIV_ACC2_REGISTRAR'>]
registrar_user=			// Username [WIDTH:250px]
registrar_pass=			// Passwort [WIDTH:250px] [TYPE:password]
				// [HTML:</div><br><script>set_group('DIV_ACC2_REGISTRAR', 'acc2_registrar_active', '1');show_title('Internes Menü')</script>]
menu_entry=menu:main		// Einstiegsmenü [WIDTH:250px]
menu_keycode=*611		// Interne Kurzwahl [WIDTH:50px]
				// [HTML:</div><script>set_group('DIV_ACC2_ACTIVE', 'acc2_active', '1')</script>]

SCIPT Änderungen und Ergänzungen

Um die Rückrufnummer per DTMF zu ändern habe ich das script 'funcs_re.sh' erstellt.
Code:
#!/var/tmp/sh

# Get a line from a (*.cfg file)
#  $1=file.cfg
#  $2=Line
#
#  returns: $CFG_VALUE
#
get_cfg_linecontent() {

  FILE="$1"
  LINE_NUM="$2"
  CFG_VALUE=""

  let cnt=1

  if [ ! -f "$FILE" ]; then
    return 0
  fi

  while read line;
  do
	if [ $cnt -eq $LINE_NUM ];
	then		
	   CFG_VALUE="`echo "$line"`";
	   return 0;
	else
	  let cnt=cnt+1
	fi	
  done < "$FILE"
    
}

# Set a line  in a *.cfg file
#  $1=file.cfg
#  $2=Line to change
#  $3=Value (=Value)
#
set_cfg_linecontent() {

  FILE="$1"
  CHANGE_LINE="$2"
  VALUE="$3"

  let cnt=0
  let create=0
  let weiter=0
  # Falls die Datei nicht existiert, erstellen
  if [ ! -f "$FILE" ]; then
     let create=1     
     echo "" > "$FILE"
     if [ ! $CHANGE_LINE -eq 0 ] && [ ! $CHANGE_LINE -eq 1 ]; then
        let weiter=1
        while [ $weiter -eq 1 ]; do
          let create=create+1
          echo "" >> "$FILE"
          if [ $create -eq $CHANGE_LINE ]; then
             let weiter=0
          fi
        done 
     fi
  fi
  let weiter=1
  while read line;
  do
        let cnt=cnt+1
        if [ $cnt -eq $CHANGE_LINE ];
	then		
           echo "$VALUE"
           let weiter=0
	else
	   echo "$line"
	fi
  done < "$FILE" > "$FILE.new"

  if [ -f "$FILE.new" ]; then
	rm "$FILE"
	mv "$FILE.new" "$FILE"
  fi
  
  while [ $weiter -eq 1 ]; do
    let cnt=cnt+1
    if [ $cnt -eq $CHANGE_LINE ]; then
      let weiter=0
      echo "$VALUE" >> "$FILE"
    else 
      echo "" >> "$FILE"
    fi
  done 
  
}

Zusatzlich die Anregung von bodega aufgegriffen und das script 'change_callback.sh' erstellt.
Code:
#!/var/tmp/sh
. /var/dtmfbox/script.cfg
. /var/dtmfbox/script/funcs_re.sh
# Wie lautet die neue Nummer 
LcEingabe="$1"
SRC_ID="$2" 
echo "LcEingabe: ($LcEingabe)"
set_cfg_linecontent "/var/dtmfbox/callback.cfg" "1" "$LcEingabe"
echo "Callback1 geändert!"
$DTMFBOX $SRC_ID -speak "Nummer erfolgreich geaendert. Bitte auflegen."

Anpassung des Script 'action_cbct.sh'

Durch die Anpassungen in diesem Script wird geregelt, daß bei einem Anruf auf acc2, die Rückrufnummer ausgelesen wird aus der Datei 'callback.cfg' und acc1 für den Rückruf genutzt wird.
Im Script bitte in der Zeile 'CALLBACK_CALLING_ACC="4741XXXX"' die Rufnummer '4741XXXX' durch die Rufnummer(MSN) der acc1 ersetzen.

Code:
#!/var/tmp/sh
. /var/dtmfbox/script.cfg
. /var/dtmfbox/script/funcs.sh
. /var/dtmfbox/script/funcs_re.sh

check_callback() {
  let cnt=1
  let ok=1
  while [ "$ok" = "1" ];
  do
	eval CALLBACK="\$CALLBACK${cnt}"
	if [ "$CALLBACK" = "" ]; then break; fi
	
	SPLIT=`echo $CALLBACK | sed 's/\// /g'`
	let i=0;
	for SPLIT_VAL in $SPLIT;
	do
	  if [ "$i" = "0" ]; then CALLBACK_TRIGGER_NO="$SPLIT_VAL"; fi
	  if [ "$i" = "1" ]; then CALLBACK_CALLING_NO="$SPLIT_VAL"; fi
	  if [ "$i" = "2" ]; then CALLBACK_TRIGGER_ACC="$SPLIT_VAL"; fi
	  if [ "$i" = "3" ]; then CALLBACK_CALLING_ACC="$SPLIT_VAL"; fi
	  if [ "$i" = "4" ]; then CALLBACK_CALLING_CTRL="$SPLIT_VAL"; fi
	  let i=i+1;
	done
	if [ "$CALLBACK_CALLING_NO" = "" ]; then CALLBACK_CALLING_NO="$DST_NO"; fi
	if [ "$CALLBACK_CALLING_ACC" = "" ]; then CALLBACK_CALLING_ACC="$ACC_ID"; fi
	if [ "$CALLBACK_TRIGGER_ACC" = "" ]; then CALLBACK_TRIGGER_ACC="$ACC_ID"; fi
	VALID_CB=`echo $DST_NO | sed s/$CALLBACK_TRIGGER_NO/OK/g`
	if [ "$VALID_CB" = "OK" ];
	then
	 if [ "$CALLBACK_TRIGGER_ACC" = "$ACC_ID" ] || [ "$CALLBACK_TRIGGER_ACC" = "$SRC_NO" ]; then
		
		# regex: replace number
		CALLBACK_CALLING_NO=`echo $DST_NO | sed "s/$CALLBACK_TRIGGER_NO/$CALLBACK_CALLING_NO/g"`
                if [ "$ACC_ID" = "2" ]; then
                  get_cfg_linecontent "/var/dtmfbox/callback.cfg" "1"
                  if [ "$CFG_VALUE" != "" ];
                    then
                      CALLBACK_CALLING_NO="$CFG_VALUE"
                  fi
                fi
		# get number from dtmfbox.cfg  and remove X#... from capi-voip accounts
		get_cfg_value "/var/dtmfbox/dtmfbox.cfg" "acc$CALLBACK_CALLING_ACC" "number"		
		if [ ! -z "$CFG_VALUE" ]; then
			CALLBACK_CALLING_ACC_TMP=`echo $CFG_VALUE | sed -e 's/.*#//g'`
			get_cfg_value "/var/dtmfbox/dtmfbox.cfg" "acc$CALLBACK_CALLING_ACC" "type"						
                        if [ ! -z "$CFG_VALUE" ]; then
                           CFG_VALUE=`echo $CFG_VALUE | sed -e 's/[^a-z]//g'`
                        fi 
	                if [ "$CFG_VALUE" = "capi" ] && [ "$CALLBACK_CALLING_CTRL" = "" ]; then
			    get_cfg_value "/var/dtmfbox/dtmfbox.cfg" "acc$CALLBACK_CALLING_ACC" "capi_controller_out"
                            if [ ! -z "$CFG_VALUE" ]; then
                              CFG_VALUE=`echo $CFG_VALUE | sed -e 's/[^0-9]//g'`
                            fi 
		            CALLBACK_CALLING_CTRL="$CFG_VALUE"
	                fi
			CALLBACK_CALLING_ACC="$CALLBACK_CALLING_ACC_TMP"						
		fi
                if [ "$ACC_ID" = "2" ]; then
                   CALLBACK_CALLING_ACC="4741XXXX"
                fi 
		echo "CbCt-Script: valid callback - $CALLBACK_CALLING_ACC -> $CALLBACK_CALLING_NO (Ctrl: $CALLBACK_CALLING_CTRL)"

		# Another script already active?		
		if [ -f "$ACTION_CONTROL" ]; then		
			echo "CbCt-Script: Another script already got the call! Aborting..."
			VALID_CB=""
			exit 1
		fi		 		
		echo "CB" > "$ACTION_CONTROL"
		return 1
	 else
		VALID_CB=""
	 fi
	else
	VALID_CB=""
	fi

	let cnt=cnt+1
  done
}

check_callthrough() {
  let cnt=1
  let ok=1

  while [ "$ok" = "1" ];
  do
	eval CALLTHROUGH="\$CALLTHROUGH${cnt}"
	if [ "$CALLTHROUGH" = "" ]; then break; fi
	
	SPLIT=`echo $CALLTHROUGH | sed 's/\// /g'`
	let i=0;
	for SPLIT_VAL in $SPLIT;
	do
	  if [ "$i" = "0" ]; then CALLTHROUGH_TRIGGER_NO="$SPLIT_VAL"; fi
	  if [ "$i" = "1" ]; then CALLTHROUGH_TRIGGER_ACC="$SPLIT_VAL"; fi
	  let i=i+1;
	done
	if [ "$CALLTHROUGH_TRIGGER_ACC" = "" ]; then CALLTHROUGH_TRIGGER_ACC="$ACC_ID"; fi

	VALID_CT=`echo $DST_NO | sed s/$CALLTHROUGH_TRIGGER_NO/OK/g`
	if [ "$VALID_CT" = "OK" ];
	then		
	if [ "$CALLTHROUGH_TRIGGER_ACC" = "$ACC_ID" ] || [ "$CALLTHROUGH_TRIGGER_ACC" = "$SRC_NO" ]; then
		echo "CbCt-Script: valid callthrough - $CALLTHROUGH_TRIGGER_ACC -> $CALLTHROUGH_TRIGGER_NO"
		
		# Another script already active?
		if [ -f "$ACTION_CONTROL" ]; then				
			echo "CbCt-Script: Another script already got the call! Aborting..."
			VALID_CT=""
			exit 1
		fi
		echo "CT" > "$ACTION_CONTROL"
		 		
		$DTMFBOX $SRC_ID -hook up
		$DTMFBOX $SRC_ID -goto "menu:callthrough_pin"
		return 1
	else		
		 VALID_CT=""
	fi
	else
	VALID_CT=""
	fi

	let cnt=cnt+1
  done
}

if [ "$EVENT" = "CONNECT" ] && [ "$DIRECTION" = "INCOMING" ];
then
  # remove address from number (voip only)
  if [ "$TYPE" = "VOIP" ];
  then
	 DST_NO=`echo $DST_NO | sed 's/\(.*\)@.*/\1/g'`
  fi

  #############################################
  # Callback
  #############################################
  check_callback
  if [ "$VALID_CB" = "OK" ];
  then	
	 exit 1
  fi

  #############################################
  # Callthrough
  #############################################
  check_callthrough
  if [ "$VALID_CT" = "OK" ];
  then
	$DTMFBOX $SRC_ID -hook up
	$DTMFBOX $SRC_ID -goto "menu:callthrough_pin"
	exit 1
  fi
fi


if [ "$EVENT" = "DISCONNECT" ];
then
  if [ -f "$ACTION_CONTROL" ];
  then
	CBCT_TYPE=`cat "$ACTION_CONTROL"`

	# callback on disconnect
	if [ "$CBCT_TYPE" = "CB" ];
	then
	  rm "$ACTION_CONTROL"
	  check_callback
	  if [ "$VALID_CB" = "OK" ];
	  then
		sleep 3
		echo "CbCt-Script: Callback $CALLBACK_CALLING_ACC -> $CALLBACK_CALLING_NO"
		CON_ID=`$DTMFBOX -call "$CALLBACK_CALLING_ACC" "$CALLBACK_CALLING_NO" "$CALLBACK_CALLING_CTRL"`		
		$DTMFBOX $CON_ID -goto "menu:callthrough_pin"
		exit 1;
	  fi
	fi	
  fi
fi

Anpassung des Script 'callthrough.sh'

Das war notwendig um Leerstellen von Rückgaben der Funktion 'get_cfg_value' zu entfernen.

Code:
#!/var/tmp/sh
. /var/dtmfbox/script.cfg
. /var/dtmfbox/script/funcs.sh

MODE="$1"
SRC_ID="$2"
DST_ID="$3"
OWN_ACC_ID="$4"
TRG_ACC_ID="$5"

############################################
# DTMF=* (return to previous menu)
############################################
if [ "$MODE" = "*" ];
then
  # goto to previous menu
  if [ "$DST_ID" != "-1" ]; then
    $DTMFBOX $DST_ID -hook down
    $DTMFBOX $SRC_ID -goto "menu:callthrough_number($TRG_ACC_ID)"
  else
    $DTMFBOX $SRC_ID -goto "menu:callthrough_account"
  fi
fi

############################################
# DTMF!=* (dial number)
############################################
if [ "$MODE" != "*" ];
then
  # reset number?
  RESET_NO=`echo "$MODE" | sed -e 's/.*\*.*/RESET_NO/g'`
  if [ "$RESET_NO" = "RESET_NO" ]; 
  then
    if [ "$DST_ID" != "-1" ]; then $DTMFBOX $DST_ID -hook down; fi
    $DTMFBOX $SRC_ID -speak "Abbruch."
    sleep 1
    $DTMFBOX $SRC_ID -goto "menu:callthrough_number($TRG_ACC_ID)"    
    exit 1
  fi

  # make call!
  NO=`echo "$MODE" | sed -e 's/#//g'`
  if [ "$DST_ID" != "-1" ]; then $DTMFBOX $DST_ID -hook down; fi  
  
  if [ "$NO" != "" ];
  then
  
   # get number from dtmfbox.cfg  and remove X#... from capi-voip accounts
   get_cfg_value "/var/dtmfbox/dtmfbox.cfg" "acc$TRG_ACC_ID" "number"
   if [ ! -z "$CFG_VALUE" ]; then					
	CALLBACK_CALLING_ACC_TMP=`echo $CFG_VALUE | sed 's/.*#//g'`						
	get_cfg_value "/var/dtmfbox/dtmfbox.cfg" "acc$TRG_ACC_ID" "type"
        # Nur die Zeichen 'a bis z' zulassen - Leerstellen rausfiltern
        if [ ! -z "$CFG_VALUE" ]; then
           CFG_VALUE=`echo $CFG_VALUE | sed -e 's/[^a-z]//g'`
        fi 
	if [ "$CFG_VALUE" = "capi" ] && [ "$CALLBACK_CALLING_CTRL" = "" ]; then
		get_cfg_value "/var/dtmfbox/dtmfbox.cfg" "acc$TRG_ACC_ID" "capi_controller_out"
                # Nur die Zahlen '0 bis 9' zulassen - Leerstellen rausfiltern
                if [ ! -z "$CFG_VALUE" ]; then
                  CFG_VALUE=`echo $CFG_VALUE | sed -e 's/[^0-9]//g'`
                fi 
		CALLBACK_CALLING_CTRL="$CFG_VALUE"
	fi
	TRG_ACC_ID="$CALLBACK_CALLING_ACC_TMP"						
	echo "Callthrough-Script: $TRG_ACC_ID -> $NO (Ctrl: $CALLBACK_CALLING_CTRL)"
    fi

    # make call
    $DTMFBOX $SRC_ID -call "$TRG_ACC_ID" "$NO" "$CALLBACK_CALLING_CTRL"
  else  
    $DTMFBOX $SRC_ID -speak "Bitte Nummer eingeben."
  fi
fi

Anpassung des Script 'misc_fb.sh'
War notwenig, weil mehr als die IP angesagt wurde und verwirrte.
Code:
#!/var/tmp/sh
. /var/dtmfbox/script.cfg

MODE="$1"
SRC_ID="$2"
TEXT=""

#########################
## 1 - IP-Adresse
#########################
if [ "$MODE" = "IP" ];
then
  # TEXT="Ihre Ei,Pi Adresse lautet: `showdsldstat | grep '0: ip' | sed -r 's/.*ip.(.*)\/.*mtu.*/\1/g' | sed 's/\./-/g'`"
  TEXT="Ihre Ei,Pi Adresse lautet: `showdsldstat | grep '0: ip'| sed -e 's/.*ip//g' | sed -e 's/peer.*//g' | sed -e 's/\./||_:_:/g'` .Wiederholung `showdsldstat | grep '0: ip'| sed -e 's/.*ip//g' | sed -e 's/peer.*//g' | sed -e 's/\./||_:_:/g'` .Jetzt bitte auflegen"
fi

# | sed -e 's/[^0-9.]/./g'

#########################
## 2 - Letzter Reboot
#########################
if [ "$MODE" = "LAST_REBOOT" ];
then
	IS_MIN=`uptime | sed -r 's/.*up (.*) min.*$/OK/g'`
	IS_DAY=`uptime | sed -r 's/.*up (.*) day.*$/OK/g'`
	if [ "$IS_MIN" = "OK" ] && [ "$IS_DAY" != "OK" ];
	then
		NO=`uptime | sed -r 's/.*up (.*) min.*$/\1/g'`
		FRMT=" Minuten "
	else
		if [ "$IS_DAY" = "OK" ];
		then
			NO=`uptime | sed -r 's/.*up (.*) day.*$/\1/g'`
			if [ "$NO" = "1" ]; then FRMT=" einem Tag "; NO=""; else FRMT=" Tagen "; fi
		else
			NO=`uptime | sed -r 's/.*up (.*):.*:.*/\1/g'`
			NO2=`uptime | sed -r 's/.*up .*:(.*),.*:.*/\1/g'`
			NO=`echo "$NO" | sed -r 's/0(.)/\1/g'`
			NO2=`echo "$NO2" | sed -r 's/0(.)/\1/g'`
			if [ "$NO" = "1" ]; then FRMT=" einer Stunde "; NO=""; else FRMT=" Stunden "; fi
			if [ "$NO2" = "1" ]; then FRMT2=" einer Minute "; NO2=""; else FRMT2=" Minuten "; fi
			NO="$NO $FRMT und $NO2 $FRMT2"
			FRMT=""; FRMT2=""
		fi
	fi
	TEXT="Vor $NO $FRMT war der letzte Ribuht."
fi

#########################
## 3 - Uhrzeit
#########################
if [ "$MODE" = "CURRENT_TIME" ];
then
	TEXT="Es ist: `date +\"%H Uhr %M .\"`."
fi

#########################
## OUTPUT
#########################
if [ "$TEXT" != "" ]; then
   $DTMFBOX $SRC_ID -speak "$TEXT"
fi


Menü-Einstellungen
Danach sind noch einige Anpassungen im Menü Bereich notwendig. Alle Eingaben werde ich als Text-Editor Anzeigen einstellen. Kann natürlich auch über die Eingabemasken erfolgen. Das Resultat sollte dann aber dem Angezeigten entsprechen. Telefonnummern und Pins müssen natürlich angepasst werden.

Menü hinzugefügt 'menu:callthrough_eins'

Code:
[menu:callthrough_eins]
say=Bitte die zu waehlende Nummer eingeben. Account 1 und 1.
*=script:callthrough
#=script:callthrough

Menü hinzugefügt 'menu:menu:change_callback'
PIN '1234' individuell anpassen

Code:
[menu:change_callback]
say=Durchwahl Nummer aendern. Wie lautet die Pin. Stern Ei,Pi Adresse
1234#=menu:dtmf_commands
*=script:misc_fb("IP")


Menü geändert 'menu:callthrough_pin'
Pin '1234' anpassen nach Wunsch

Code:
[menu:callthrough_pin]
say=Durchwahl. Hallo . Wie lautet die Pin. 
1234#=menu:callthrough_eins(2)
*=menu:change_callback

Menü geändert 'menu:callthrough_account'

Code:
[menu:callthrough_account]
say=Waehle 2 fuer 1 und 1. 1 fuer Caarpo. 0 fuer Intern.
0#=menu:callthrough_number(0)
1#=menu:callthrough_number(1)
2#=menu:callthrough_carpo(1)
3#=menu:callthrough_eins(2)
4#=menu:callthrough_number(1)
5#=menu:callthrough_number(1)
6#=menu:callthrough_number(1)
7#=menu:callthrough_number(1)
8#=menu:callthrough_number(1)
9#=menu:callthrough_number(1)
10#=menu:callthrough_number(1)
*=menu:main

Menü geändert 'menu:dtmf_commands'

Code:
[menu:dtmf_commands]
say=DTMF Befehle. Bitte neue Nummer eingeben.
#=script:change_callback
*=menu:main

Menüscipt hinzugefügt 'script:change_callback'
Funktioniert nur im Text-Editor Modus

Code:
[script:change_callback]
cmd=/var/dtmfbox/script/change_callback.sh(/var/dtmfbox/script/change_callback.sh, "%dtmf%", "%src_id%")

Im Bereich 'Scripteinstellungen' ändern:

Bereich 'Start' : dtmfbox automatisch starten 'ja'

Bereich 'Callback' im Text-Editor.

Handynummer in der ersten Callback-Regel 'CALLBACK1' entsprechen anpassen

In der Callback-Regel 2 'CALLBACK2' musste ich die Reguläre Expression anpassen, weil von Carpo-Lidl die Anrufnummer immer in dem Format Land/Stadt/Nummer übergeben wurde ohne die zwei '00' in der Ländervorwahl. Das könnte bei anderen Providern anders sein.

Mit Carpo-Lidl: 'CALLBACK2="\(.*\)/00\1/1/1/5"'
Ev. bei anderen Providern: 'CALLBACK2="\(.*\)/\1/1/1/5"'

Code:
# [SECTION:Callback]
# [HTML:<script>function assist_cb(obj) { trigger_no=prompt('Bitte Trigger-Nummer eingeben, auf die der Callback reagieren soll.\n\nHinweis: Es können Regular Expressions verwendet werden, wie z.B.: \\(.*12345\\)'); if(trigger_no == null || trigger_no.length == 0) return; callback_no=prompt('Bitte Rückruf-Nummer eingeben.\n\nHinweis: Falls die Trigger-Nummer als Regular-Expression angegeben wurde, können hier Replace-Platzhalter angegeben werden, wie z.B.: \\1', ""); if(callback_no == null || callback_no.length == 0) return; trigger_acc=prompt('Bitte Trigger-Account 1 bis 10 eingeben (optional).\n\nHinweis: Die Angabe der Account-Rufnummer ist ebenfalls möglich.', ""); if(trigger_acc == null) trigger_acc = ''; callback_acc=prompt('Bitte Callback-Account 1 bis 10 eingeben (optional).\n\nHinweis: Die Angabe der Account-Rufnummer ist ebenfalls möglich.', ""); if(callback_acc == null) callback_acc = ''; obj.value = trigger_no + '/' + callback_no + '/' + trigger_acc + '/' + callback_acc; obj.onchange() }</script>]
CALLBACK1="\(.*1986999\)/015201986999/1/1/5"					        # 1. Callback Regel [WIDTH:150px] [HTML: <input type='button' value='Assistent' onclick="javascript:assist_cb(document.getElementById('Callback_CALLBACK1'))">]
CALLBACK2="\(.*\)/00\1/1/1/5"						# 2. Callback Regel [WIDTH:150px] [HTML: <input type='button' value='Assistent' onclick="javascript:assist_cb(document.getElementById('Callback_CALLBACK2'))">]
CALLBACK3="\(.*\)/\1/2/1/5"						# 3. Callback Regel [WIDTH:150px] [HTML: <input type='button' value='Assistent' onclick="javascript:assist_cb(document.getElementById('Callback_CALLBACK3'))">]
# CALLBACKX=""						# X. Callback Regel [WIDTH:150px] [HTML: <input type='button' value='Assistent' onclick="javascript:assist_cb(document.getElementById('Callback_CALLBACKX'))">]

Viel Erfolg !!
Bei mir funktioniert alles einwandfrei
 
Zuletzt bearbeitet:
Ergebnis Rückwärtssuche im FB-Telefobuch speichern!

Hallo,
ist es Möglich das Dtmf-Box bei einem ankommenden Anruf eine Rückwärtssuche ausführt und den Namen dann im FB-Telefonbuch speichert?!
Ich habe an meiner 7270 eine externe Basis am Fon1 angeschlossen und telefoniere nur über voip!?
 
Zuletzt bearbeitet:
Hallo,

nachdem ich bisherige Versuche mit der DTMFBOX erfolglos abgebrochen habe, weil ich sie einfach nicht zum Laufen gebracht habe, habe ich mit der neusten Version noch einmal einen Versuch gestartet - und siehe da, auf einmal ist es mir gelungen einen Account über CAPI einzurichten.
Voller Hoffnung wollte ich auch gleich einen Callback-Server einrichten, aber das ist mir nicht gelungen.
Ich bekomme eine Meldung "Another application got that call" - was für eine andere Applikation könnte dazwischenfunken?

Ich poste mal mein Log:

10:58:45 dtmfbox 0.5.0 (rc3)
10:58:45 PJSIP 1.0.1
10:58:47 Conference bridge created [8000/16/1]
10:58:47 Allocate 11 connections with 4 RTP/RTCP transports
10:58:47 Init CAPI ...
10:58:47 CAPI controller: 5
10:58:47 Found controller #1 with 2 B-channel(s)
10:58:47 Found controller #2 with 2 B-channel(s)
10:58:47 Found controller #3 with 2 B-channel(s)
10:58:47 Found controller #4 with 1 B-channel(s)
10:58:47 Found controller #5 with 3 B-channel(s)
10:58:47 CAPI registered (ApplID: 7, B-Channels: 10)
10:58:48 Build a-law/pcm table buffer
10:58:50 CAPI initialized!
10:58:52 [plugin.menu] 29 entries loaded!
10:58:52 [plugin.menu] Initialized!
10:58:52 #1 - Plugin "libmenu.plugin.so" loaded!
10:58:52 (0x3ff) - Listen to CAPI controller 1 ...
10:58:52 (0x3ff) - Listen to CAPI controller 4 ...
10:58:52 (0x3ff) - Listen to CAPI controller 3 ...
10:58:52 (0x3ff) - Listen to CAPI controller 5 ...
10:58:52 Start CAPI listen loop ...
10:59:20 [type=capi/inc conid=0 accid=1] (IND) CAPI_CONNECT
10:59:20 [plugin.menu] Action: script:action_wrapper (acc=1 con=0)
10:59:21 Ignoring connection for unknown account. CalledParty=**620, CallingParty=**003834254xxx
10:59:21 [plugin.menu] Script: /var/dtmfbox/script/action.sh(/var/dtmfbox/script/action.sh, "CONNECT", "CAPI", "INCOMING", "0", "-1", "1#254xxx", "03834254xxx", "1", "", "") (acc=1 con=0)
10:59:26 CAPI 0x3304 - Another application got that call
10:59:26 [type=capi/inc conid=0 accid=1] (IND) CAPI_DISCONNECT
10:59:26 [plugin.menu] Action: script:action_wrapper (acc=1 con=0)
10:59:26 [plugin.menu] Script: /var/dtmfbox/script/action.sh(/var/dtmfbox/script/action.sh, "DISCONNECT", "CAPI", "INCOMING", "0", "-1", "1#254xxx", "03834xxx

Viele Grüße

Markus

PS: nachdem ich heute Vormittag noch einmal ein wenig herumgespielt habe, ist mir folgendes aufgefallen:
Wenn ich als Triggernummer eine von meinen 1&1-Festnetznummern verwende kommt es wunschgemäß zum Callback.
Gebe ich allerdings meine Handynummer an und rufe dann vom handy aus an, so wird zwar im Status ein eingehender Anruf von ebendieser Nummer angezeigt (1&1-Handynummer im Format 01520...), es erfolgt aber keine Rückruf zum Callback.
 
Zuletzt bearbeitet:
Fehler 'CAPI 0x3304 - Another application got that call' bei Callback

Hallo,

Hatte bei meinen diversen Versuchen auch zweimal diese Meldung. Ein Neu-Start der Fritzbox und der DTMFbox hat das Problem dann beseitigt.
Ursache konnte ich aber auch nicht feststellen.
 
Ich mache hier noch einmal einen Versuch eine Problemlösung zu finden. Ich habe zwei Accounts über CAPI registriert, ein Account von 1&1 der andere von SIPGATE.
Ich möchte einen Callback dergestalt realisieren, das egal wer auf Account 2 anruft über Account 1 eine Rückruf zu einer bestimmten Handynummer erfolgt.
Mein Eintrag als regEx sieht folgendermaßen aus: .*/Handynummer/2/1

Wenn ich jetzt anrufe kann ich im Statusfeld beobachten, daß der Ruf tatsächlich reinkommt (außer von meinem 1&1 Handy, da kommt der Anruf meistens gar nicht erst durch, sondern ich höre schon vorher komische Klingeltöne). Es erfolgt aber kein Rückruf. Es kann doch nicht sein, daß die DTMFBOX bei allen anderen funktioniert, nur bei mir nicht!
Viele Grüße

Markus

[Edit frank_m24: Bitte benutzt CODE Tags für solche Ausgaben.]
Code:
10:25:30 [type=capi/inc conid=0 accid=2 src=2#03834xxx trg=03834xxx ctrl=5] (IND) CAPI_CONNECT
 10:25:30 (IND) CAPI_INFO (0x0070) - UNKNOWN INFO
 10:25:30 (IND) CAPI_INFO (0x0018) - CHANNEL IDENTIFICATION (0x03)
 10:25:30 (IND) CAPI_INFO (0xc000) - UNKNOWN INFO
 10:25:30 [ctrl=5, plci=5125] CNF: CAPI_ALERT
 10:25:30 [plugin.menu] Action: script:action_wrapper (acc=2 con=0)
 10:25:30 [plugin.menu] Script: /var/dtmfbox/script/action.sh(/var/dtmfbox/script/action.sh, "CONNECT", "CAPI", "INCOMING", "0", "-1", "2#03834xxx", "03834xxx", "2", "", "") (acc=2 con=0)
 10:25:30 Set high priority
 10:25:32 Queue=96, Pending=0
 10:25:32 Queue=97, Pending=0
 10:25:33 Queue=98, Pending=0
 10:25:38 CAPI 0x3304 - Another application got that call
 10:25:38 [type=capi/inc conid=0 accid=2 src=2#03834xxx trg=03834xxx ctrl=5] (IND) CAPI_DISCONNECT
 10:25:38 [plugin.menu] Action: script:action_wrapper (acc=2 con=0)
 10:25:38 [plugin.menu] Script: /var/dtmfbox/script/action.sh(/var/dtmfbox/script/action.sh, "DISCONNECT", "CAPI", "INCOMING", "0", "-1", "2#03834xxx", "03834xxx", "2", "", "13060") (acc=2 con=0)
 10:25:38 Set low priority
 10:25:42 connection_by_free - Connection: 0
 10:25:42 [type=capi/inc conid=0 accid=2 src=2#03834xxx trg=03834xxx ctrl=5] (IND) CAPI_CONNECT
 10:25:42 (IND) CAPI_INFO (0x0070) - UNKNOWN INFO
 10:25:42 (IND) CAPI_INFO (0x0018) - CHANNEL IDENTIFICATION (0x03)
 10:25:42 (IND) CAPI_INFO (0xc000) - UNKNOWN INFO
 10:25:42 [ctrl=5, plci=5893] CNF: CAPI_ALERT
 10:25:42 [plugin.menu] Action: script:action_wrapper (acc=2 con=0)
 10:25:42 [plugin.menu] Script: /var/dtmfbox/script/action.sh(/var/dtmfbox/script/action.sh, "CONNECT", "CAPI", "INCOMING", "0", "-1", "2#03834xxx", "03834xxx", "2", "", "") (acc=2 con=0)
 10:25:42 Set high priority
 10:25:43 Queue=99, Pending=0
 10:25:44 Queue=100, Pending=0
 10:25:44 Queue=101, Pending=0
 10:25:45 (IND) CAPI_INFO (0x8045) - DISCONNECT
 10:25:45 (IND) CAPI_INFO (0x001e) - PROGRESS INDICATOR (0x02)
 10:25:45 (IND) CAPI_INFO (0x0008) - CAUSE (0x04)
 10:25:45 (IND) CAPI_INFO (0xc000) - UNKNOWN INFO
 10:25:45 CAPI 0x3490 - Normal call clearing
 10:25:45 [type=capi/inc conid=0 accid=2 src=2#03834xxx trg=03834xxx ctrl=5] (IND) CAPI_DISCONNECT
 10:25:45 [plugin.menu] Action: script:action_wrapper (acc=2 con=0)
 10:25:45 [plugin.menu] Script: /var/dtmfbox/script/action.sh(/var/dtmfbox/script/action.sh, "DISCONNECT", "CAPI", "INCOMING", "0", "-1", "2#03834xxx", "03834xxx", "2", "", "13456") (acc=2 con=0)
 10:25:45 Set low priority
 
Internetradio oder MP3-Stream angeschlossener HDD auf ISDN-Telefon ausgeben?

Hallo,

ist es mit DTMFBox möglich, Internetradio direkt oder MP3-Songs (z.B. anhand einer Playliste) einer angeschlossenen USB-HDD über ein ISDN-Telefon (am besten zur Beschallung des Raumes, natürlich im Rahmen der Telefon-Freisprech-Speaker) auszugeben?

Wenn ja, welche Voraussetzungen muss das ISDN-Telefon mitbringen.

dominiks
 
seit gestern oder vorgestern steht bei mir

Achtung:
Die aktuellen Einstellungen und Skripte sollten zurueckgesetzt werden, da sie nicht mehr aktuell sind!

dtmfbox: v0.5.0-rc3
Einstellungen:

es scheint das sich dtmfbox selbstädnig upgedatet hat, nun funkionieren keine callbacks mehr bzw calltrouths mehr.


habe jetzt doch alles zurückgesetzt und alle daten übernommen am anfang ging der callback nicht. habe ich aber soweit wieder hinbekommen.

jetzt habe ich das problem das wenn ich unter script bearbeiten gehe kann ich keine scripts auswählen um diese zu editieren im anhang mal ein bild hier scheint auch eurgend wie der pfad falsch zu sein, kann mir da einer weiterhelfen ?

wie kann ich in zukunft unterdrücken das sich dtmfbox selbständig updatet? falls ich mal für längere zeit unterwegs bin währe das schlecht wenn ein updatet selbständig geladen wird und es dann wieder nicht funktioniert bzw. erstmal wieder angepast werden muss.

MfG
markos
 

Anhänge

  • script bearbeiten.JPG
    script bearbeiten.JPG
    144.8 KB · Aufrufe: 30
Zuletzt bearbeitet:
dtmfbox als SIP - ISDN Gateway per SIP Trunk

Hallo Marco,

herzlichen Glückwunsch zu dieser wirklich tollen Erweiterung für die FritzBox. Ich versuch hier anscheinend was zu machen, was nicht so ganz der üblichen Verwendung der dtmfbox entspricht, vielleicht kann sie das auch gar nicht.

Ich will die dtmfbox eigentlich dafür verwenden, eine FritzBox als ein Gateway von SIP Telefonen ins ISDN Netz zu verwenden. Erschwerend kommt hinzu, dass ich sipxecs als internen SIP Server verwenden möchte. Sipxecs kann in der neuen Version einen SIP Trunk verwenden, um Anrufe über ein Gateway weiterzureichen. Die dtmfbox soll über einen SIP Trunk angesprochen werden und dann als Gateway für ISDN dienen.

Aktuell hab ich eine FritzBox Fon mit 16MB, dtmfbox standalone v0.5.0.r3 ist drauf und läuft. Es ist ein Account definiert, der die CAPI als einen Account per SIP Registrar nach außen gibt. Getestet hab ich das ganze mit sipxecs selber und einem X-Lite Client.

Folgendes funktioniert:

Anmelden eines Clients direkt an der dtmfbox: OK
Anmelden der sipxbridge an der dtmfbox: OK

Anruf Client direkt an der dtmfbox -> ISDN: Ok
Anruf ISDN -> SIP Client direkt dtmfbox: OK
Anruf ISDN -> sipxbridge an der dtmfbox: OK
Anruf sipxbridge an der dtmfbox -> ISDN: funktioniert NICHT

Der Fehler ist eher mysteriös:

Code:
REGISTER sip:192.168.0.254:5061 SIP/2.0
Call-ID: [email protected]
CSeq: 2 REGISTER
From: <sip:[email protected]>;tag=xxxxxxxxxxxx
To: <sip:[email protected]>
Via: SIP/2.0/UDP 192.168.0.1:5080;branch=xxxxxxxxxxxxxxxxxx
Max-Forwards: 70
User-Agent: sipXecs/3.11.11 sipXecs/sipxbridge (Linux)
Allow: INVITE,BYE,ACK,CANCEL,OPTIONS,PRACK
Supported: 100rel
Contact: <sip:[email protected]:5080;transport=udp>
Expires: 60
Authorization: Digest username="xxx",realm="192.168.0.254",nonce="xxxxxxxxxxxx",uri="sip:192.168.0.254:5061",response="xxxxxxxxxx",algorithm=md5,opaque="xxxxxxxxxxxxxxxxxx"
Content-Length: 0



 22:04:06 Request 4 unsupported!
 22:04:06 Found credentials -> user: xxx, realm: 192.168.0.254
 22:04:06 DIGEST=HEADER xxxxxxxxxxxxxxxxx
 22:04:06 Client 192.168.0.1:5080 authorized for account xxx
 22:04:06 Status: 200 (OK)
 22:04:06 Message Request msg REGISTER/cseq=2 (rdata0x5270f4) from 192.168.0.1:5080 was dropped/unhandled by any modules

Der Client meldet dann: Call failed / not found

Soll der Weg so überhaupt funktionieren, oder mach ich da was, was der Registrar Modus gar nicht kann?
 
@harry47:
Vielen Dank für deine ausführliche Beschreibung. Wirklich gut gemacht! :D
Ich habe Teile übernommen und in das Release v0.5.0 einfließen lassen.

Mir ist auch aufgefallen, das die Neuanlage mittels cfg_set_value() ja garnicht geht ;).
Die Funktion muss auf jedenfall noch verbessert werden.

@juelich:
Versuch mal die dtmfbox im Vordergrund zu starten (./rc.dtmfbox foreground).
Dann auf der Konsole beobachten, was das Callbackskript ausgibt.

@dominiks:
Es gibt eine Webradio Funktion. Diese könnte man auch nutzen, um MP3-Songs von HDD abzuspielen.
Das ISDN-Telefon, was ich nutze, kannst du aus meiner Signatur ablesen. Nichts großartiges, es bleiben 8khz.
Natürlich geht auch die Anbindung über SIP-Registrar, somit funktioniert das MP3-Abspielen auch per SIP-Client.
Wenn man eine Soundkarte an die FB bekommt, könnte man den Stream sogar darauf umleiten um die dtmfbox als mpd zu nutzen.

@headysbrain:
Das mit dem automatischen Update war keine gute Idee von mir, sorry :(
Ich bin auch wieder zur alten Methode übergegangen und werden die Download-Versionen sammeln.
Wird in Zukunft also nicht mehr passieren.
Das die Auswahlbox fehlt, aber "Neu/Löschen" da ist, wundert mich etwas. 'dtmfbox_scriptedit.cgi' wäre die Datei. Da müsste zumindest soetwas drin auftauchen:
Code:
...
if [ "$SHOW_FILE_SELECTION" != "0" ];
then	
	echo "<table border='0' cellpadding='0' cellspacing='0' width='95%'><tr><td>"
	echo "<select name='ffile_sel' onChange='javascript:submit()' style='width:100%'>"
...

@maxi-sip:
Das sollte funktionieren. Der REGISTER geht soweit, und 200 OK kommt zurück. Wenn du mit sipxecs einen
Anruf durchführst, aber im Log kein INVITE erscheint, muss das irgendwas mit der NAT zu tun haben.
Versuche mal den 'voipd' Dienst zu stoppen und den SIP-Port auf 5060 zu stellen.
 
Zuletzt bearbeitet:
dtmfbox v0.5.0

Ein Post als Index:

dtmfbox v0.5.0 wurde gestern veröffentlicht und ist ab heute auch im Freetz-Trunk enthalten (3084). Das aktuelle eSpeak v1.40.02 ist ebenfalls mit dabei.
 
Zuletzt bearbeitet:
gibts es für die 0.5.0 er Version von dtmfbox schon das isdn_mod.sh skript?
Also der Eintrag der Rückwärtssuche im FB-Telefonbuch
 
Nice Update :)

Nur irgendwie sie bei mir mit dem 0.5er Version die Log-Datei komisch aus:

Code:
-n cat /var/dtmfbox/tmp/dtmfbox.log 

-n

-n

... und der AB will auch nicht abheben.
Woran könnte das liegen?
 
@RoyalTS:
Was passiert bei:
Code:
echo -n "cat /var/dtmfbox/script.cfg" | sed "s/$(echo -ne '\r')//g" | sh | sed -e 's/&/\&amp;/g ; s/</\&lt;/g ; s/>/\&gt;/g'
?
 
@ bodega:

Folgendes bekomm ich da ausgegeben:

Code:
#!/var/tmp/sh
# [HTML:&lt;script&gt;function show_title(title) { document.write("&lt;table border='0' cellpadding='3' width='95%'&gt;&lt;tr&gt;&lt;td bgcolor='#cccccc'&gt;&lt;b&gt;" + title + "&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;"); }&lt;/script&gt;]
# [HTML:&lt;script&gt;function set_group(div, setting, visible_value) { document.getElementById(div).style.display=(document.getElementById(setting).value == visible_value ? 'block' : 'none') }&lt;/script&gt;]

# [SECTION:Start]
DTMFBOX_ENABLED="1" 					# dtmfbox automatisch starten [OPTION:1|ja,0|nein]
DTMFBOX_SCRIPT_VERSION="v0.5.0"				# dtmfbox Skriptversion (nicht ändern!) [HIDE:1]

# [SECTION:Anrufbeantworter]
GLOBAL_AM_ACTIVE="1" 					# &lt;b&gt;Anrufbeantworter&lt;/b&gt; [OPTION:1|aktiviert,0|deaktiviert] [ONCHANGE:set_group('DIV_GLOBAL_AM_ACTIVE', 'Anrufbeantworter_GLOBAL_AM_ACTIVE', '1')]
							# [HTML:&lt;div ID='DIV_GLOBAL_AM_ACTIVE'&gt;]
GLOBAL_AM_PIN="1234" 				        # AB-Pin (für externe Abfrage) [WIDTH:50px] [TYPE:password]
GLOBAL_AM_MENU="menu:main" 				# Einstiegs-Menü (default: menu:main) [WIDTH:150px]
GLOBAL_AM_ANNOUNCEMENT_START="./play/LosStop.wav" 	# Ansage
GLOBAL_AM_ANNOUNCEMENT_END="./play/endansage.wav" 	# Endansage (nach Aufnahme)
GLOBAL_AM_BEEP="1" 					# Piep-Ton nach Ansage? [OPTION:1|ja,0|nein]
GLOBAL_AM_RING_TIME="20" 				# Ringtime (in sec), bevor der AB ran geht [WIDTH:50px]
GLOBAL_AM_RECORD_TIME="60" 				# Aufnahmezeit (in sec) [WIDTH:50px]
GLOBAL_AM_HOOKUP_TYPE="0" 				# Abhebemodus  [OPTION:0|Alle,1|nur Unbekannte,2|Unbekannte sofort / andere nach Ringtime]
GLOBAL_AM_RECORD_TYPE="0" 				# Aufnahmemodus [OPTION:0|nach Ansage aufnehmen,1|sofort aufnehmen,2|kein Aufnahme / nur Ansage]
GLOBAL_AM_SCHEDULE_START="00:00"			# Anrufbeantworter aktivieren ab (HH:SS) [WIDTH:50px]
GLOBAL_AM_SCHEDULE_END="00:00" 				# Anrufbeantworter deaktivieren ab (HH:SS) [WIDTH:50px]

GLOBAL_AM_MAIL="1" 					# &lt;b&gt;Mailversand&lt;/b&gt; [OPTION:1|aktiviert,0|deaktiviert] [ONCHANGE:set_group('DIV_GLOBAL_AM_MAIL', 'Anrufbeantworter_GLOBAL_AM_MAIL', '1')]
							# [HTML:&lt;div ID='DIV_GLOBAL_AM_MAIL'&gt;]
GLOBAL_AM_MAIL_TO="[email protected]" 					# Mail Empfänger ([email protected]) [WIDTH:250px]
GLOBAL_AM_MAIL_FROM="[email protected]" 					# Mail Absender ([email protected]) [WIDTH:250px]
GLOBAL_AM_MAIL_SERVER="" 				# Mail Server (mail.foo.de) [WIDTH:250px]
GLOBAL_AM_MAIL_USERNAME="[email protected]" 				# Mail Username [WIDTH:250px]
GLOBAL_AM_MAIL_PASSWORD="bla" 				# Mail Passwort [WIDTH:250px] [TYPE:password]
GLOBAL_AM_MAIL_DELETE_AFTER_SEND="0" 			# Nach Versand löschen? [OPTION:1|ja,0|nein]
							# [HTML:&lt;/div&gt;&lt;script&gt;set_group('DIV_GLOBAL_AM_MAIL', 'Anrufbeantworter_GLOBAL_AM_MAIL', '1')&lt;/script&gt;]

GLOBAL_AM_FTP="0" 					# &lt;b&gt;FTP-Streaming&lt;/b&gt; [OPTION:1|aktiviert,0|deaktiviert] [ONCHANGE:set_group('DIV_GLOBAL_AM_FTP', 'Anrufbeantworter_GLOBAL_AM_FTP', '1')]
							# [HTML:&lt;div ID='DIV_GLOBAL_AM_FTP'&gt;]
GLOBAL_AM_FTP_SERVER=""					# FTP-Server (ftp.foo.de) [WIDTH:250px]
GLOBAL_AM_FTP_PORT="" 					# FTP-Port [WIDTH:50px]
GLOBAL_AM_FTP_PATH="" 					# FTP-Remote Pfad (/private) [WIDTH:250px]
GLOBAL_AM_FTP_USERNAME="" 				# FTP-Username [WIDTH:250px]
GLOBAL_AM_FTP_PASSWORD="" 				# FTP-Passwort [WIDTH:250px] [TYPE:password]
							# [HTML:&lt;/div&gt;&lt;script&gt;set_group('DIV_GLOBAL_AM_FTP', 'Anrufbeantworter_GLOBAL_AM_FTP', '1')&lt;/script&gt;]
							# [HTML:&lt;/div&gt;&lt;script&gt;set_group('DIV_GLOBAL_AM_ACTIVE', 'Anrufbeantworter_GLOBAL_AM_ACTIVE', '1')&lt;/script&gt;]

# Accountspezifische Einstellungen
#
# ACC1_AM_ACTIVE="0"					# Account 1 [OPTION:1|aktiviert,0|deaktiviert]
# ACC1_AM_ANNOUNCEMENT_START="./play/acc1.wav" 		# Account 1 - Ansage
# ACC2_AM_ACTIVE="0"					# Account 2 [OPTION:1|aktiviert,0|deaktiviert]
# ACC3_AM_ACTIVE="0"					# Account 3 [OPTION:1|aktiviert,0|deaktiviert]
# ...

# [SECTION:Callthrough]
# [HTML:&lt;script&gt;function assist_ct(obj) { trigger_no=prompt('Bitte Trigger-Nummer eingeben, auf die der Callthrough reagieren soll.\n\nHinweis: Es können Regular Expressions verwendet werden, wie z.B.: .*12345'); if(trigger_no == null || trigger_no.length == 0) return; trigger_acc=prompt('Bitte Trigger-Account 1 bis 10 eingeben (optional).\n\nHinweis: Die Angabe der Account-Rufnummer ist ebenfalls möglich.', ""); if(trigger_acc == null) trigger_acc = ""; obj.value = trigger_no + (trigger_acc.length != 0  ? '/' + trigger_acc : ''); obj.onchange() }&lt;/script&gt;]
CALLTHROUGH1=""						# 1. Callthrough Regel [WIDTH:150px] [HTML: &lt;input type='button' value='Assistent' onclick="javascript:assist_ct(document.getElementById('Callthrough_CALLTHROUGH1'))"&gt;]
CALLTHROUGH2=""						# 2. Callthrough Regel [WIDTH:150px] [HTML: &lt;input type='button' value='Assistent' onclick="javascript:assist_ct(document.getElementById('Callthrough_CALLTHROUGH2'))"&gt;]
CALLTHROUGH3=""						# 3. Callthrough Regel [WIDTH:150px] [HTML: &lt;input type='button' value='Assistent' onclick="javascript:assist_ct(document.getElementById('Callthrough_CALLTHROUGH3'))"&gt;]
# CALLTHROUGHX=""					# X. Callthrough Regel [WIDTH:150px] [HTML: &lt;input type='button' value='Assistent' onclick="javascript:assist_ct(document.getElementById('Callthrough_CALLTHROUGHX'))"&gt;]

# [SECTION:Callback]
# [HTML:&lt;script&gt;function assist_cb(obj) { trigger_no=prompt('Bitte Trigger-Nummer eingeben, auf die der Callback reagieren soll.\n\nHinweis: Es können Regular Expressions verwendet werden, wie z.B.: \\(.*12345\\)'); if(trigger_no == null || trigger_no.length == 0) return; callback_no=prompt('Bitte Rückruf-Nummer eingeben.\n\nHinweis: Falls die Trigger-Nummer als Regular-Expression angegeben wurde, können hier Replace-Platzhalter angegeben werden, wie z.B.: \\1', ""); if(callback_no == null || callback_no.length == 0) return; trigger_acc=prompt('Bitte Trigger-Account 1 bis 10 eingeben (optional).\n\nHinweis: Die Angabe der Account-Rufnummer ist ebenfalls möglich.', ""); if(trigger_acc == null) trigger_acc = ''; callback_acc=prompt('Bitte Callback-Account 1 bis 10 eingeben (optional).\n\nHinweis: Die Angabe der Account-Rufnummer ist ebenfalls möglich.', ""); if(callback_acc == null) callback_acc = ''; obj.value = trigger_no + '/' + callback_no + '/' + trigger_acc + '/' + callback_acc; obj.onchange() }&lt;/script&gt;]
CALLBACK1=""					        # 1. Callback Regel [WIDTH:150px] [HTML: &lt;input type='button' value='Assistent' onclick="javascript:assist_cb(document.getElementById('Callback_CALLBACK1'))"&gt;]
CALLBACK2=""						# 2. Callback Regel [WIDTH:150px] [HTML: &lt;input type='button' value='Assistent' onclick="javascript:assist_cb(document.getElementById('Callback_CALLBACK2'))"&gt;]
CALLBACK3=""						# 3. Callback Regel [WIDTH:150px] [HTML: &lt;input type='button' value='Assistent' onclick="javascript:assist_cb(document.getElementById('Callback_CALLBACK3'))"&gt;]
# CALLBACKX=""						# X. Callback Regel [WIDTH:150px] [HTML: &lt;input type='button' value='Assistent' onclick="javascript:assist_cb(document.getElementById('Callback_CALLBACKX'))"&gt;]

# [SECTION:Webradio]
RADIO_STREAM1=""					# 1. Radiostream
RADIO_STREAM2=""					# 2. Radiostream
RADIO_STREAM3=""					# 3. Radiostream
RADIO_STREAM4=""					# 4. Radiostream
RADIO_STREAM5=""					# 5. Radiostream
RADIO_STREAM6=""					# 6. Radiostream
RADIO_STREAM7=""					# 7. Radiostream
RADIO_STREAM8=""					# 8. Radiostream
RADIO_STREAM9=""					# 9. Radiostream

# [SECTION:Rückwärtssuche]
# [HTML:&lt;script&gt;show_title("Pseudo Rufnummern zuordnen (nur ISDN Telefone)")&lt;/script&gt;]
REVERS_ACC1_FAKEMSN="12345"					# Account 1  [WIDTH:200px] 
REVERS_ACC2_FAKEMSN="23456"					# Account 2  [WIDTH:200px] 
REVERS_ACC3_FAKEMSN="34567"					# Account 3  [WIDTH:200px] 
REVERS_ACC4_FAKEMSN="45678"					# Account 4  [WIDTH:200px] 
REVERS_ACC5_FAKEMSN=""					# Account 5  [WIDTH:200px] 
REVERS_ACC6_FAKEMSN=""					# Account 6  [WIDTH:200px] 
REVERS_ACC7_FAKEMSN=""					# Account 7  [WIDTH:200px] 
REVERS_ACC8_FAKEMSN=""					# Account 8  [WIDTH:200px] 
REVERS_ACC9_FAKEMSN=""					# Account 9  [WIDTH:200px] 
REVERS_ACC10_FAKEMSN=""					# Account 10 [WIDTH:200px] 

# [SECTION:Anti-Callcenter]
# [HTML:&lt;script&gt;show_title("Weiterleitungen zuordnen")&lt;/script&gt;]
ANTICC_ACC1_RELAYNO=""					# Account 1  [WIDTH:200px] 
ANTICC_ACC2_RELAYNO=""					# Account 2  [WIDTH:200px] 
ANTICC_ACC3_RELAYNO=""					# Account 3  [WIDTH:200px] 
ANTICC_ACC4_RELAYNO=""					# Account 4  [WIDTH:200px] 
ANTICC_ACC5_RELAYNO=""					# Account 5  [WIDTH:200px] 
ANTICC_ACC6_RELAYNO=""					# Account 6  [WIDTH:200px] 
ANTICC_ACC7_RELAYNO=""					# Account 7  [WIDTH:200px] 
ANTICC_ACC8_RELAYNO=""					# Account 8  [WIDTH:200px] 
ANTICC_ACC9_RELAYNO=""					# Account 9  [WIDTH:200px] 
ANTICC_ACC10_RELAYNO=""					# Account 10 [WIDTH:200px] 

# [SECTION:eSpeak]
ESPEAK_INSTALLED="0" 					# &lt;b&gt;eSpeak-Modus&lt;/b&gt; [OPTION:0|Webstream,1|Installiert,2|Beep] [ONCHANGE:document.getElementById('DIV_ESPEAK_INSTALLED').style.display=(document.getElementById('eSpeak_ESPEAK_INSTALLED').value == '2' ? 'none' : 'block');]
							# [HTML:&lt;div ID='DIV_ESPEAK_INSTALLED'&gt;]
ESPEAK_LANG="de" 					# Language (default: de) [OPTION:de|de]
ESPEAK_TYPE="f1" 					# Typ [OPTION:m0|m0,m1|m1,m2|m2,m3|m3,m4|m4,m5|m5,f0|f0,f1|f1,f2|f2,f3|f3,f4|f4|,f5|f5]
ESPEAK_VOLUME="100" 					# Lautstärke (0-200, default: 100) [WIDTH:50px]
ESPEAK_SPEED="200" 					# Geschwindigkeit (80-370, default: 170) [WIDTH:50px]
ESPEAK_PITCH="50" 					# Pitch (0-99, default: 50) [WIDTH:50px]
							# [HTML:&lt;/div&gt;&lt;script&gt;document.getElementById('DIV_ESPEAK_INSTALLED').style.display=(document.getElementById('eSpeak_ESPEAK_INSTALLED').value == '2' ? 'none' : 'block');&lt;/script&gt;]

# [SECTION:Programme &amp; Pfade]
MADPLAY_PATH="/var/dtmfbox/extras" 			# Pfad zu madplay
ESPEAK_PATH="/var/dtmfbox/extras" 			# Pfad zu eSpeak (ESPEAK_INSTALLED="1")
CHECKMAILD_PATH="/var/dtmfbox/extras" 			# Pfad zu CheckMailD

DTMFBOX_PATH="/var/dtmfbox" 				# dtmfbox [HIDE:1]
DTMFBOX="$DTMFBOX_PATH/dtmfbox"				# [HIDE:1]
DIFF="/var/dtmfbox/busybox-tools diff"			# [HIDE:1]
DU="/var/tmp/busybox-tools du" 				# [HIDE:1]
FTPPUT="/var/tmp/busybox-tools ftpput"			# [HIDE:1]
GZIP="/var/tmp/busybox-tools gzip"			# [HIDE:1]
GUNZIP="/var/tmp/busybox-tools gunzip"			# [HIDE:1]
HEAD="/var/tmp/busybox-tools head"			# [HIDE:1]
HTTPD="/var/tmp/busybox-httpd httpd"			# [HIDE:1]
MKFIFO="/var/tmp/busybox-tools mkfifo"			# [HIDE:1]
NC="/var/tmp/busybox-tools nc"				# [HIDE:1]
PATCH="/var/dtmfbox/busybox-tools patch"		# [HIDE:1]
TAIL="/var/tmp/busybox-tools tail"			# [HIDE:1]
TAR="/var/tmp/busybox-tools tar"			# [HIDE:1]
UUDECODE="/var/tmp/busybox-tools uudecode"		# [HIDE:1]
UUENCODE="/var/tmp/busybox-tools uuencode"		# [HIDE:1]

# [SECTION:Webphone]
WEBPHONE_REM_RTP_HOST="fritz.box"			# Remote Host (dtmfbox) [WIDTH:100]
WEBPHONE_REM_RTP_PORT="4062"				# Remote RTP-Port (+1 RTCP Port) [WIDTH:100]
WEBPHONE_LOC_RTP_PORT="4060"				# Lokaler RTP-Port (+1 RTCP Port) [WIDTH:100]

# [SECTION:Webinterface]
PATCHDIFF="1"						# Speicherverhalten [OPTION:1|Diff + Patch + GZip,0|GZip]							
DIRECT_EDIT="0"						# "Text-Editor Modus" standardmäßig [OPTION:1|aktiviert,0|deaktiviert]
TEXTAREA_ROWS="25" 					# Zeilen im Editor [WIDTH:50px]
TEXTAREA_WRAP="off" 					# Automatischer Zeilenumbruch [OPTION:on|an,off|aus]
 
Mhh.. das sieht ja erstmal gut aus. So macht es auch das Log.

Probiere mal eine andere busybox-tools. Ich habe Sie zwar statisch gelinkt, aber man kann ja nie wissen.

Nach etwas recherchiern: du arbeitest immer noch mit der 7170/dtmfbox USB/FW-63-Labor? Am besten die 7170 in die Sig schreiben, damit ich nicht blättern muss :)
 
Hallo bodega,

bist du dir sicher, dass du auch das richtige File verlinkt hast?
Die Busybox aus deinem Link kann doch eigentlich gar nichts:
Code:
BusyBox v1.10.3 (2008-07-24 00:08:41 CEST) multi-call binary
Copyright (C) 1998-2007 Erik Andersen, Rob Landley, Denys Vlasenko
and others. Licensed under GPLv2.
See source distribution for full notice.

Usage: busybox [function] [arguments]...
   or: function [arguments]...

        BusyBox is a multi-call binary that combines many common Unix
        utilities into a single executable.  Most people will create a
        link to busybox for each function they wish to use and BusyBox
        will act like whatever it was invoked as!

Currently defined functions:
        [, [[, ash, du, echo, ftpput, gunzip, gzip, head, httpd,
        mkfifo, nc, sh, tail, tar, test, uudecode, uuencode, zcat
Joe
 
Ja, bin ich. Da sind nur Applets enthalten, die häufig bei den Standard-Busyboxen fehlen (deswegen auch busybox-tools). Das muss nicht zwangsläufig heißen, dass die busybox nix kann. Ash ist ja auch drin ;)
 
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.