[Solved] Asterisk beantwortet Anrufe von Fritzbox sofort ...

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
maddeb
Beiträge: 42
Registriert: 12.07.2008 09:46:22
Lizenz eigener Beiträge: MIT Lizenz

[Solved] Asterisk beantwortet Anrufe von Fritzbox sofort ...

Beitrag von maddeb » 22.12.2014 17:50:15

Moin moin!

Ich verzweifele gerade an meiner Asterisk und frage deshalb mal wieder hier. Das Setup:
- Debian Wheezy mit Asterisk 1.8 und einer TDM400 mit FXS-Modulen und Telefonen dran
- Eine Fritzbox, die Einwahl fuer VDSL und SIP macht

Der Waehlplan ("123456" steht hier symbolisch fuer die echten Ziffern meiner Telefonnummer.):

Code: Alles auswählen


[general]
static=yes
writeprotect=no
clearglobalvars=no

[globals]
CONSOLE=Console/dsp
IAXINFO=guest
TRUNKMSD=1

[local]
exten => 51,1,Dial(DAHDI/1,15)
exten => 52,1,Dial(DAHDI/2,15)
exten => 53,1,Dial(DAHDI/3,15)
exten => 54,1,Dial(DAHDI/4,15)
; interne Nummern auf der Firtzbox
exten => _**X,1,Dial(SIP/fritz/${EXTEN},300)
exten => _**XX,1,Dial(SIP/fritz/${EXTEN},300)
exten => _**XXX,1,Dial(SIP/fritz/${EXTEN},300)

[default]
include => local
exten => _XXX.,1,Dial(SIP/fritz/${EXTEN},300)

[incoming]
exten => _9123456X,1,Dial(DAHDI/1,15)
exten => _62X,1,Dial(DAHDI/2,15)
Meine sip.conf:

Code: Alles auswählen

[general]
context=default                 ; Default context for incoming calls
allowoverlap=no                 ; Disable overlap dialing support. (Default is yes)
udpbindaddr=0.0.0.0             ; IP address to bind UDP listen socket to (0.0.0.0 binds to all)
srvlookup=no                   ; Enable DNS SRV lookups on outbound calls
dtmfmode=rfc2833
disallow=all
allow=ulaw
allow=alaw
alow=gsm
canreinvite=no
realm=example.com
nat=no
register => 621:XXXXXXXX@fritz.box/621

[fritz]
type=peer
host=fritz.box
defaultuser=621
fromuser=621
secret=XXXXXXXX
allow=all
fromdomain=fritz.box
insecure=port,invite
context=incoming
Wie ich gerade merke, sehen die Eintraege in dahdi-channels.conf komisch aus (die anderen analog):

Code: Alles auswählen

;;; line="2 WCTDM/4/1 FXOKS  (In use)"
signalling=fxo_ks
callerid="Channel 2" <4002>
mailbox=4002
group=5
context=from-internal
channel => 2
callerid=
mailbox=
group=
context=default
Das hat dahdi_genconf so generiert; warum tauchen callerid, mailbox, group und context doppelt auf, und wo kommt "from-internal" her? Da das entsprechende Telefon raustelefonieren kann, scheinen die spaeteren Werte die frueheren zu ueberschreiben.

Das Problem sind nun Anrufer im Kontext "incoming". Mit einem Account auf der Fritzbox rufe ich **621, was den dortigen User 621 ruft, was der SIP-Channel der Asterisk ist, und es passiert folgendes:

Code: Alles auswählen

  == Using SIP RTP CoS mark 5
    -- Executing [621@incoming:1] Dial("SIP/fritz-00000003", "DAHDI/2,15") in new stack
    -- Called DAHDI/2
    -- DAHDI/2-1 is ringing
    -- Hanging up on 'DAHDI/2-1'
    -- Hungup 'DAHDI/2-1'
  == Spawn extension (incoming, 621, 1) exited non-zero on 'SIP/fritz-00000003'
Man sieht, wie die Extension im Kontext "incoming" akzeptiert wird, manchmal hoert man sogar ein ganz kurzes Klingeln
Aber diese Ausgabe kommt als ganzes, zwischen "ringing" und "hanging up" ist keine erkennbare Pause. Als naechstes kommt die Voicemailbox (bzw. die ersten Worte der Ansage gehen meistens verloren), auch wenn ich app_voicemail.so und app_minivm.so entladen habe.

Genauso sieht es aus, wenn ich mit einem anderen Telefon **621 rufe, was mich nicht weiter ueberrascht.

Was ich soweit herausgefunden habe:

Code: Alles auswählen

<--- SIP read from UDP:192.168.178.1:5060 --->
CANCEL sip:621@172.16.2.147:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.178.1:5060;branch=z9hG4bK28DA68DA489DAF3D
From: "fritz" <sip:**622@fritz.box>;tag=CF41B779666BA18A
To: <sip:621@172.16.2.147:5060>
Call-ID: 8D9835B05FDBEE53@192.168.178.1
CSeq: 225 CANCEL
Reason: SIP; cause=200; text="Call completed elsewhere"
Max-Forwards: 70
User-Agent: AVM FRITZ!Box Fon WLAN 7390 84.06.20 (Aug 21 2014)
Supported: 100rel,replaces,timer
Allow-Events: telephone-event,refer
Content-Length: 0
Die Fritzbox glaubt also, der Anruf sei schon anderweitig angenommen worden und ich vermute, damit ist die Mailbox gemeint. Waehrend diese redet, findet nach 0.1s kein SIP-Traffic mehr statt.

Ich waer echt dankbar, wenn mir jemand einen Tipp geben koennte, wo ich weiter suchen sollte. Ich mach mich erst mal daran, Module zu entladen, um das Setup zu vereinfachen.

Vielen Dank an alle, die mal einen Blick drauf werfen.

Nachtrag 19:08
Da scheint keine Modulmagie im Spiel zu sein:

Code: Alles auswählen

pbx0*CLI> module show 
Module                         Description                              Use Count 
res_adsi                       ADSI Resource                            0         
res_smdi.so                    Simplified Message Desk Interface (SMDI) 0         
chan_dahdi.so                  DAHDI Telephony Driver w/PRI & SS7 & MFC 0         
codec_gsm.so                   GSM Coder/Decoder                        0         
format_gsm.so                  Raw GSM data                             0         
app_dial.so                    Dialing Application                      0         
pbx_config.so                  Text Extension Configuration             0         
res_crypto.so                  Cryptographic Digital Signatures         0         
chan_local.so                  Local Proxy Channel (Note: used internal 0         
chan_sip.so                    Session Initiation Protocol (SIP)        0         
res_rtp_asterisk.so            Asterisk RTP Stack                       0         
11 modules loaded
Wieder kommt das alte Verhalten.

Nachtrag 23.12.2014, 16:25

Ok, ich war dumm :facepalm:. Aus Gruenden, die nicht kurz zu erklaeren sind, lief noch eine KV-Instanz, von der die Originalkonfiguration stammt. Die beiden haben sich entsprechend beide bei der Fritzbox mit demselben User angemeldet, und die VM hat dann die Anrufe entgegengenommen. Die hat ihr Verhalten natuerlich auch nicht geaendert, wenn ich auf der eigentlichen Asterisk Module entladen habe. Das war also der Bezug zu "Call completed elsewhere".
Funktioniert jetzt zwar immer noch nicht, aber meine konkrete Fragestellung sehe ich als geloest an und markiere den Thread als solchen.

Antworten