Bitte um Hilfe zum Asterisk 1.4 auf FB7170

David,

danke für den Tip mit ext3.

Zu den FAQs hast Du natürlich recht. Sorry.

Gruß Jürgen
 
Hallo zusammen,

ich bin erst jetzt wieder dazu gekommen, mich weiter mit dem * auf der Fb zu beschäftigen und bin im Prinzip auch schon einen großen Schritt weiter.

1. Sip Telefone lassen sich anmelden und können untereinander telefonieren.
2. Sip Telefone können mit der S0-Nebenstelle 51 telefonieren und umgekehrt.
3. In der sip.con habe ich eine Nebenstelle 7708 eingerichtet, diese in der FB mit der ersten analogen Nebenstelle verknüpft. Diese lässt mit 7708 sowohl von der S0-Nebestelle 51 als auch von den SIP Nebenstellen anrufen.

Was nicht geht ist, das die analoge Nebenstelle die SIP Nebenstellen anruft.

Zu Eurer Info hier die capi.conf
Code:
; CAPI config
; (1234567 gets replaced by script cfg_asterisk start)
;

; general section

[general]
nationalprefix=0
internationalprefix=00
rxgain=1.0       ;linear receive gain (1.0 = no change)
txgain=1.0       ;linear transmit gain (1.0 = no change)
language=de      ;set default language (en/de...)
;ulaw=yes        ;set this, if you live in u-law world instead of a-law

;jb.....         ;with Asterisk 1.4 you can configure jitterbuffer,
                 ;see Asterisk documentation for all jb* setting available.
;mohinterpret=default ;Asterisk 1.4: default music on hold class when placed on hold.

; interface sections ...
[ISDN1]              ; fritzbox 7050/7170 external S0 (or external analog line: experimental)
ntmode=yes           ;if isdn card operates in nt mode, set this to yes
isdnmode=DID         ;'MSN' (point-to-multipoint) or 'DID' (direct inward dial)
incomingmsn=*        ;allow incoming calls to this list of MSNs/DIDs, * = any,
defaultcid=5600XXXX  ;set a default caller id to that interface for dial-out,
                     ;this caller id will be used when dial option 'd' is set.
controller=1     ;capi controller number to use (=4: fritzbox 7050/7150 at analog line)
group=1          ;dialout group
softdtmf=off     ;enable/disable software dtmf detection, recommended for AVM cards
relaxdtmf=off    ;in addition to softdtmf, you can use relaxed dtmf detection
accountcode=     ;PBX accountcode to use in CDRs
context=int-so   ;context for incoming calls
bridge=no        ;native bridging (CAPI line interconnect) if available
devices=2        ;number of concurrent calls on this controller
                 ;(2 makes sense for single BRI, 30 for PRI)


[ISDN3]          ; fritzbox 7050 internal S0
ntmode=no        ;if isdn card operates in nt mode, set this to yes
isdnmode=MSN     ;'MSN' (point-to-multipoint) or 'DID' (direct inward dial)
                 ;when using NT-mode, 'DID' should be set in any case
incomingmsn=*    ;allow incoming calls to this list of MSNs/DIDs, * = any
defaultcid=      ;hier steht die Rufnummer ohne Vorwahl
                 ;set a default caller id to that interface for dial-out,
                 ;this caller id will be used when dial option 'd' is set.
controller=3     ;capi controller number to use
group=3          ;dialout group
softdtmf=off     ;enable/disable software dtmf detection, recommended for AVM cards
relaxdtmf=off    ;in addition to softdtmf, you can use relaxed dtmf detection
;accountcode=    ;PBX accountcode to use in CDRs
context=capi_in3 ;context for incoming calls
immediate=yes    ;DID: immediate start of pbx with extension 's' if no digits were
                 ;     received on incoming call (no destination number yet)
                 ;MSN: start pbx on CONNECT_IND and don't wait for SETUP/SENDING-COMPLETE.
                 ;     info like REDIRECTINGNUMBER may be lost, but this is necessary for
                 ;     drivers/pbx/telco which does not send SETUP or SENDING-COMPLETE.
bridge=no        ;native bridging (CAPI line interconnect) if available
devices=2        ;number of concurrent calls on this controller
                 ;(2 makes sense for single BRI, 30 for PRI)

und hier die sip.conf
Code:
[general]
context=default
bindport=5061
bindaddr=0.0.0.0
localnet=192.168.0.0/255.255.0.0
srvlookup=yes
canreinvite=no                ; Typically set to NO if behind NAT

; --------------------------------------------------------------------
;
; hier koennten die Anmeldedaten für VoIP Provider stehen
; dazu kommen wir in einer spaeteren Lektion
;


; --------------------------------------------------------------------
;
; hier kommen die Anmeldekontexte für die SIP Endgeraete7701 - 770x hin
;



[7701]
context=sip7701
callerid="TestSIP 7701" <7701>
host=dynamic
type=friend
user=7701
secret=7701
disallow=all
allow=gsm                     ; GSM consumes far less bandwidth than ulaw
allow=ulaw
allow=alaw

[7702]
context=sip7702
callerid="X-Lite 7702" <7702>
host=dynamic
type=friend
user=7702
secret=7702
username=xlite1
disallow=all
allow=gsm                     ; GSM consumes far less bandwidth than ulaw
allow=ulaw
allow=alaw

; sip external outgoing


[7707]
context=from_fritzbox
callerid="Fritzbox" <7707>
host=dynamic
domain=192.168.123.195
type=friend
user=7707
secret=7707
disallow=all
allow=gsm
allow=ulaw
allow=alaw

[7708]
context=int-so
callerid="Fritzbox" <7708>
host=dynamic
domain=192.168.123.195
type=friend
user=7708
secret=7708
disallow=all
allow=gsm
allow=ulaw
allow=alaw

und hier noch die extensions.conf
Code:
[globals]
CAPI_CALLERID=5600xxxx

[general]
static=yes
writeprotect=no

; --------------------------------------------------------------------
; Es hat sich als gute Praxis erwiesen, die Inhalte der Datei
; extensions.conf modular aufzubauen. Diese Praxis wollen
; wir auch hier anwenden
;

[lokal]
; Erreichbarkeit der Nebenstellen 7701-7708
; untereinander herstellen 7708 = erste interne a/b-Nebenstelle

exten => _7X,1,NoCDR()
exten => _77XX,1,Dial(SIP/${EXTEN},10,Ttr)
exten => _77XX,2,VoiceMail(${EXTEN},u)

exten => 1001,1,Answer()
exten => 1001,2,Playback(hello-world)
exten => 1001,3,Hangup()

exten => 2900,1,VoiceMailMain(${CALLERID(num)},u)
exten => 2900,2,Hangup()

; --------------------------------------------------------------------
;
; hier kommt der default-Context, in dem alle Geraete in der
; Grundkonfiguration erstmal laufen.
; Alle Geraete koennen sich gegenseitig anrufen

[festnetz_out]
; Raus-Telefonieren
exten => _X.,1,Set(CALLERID(ani)=(${CAPI_CALLERID})
exten => _X.,n,Dial(CAPI/ISDN3/${EXTEN},55,Tt/bd)


[default]
include => lokal

[sip7701]
include => lokal
include => festnetz_out

[sip7702]
include => lokal
include => festnetz_out

[sip7707]
include => lokal
include => festnetz_out

[sip7708]
include => lokal
include => festnetz_out

[capi_in3]
exten => _X.,1,noop(${CALLERID(all)})
exten => _X.,n,Dial(SIP/${EXTEN})

Über den entscheidenen TIP würde ich mich freuen.

Edit: Diese Meldung erscheint auf der Konsole:

[Aug 20 16:21:49] NOTICE[3589]: chan_sip.c:20139 handle_request_invite: Call from '7708' to extension '7701' rejected because extension not found.


Gruß Jürgen
 
Zuletzt bearbeitet:
Die Fehlermeldung gibt ja schonmal einen brauchbaren Hinweis.
Eigentlich sieht deine Konfiguration gar nicht mal so schlecht aus - auf den ersten Blick sehe ich da gerade keinen Fehler.
Die Fehlermeldung hört sich für mich so an, als ob der Anruf in irgendeinem falschen Context hängen bleiben würde, und nicht wie erwartet in capi_in3.
Ich würde beim Debuggen als nächstes genau lokalisieren, in welchem Context dein Anruf hängt.
Bzw. zunächst einmal definitiv festzustellen, ob der Anruf wie erwartet im Context capi_in3 ankommt (und der Fehler dann irgendwo da liegen muss), oder ob der Anruf erst gar nicht in diesen Context fällt.
 
Hi,
der Fehler lag in der falschen Zuordnung der Contexte in der sip.conf und extensions.conf.

Contexte angepasst, funktioniert.

Danke. Jürgen
 
Asterisk automatisch starten

Hallo zusammen,
nachdem mein * auf der FB nun das tut was er soll (intern analog und ISDN, von allen Endgeräten gehend und kommend erreichbar), möchte ich den * nun automatisch starten.

Hierzu gibt es in der Freetz Version 1.1.3 ja die rc.custum.

Hier habe ich auch folgendes eingetragen:

/./var/media/ftp/uStor01/asterisk/bin/start-asterisk.sh

funktioniert aber nicht.

Wenn ich dies auf der Kommandozeile ausführe, so erhalte ich zwar die Fehlermeldung mit einer falschen TTY9, aber wenn ich dann ins Verzeichnis /var/mod/sbin wechsle, kann ich asterisk starten.

Kann mir jemand helfen? Bin leider nicht der große Linux Guru. Im Forum hab ich nichts gefunden.

Gruß Jürgen
 
Hallo Jürgen,
erstmal ein grundsätzlicher Tipp zum Debugging auf der FritzBox. Wenn du den Befehlen in der rc.custom den folgenden Zusatz anhängst, werden sämtliche Fehlermeldungen im Zusammenhang mit dem Befehl in eine Datei umgeleitet, anstatt im Nirvana unterzugehen:

> /tmp/debug-out.txt 2>&1

Der Eintrag in der rc.custom muss also wie folgt lauten:

Code:
/./var/media/ftp/uStor01/asterisk/bin/start-asterisk.sh > /tmp/debug-out.txt 2>&1

Anschließend kannst du dir nach dem Booten in der Datei /tmp/debug-out.txt die Fehlermeldungen anschauen bzw. uns hier posten.

Vielleicht kommen wir damit erstmal ein Stückchen weiter.
 
Hallo Daniel,

vielen Dank für den Tip. Ja, es sind manchmal die Kleinigkeiten die einem ggf. weiterhelfen . Die debug-out.txt hat folgenden Inhalt:

Code:
/etc/init.d/rc.S: /tmp/flash/rc.custom: line 1: /var/media/ftp/uStor01/asterisk/bin/start-asterisk.sh: not found
was ich aber nicht ganz verstehe, da das Startscript in dem Verzeichnis definitiv vorhanden ist und sich von der Kommandozeile auch aufrufen lässt.
Ob ich im Script ein ./ voran setze bringt keinen Unterschied. Auf der Kommandozeile braucht es das aber Augenscheinlich. Warum wird das Script nicht ausgeführt?

Danke und Gruß Jürgen
 
n'Abend Jürgen,
dann würde ich den Verdacht schöpfen, dass das rc.custom Script ausgeführt wird, noch bevor der USB-Stick gemountet ist. Das heißt die Datei auf deinem USB-Stick existiert zwar sehr wohl - aber noch nicht zum Zeitpunkt des rc.custom Scripts.

Daher vielleicht ein anderer Ansatz. Freetz wertet neben dem rc.custom Script auch noch sog. autorun-Script von USB-Datenträgern aus.
Diese Option muss beim Kompilieren des Freetz-Image aktiviert sein, ist irgendwo in der Abteilung "Patches" zu finden, und nennt sich irgendwas mit "Autorun". Den genauen Wortlaut habe ich gerade nicht mehr im Kopf, aber wenn du deine Buildumgebung vor dir hast, solltest du das schnell finden.

Wenn diese Option aktiviert ist, kannst du es dir ganz einfach machen, und eine Datei mit dem Namen "autorun.sh" im Wurzelverzeichnis des USB-Sticks ablegen. Diese sollte ausführbar (chmod +x) sein, und die Befehle enthalten, die beim Einhängen/Mounten des Datenträgers ausgeführt werden sollen.

Auf diese Art und Weise starte ich meinen Asterisk, und das funktioniert eigentlich ganz problemlos.

Alternativ ließe sich das rc.custom Script auch so erweitern, dass es auf den USB-Datenträger wartet. Aber die Lösung mit der autorun.sh würde ich für eleganter halten.

Gruß
David
(PS: Das 'd' in meinem Nickname steht für David, nicht Daniel. Aber du bist bei weitem nicht der erste, der darauf "rein fällt" :) )
 
Hallo, sorry David!!!

Danke für den Hinweis mit dem USB-Datenträger. Werde dem mal nachgehen. Melde mich bei Erfolg oder Nichterfolg wieder.

Gruß Jürgen
 
Hallo David,

so, dass war's. Habe freetz neu erstellt mit der Option autorun.sh und innerhalb der autorun.sh dann diesen code eingegeben:

Code:
cd /var/media/ftp/uStor01/asterisk/bin
./start-asterisk.sh
/var/mod/sbin/asterisk

Weil der erste Aufruf immer mit einem Fehler endet, aber im Verzeichnis /var/mod/sbin ein link auf asterisk liegt, benutze ich eben diesen.

Jetzt werde ich mich noch etwas mit VoiceMail beschäftigen. Habe auch immer noch nicht herausgefunden warum die VoiceMail Zeit nicht mit der Systemzeit übereinstimmt?:mad:

Da gibt es im Forum ja auch einige Hinweise, mal sehen.

Gruß Jürgen
 
Jetzt werde ich mich noch etwas mit VoiceMail beschäftigen. Habe auch immer noch nicht herausgefunden warum die VoiceMail Zeit nicht mit der Systemzeit übereinstimmt?
Jetzt wo du's sagst, stimmt, da war was.
Kann es sein, dass die Zeit immer auf GMT (d.h. z.Zt. 2h versetzt) läuft?
Dann dürftest du das gleiche Problem haben wie ich damals hatte.
Ich habe es darauf zurück geführt, dass auf der FritzBox im Freetz-System die Datei /etc/timezone bzw. /etc/localtime nicht vorhanden ist, der Asterisk daraus aber seine Zeitzone beziehen will. Existiert diese Datei nicht, läuft der Asterisk in GMT-Zeit.
Diese Datei anzulegen ist aber nicht ganz trivial, weil das Root-Dateisystem auf der FritzBox read-only ist.

Meine Lösung sieht folgendermaßen aus:

In der Freetz Buildumgebung die Datei fwmod_custom so anpassen, dass die Funktion all() wie folgt aussieht:
Code:
all() {
        dummy=0
        cp -av ../../root-overlay/* ./filesystem
}
Das bewirkt, dass beim Kompilieren der Firmware alle Dateien des Verzeichnisses root-overlay mit in das Firmware-Image kopiert werden. Das kann für kleinere manuelle Änderungen ganz nützlich sein.

Den Inhalt des root-overlay Verzeichnisses habe ich hier angehängt. Könnte für dich vielleicht auch von Nutzen sein.
 

Anhänge

  • root-overlay.tar.gz
    1.2 KB · Aufrufe: 6
[Edit frank_m24: Mehrere Beiträge zusammengefasst. Man kann seine Beiträge auch editieren.]
Hab ich nach Deinen Anweisungen gemacht.

Folgende Fehlermeldung erscheint:

Code:
cp: Aufruf von stat für „../../root-overlay/*“ nicht möglich: No such file or directory

so wie es scheint ist das Directory nicht vorhanden. Wo müssen Deine mitgelieferten Dateien denn hin?

Gruß Jürgen

[Beitrag 2:]
Habs ins verzeichnis freetz-1.1.3 gepackt.
Von dort wurde anscheinend kopiert. Werde es probieren
Gruß Jürgen

[Beitrag 3:]
Hi Daniel,

danke, das war's. :D

Gruß Jürgen
 
Zuletzt bearbeitet von einem Moderator:
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.