Loop Detected

mathboy

Neuer User
Mitglied seit
3 Jul 2010
Beiträge
52
Punkte für Reaktionen
0
Punkte
0
Hallo, ich habe zwar schon hier (http://www.ip-phone-forum.de/showthread.php?t=225601) einen Thread eröffnet, aber nun habe ich erkannt, dass ein Problem im Asterisk liegt. Daher folgendes:

Was habe ich getestet ? Von Msn1 Anruf auf Msn2. Softphone nimmt am Msn2 ab, die Verbindung funktioniert. Ich lege auf und wiederhole das ganze und es klappt nicht mehr. Hat jemand eine Idee, wo das Problem liegen könnte ?
Code:
  == ISDN1#02: Incoming call '%caller-nr%' -> '%msn2%'

    -- Executing [%msn2%@capi_in1:1] NoOp("CAPI/ISDN1#02/%msn2%-2", "Anruf von %caller-nr%") in new stack

    -- Executing [%msn2%@capi_in1:2] Set("CAPI/ISDN1#02/%msn2%-2", "MSGFILENAME=") in new stack

    -- Executing [%msn2%@capi_in1:3] Dial("CAPI/ISDN1#02/%msn2%-2", "SIP/%userSIPid%,20,r") in new stack

  == Using SIP RTP CoS mark 5

    -- Called %userSIPid%

    -- SIP/%userSIPid%-0062dc70 is ringing

    -- Registered SIP '%userSIPid%' at %MyInetIP% port 5061 expires 120
       > Saved useragent "Asterisk PBX 1.6.0.1" for peer %userSIPid%
    -- SIP/%userSIPid%-0062dc70 answered CAPI/ISDN1#02/%msn2%-2

  == ISDN1#02: Answering for %msn2%

  == ISDN1#02: Setting up DTMF detector (PLCI=0x701, flag=1)

  == Spawn extension (capi_in1, %msn2%, 3) exited non-zero on 'CAPI/ISDN1#02/%msn2%-2'
  == ISDN1#02: CAPI Hangingup for PLCI=0x701 in state 2
       > ISDN1#02: CAPI INFO 0x3490: Normal call clearing

  == ISDN1#02: Incoming call '%caller-nr%' -> '%msn2%'

    -- Executing [%msn2%@capi_in1:1] NoOp("CAPI/ISDN1#02/%msn2%-3", "Anruf von %caller-nr%") in new stack

    -- Executing [%msn2%@capi_in1:2] Set("CAPI/ISDN1#02/%msn2%-3", "MSGFILENAME=") in new stack

    -- Executing [%msn2%@capi_in1:3] Dial("CAPI/ISDN1#02/%msn2%-3", "SIP/%userSIPid%,20,r") in new stack

  == Using SIP RTP CoS mark 5

    -- Called %userSIPid%

    -- Got SIP response 482 "Loop Detected" back from %MyInetIP%

    -- Now forwarding CAPI/ISDN1#02/%msn2%-3 to 'Local/%userSIPid%@%userSIPid%' (thanks to SIP/%userSIPid%-006140b8)
  == Everyone is busy/congested at this time (1:0/0/1)
    -- Executing [%msn2%@capi_in1:4] Goto("CAPI/ISDN1#02/%msn2%-3", "record,s,1") in new stack
    -- Goto (record,s,1)
    -- Executing [s@record:1] Macro("CAPI/ISDN1#02/%msn2%-3", "entfernegitter") in new stack
    -- Executing [s@macro-entfernegitter:1] Set("CAPI/ISDN1#02/%msn2%-3", "EXTEN2=s") in new stack
    -- Executing [s@record:2] Wait("CAPI/ISDN1#02/%msn2%-3", "1") in new stack
    -- Executing [s@record:3] Playback("CAPI/ISDN1#02/%msn2%-3", "VM_MESSAGE") in new stack
  == ISDN1#02: Answering for %msn2%
  == ISDN1#02: Setting up DTMF detector (PLCI=0xa01, flag=1)

Zur Konfiguration:
Das Softphone ist im Lan angeschlossen,

Mein Sip.conf sieht so aus:
Code:
[general]                                                                                                                          
context=default                 ; Default context for incoming calls                                                               
; port 5060 already used by fritzbox, so use 5061                                                                                  
; and reconfigure local sip phones (remote sip goes through asterisk!)                                                             
;                 ^^^^^                                                                                                            
; XLITE in same subnet example config (fritzbox 192.168.222.100)                                                                   
; - System Settings / SIP Proxy / Default                                                                                          
;   - Enabled: Yes                                                                                                                 
;   - Display Name=Username=Auth. User=: 7701                                                                                      
;   - Password: 7701                                                                                                               
;   - Domain/Realm: 192.168.222.100                                                                                                
;   - SIP Proxy: 192.168.222.100:5061                                                                                              
;                                ^^^^                                                                                              
;   - Outbound Proxy: (empty)                                                                                                      
;   - Use Outbound Proxy: Never                                                                                                    
;   - Send Internal IP: Always                                                                                                     
;                       ^^^^^^                                                                                                     
;   - Register: Default                                                                                                            
; - Advanced System Settings / Audio / Silence Settings                                                                            
;   - Transmit Silence: Yes                                                                                                        
                                                                                                                                   
bindport=5061                   ; UDP Port to bind to (SIP standard port is 5060)                                                  
bindaddr=0.0.0.0                ; IP address to bind to (0.0.0.0 binds to all)                                                     
tcpenable=yes                                                                                                                      
tcpbindaddr=0.0.0.0:5061                                                                                                           
;tlsenable=yes                  ; tls is not enabled by default                                                                    
;tlsbindaddr=0.0.0.0:5062       ; default tls port is 5061 which conflicts with                                                    
                                ; default fritzbox asterisk sip port 5061                                                          
srvlookup=yes                   ; Enable DNS SRV lookups on outbound calls                                                         
language=de                                                                                                                        
notifyringing=yes                                                                                                                  
progressinband=no                                                                                                                  
                                                                                                                                   
                                                                                                                                   
;using external sip provider                                                                                                       
;and coping with dynamic ip address (the entry localnet=127...                                                                     
;is required if the avm sip client is registered at localhost:5061)                               
;(idea taken from [email protected])                                                                               
externhost=%myIP.dyndns%                                                                                                        
externrefresh=10                                                                                                                   
;localnet=127.0.0.0/255.0.0.0                                                                                                      
;nat=yes                                                                                                                           
;canreinvite=no                                                                                                                    
localnet=192.168.178.0/255.255.255.0                                                                                               
;realm=asterisk                                                                                                                    
;register => bluesip/username:[email protected]/sip1                                                                            
;...(http://www.ip-phone-forum.de/showpost.php?p=500468&postcount=12)                                                              
register => %userSIPid%:%userSIPid_PW%@%myIP.dyndns%:5061                                                                         
                                                                                                                                   
[%userSIPid%]                                                                                                                            
context=sip%userSIPid%                                                                                                                   
callerid="SIP %userSIPid%" <%userSIPid%>                                                                                                       
host=dynamic                                                                                                                       
nat=yes                                                                                                                            
qualify=no                                                                                                                         
type=friend                                                                                                                        
user=%userSIPid%                                                                                                                         
secret=*                                                                                                         
canreinvite=no                                                                                                                     
disallow=all                                                                                                                       
allow=gsm                                                                                                                          
allow=ilbc                                                                                                                         
allow=ulaw                                                                                                                         
allow=alaw

und in meiner Extension.conf steht:
Code:
[globals]                                                                                                                          
; gehende Nummer in [festnetz_out]                                                                     
CAPI_CALLERID=%msn2%                                                                                                             
LOG_PATH=/var/spool/asterisk/logs                                                                      
;SIP5776 globale Setting                                                             
                                                                                   
; Kurzes Klingeln, wenn SIP5776 nicht erreichbar                                                                                   
;RING_FOR_NOTICE=                                                                 
                                                                                                                                   
MAILER_TO=%toadress%                                                                   
MAILER_FROM=%fromadress%                                                                                                 
MAILER_SMTP=%smtp%                                                   
; smtp user und password nur bei Bedarf eintragen (sonst leer lassen!)                                                             
MAILER_USER=%mail-user%                                                            
MAILER_PASSWORD=%mail-pw%                                                                                                        
                                                                                     
[general]                                                                                  
static=yes                                                                                                                         
writeprotect=no                                                                                                                    
                                                                                                                                   
; Macros                                                                                               
[macro-entfernegitter]                                                               
; wenn Nummer mit # e?hlt werden                                                                       
                                                                                         t)                                        
exten => s,1,Set(EXTEN2=${IF( $[ ${MACRO_EXTEN:-1} = # ] ? ${MACRO_EXTEN:0:$[${LEN(${MACRO_EXTEN})}-1]} : ${MACRO_EXTEN} )})
;exten => s,n,NoOp(${EVAL(${EXTEN2})} -- ${MACRO_CONTEXT})                                                                  
                                                                                                                                   
;Begruessungsnachricht des Anrufbeantworters aufnehmen                                                                      
[record_message]                                                                                                                   
exten => _91!,1,Macro(entfernegitter)                                                                                       
exten => _91!,n,answer                                                                                                             
exten => _91!,n,wait(1)                                                                                
;exten => _91!,n,playback(beep)                                                                                                    
exten => _91!,n,record(VM_MESSAGE.gsm,4,60)                                                                                        
exten => _91!,n,playback(VM_MESSAGE)                                                                                        
exten => _91!,n,playback(beep)                                                                                                     
exten => _91!,n,hangup                                                                     
                                                                                     
;bei usb-Installation werden die Nachrichten vor dem mailen                                                                 
;auf den usb-Speicher geschrieben (/var/spool/asterisk);                                                                           
;(Schreiben auf RAM durch Ersetzen von /var/spool/asterisk durch /var/spool)                                                
                                                                                                                                   
[recordtest]                                                                                                                       
; Prompt caller to authenticate and validate passcode                                                                              
exten => _90!,1,Goto(record,s,1)                                                                                            
                                                                                                       
; nicht per include in lokal aufzunehmen; wird ueber recordtest aufgerufen.                                                 
[record]                                                                                               
exten => s,1,Macro(entfernegitter)                                                                                          
;exten => s,n,answer(2000)                                                                 
exten => s,n,wait(1)                                                                                                        
; Ansagetext vorspielen                                                                                
exten => s,n,playback(VM_MESSAGE)                                                                                           
exten => s,n,set(TIMESTAMP=${STRFTIME(||%Y-%m-%d_%H-%M-%S)})                                           
exten => s,n,set(MSGFILENAME=${CALLERID(num)})                                                         
exten => s,n,set(MAILER_SUBJECT=Anrufer:${CALLERID(num)} Zeit:${TIMESTAMP})                                                 
exten => s,n,record(/var/spool/asterisk/${MSGFILENAME}.WAV,5,60)                                                            
;exten => s,n,playback(/var/spool/asterisk/${MSGFILENAME})                         
exten => s,n,hangup                                                                                                         
                                                                                                                                   
; Nachricht nach Hangup per e-mail versenden und l?schen                                                                    
exten => h,1,gotoif(${MSGFILENAME}?20:48)                                                                                          
exten => h,20,system(mv /var/spool/asterisk/${MSGFILENAME}.WAV /var/spool/asterisk/${MSGFILENAME}.wav)                      
exten => h,n,gotoif(${MAILER_USER}?40)                                                                                      
exten => h,n,system(mailer -s "${MAILER_SUBJECT}" -m "${MAILER_SMTP}" -f "${MAILER_FROM}" -t "${MAILER_TO}" -d /var/spool/asterisk/
exten => h,n,goto(45)                                                                                                              
exten => h,40,system(mailer -a "${MAILER_USER}" -w "${MAILER_PASSWORD}" -s "${MAILER_SUBJECT}" -m "${MAILER_SMTP}" -f "${MAILER_FRO
exten => h,n,goto(45)                                                                                                              
; Nachricht bei erfolgreichem Versand loeschen                                                                                     
exten => h,45,gotoif($[${SYSTEMSTATUS} = SUCCESS]?46:48)                                                                           
exten => h,46,system(rm /var/spool/asterisk/${MSGFILENAME}.wav)                                                                    
exten => h,47,goto(49)                                                                                                             
exten => h,48,NoOp(Hanging up - no message to send)                                                                                
exten => h,49,NoOp()                                                                                                               
exten => h,50,hangup                                                                                                               
                                                                                                                                   
;addon - mein Handy wird 2 mal kurz angerufen damit ich ¸ber neue Nachrichten informiert werde                                     
;exten => h,n,system(echo -e "Channel: CAPI/ISDN1/${RING_FOR_NOTICE}" >> /var/spool/callfile.txt)                                  
;exten => h,n,system(echo -e "Callerid: %msn2%" >> /var/spool/callfile.txt)                                                      
;exten => h,n,system(echo -e "Context: sips" >> /var/spool/callfile.txt)                                                           
;exten => h,n,system(echo -e "Extension: 111111" >> /var/spool/callfile.txt)                                                       
;exten => h,n,system(echo -e "MaxRetries: 1" >> /var/spool/callfile.txt)                                                           
;exten => h,n,system(echo -e "RetryTime: 5" >> /var/spool/callfile.txt)                                                            
;exten => h,n,system(echo -e "WaitTime: 9" >> /var/spool/callfile.txt)                                                             
;exten => h,n,system(echo -e "Priority: 1" >> /var/spool/callfile.txt)                                                             
;exten => h,n,system(mv /var/spool/callfile.txt /var/spool/asterisk/outgoing/callfile.txt)                                         
;exten => h,108,NoOp(nichts hinterlassen)                                                                                          
;exten => h,n,hangup                                                                                                               
[echotest]                                                                                                                         
exten => _80!,1,Macro(entfernegitter)                                                                                              
exten => _80!,n,answer                                                                                                             
exten => _80!,n,wait(2)                                                                                                            
exten => _80!,n,SayNumber(80)                                                                                                      
exten => _80!,n,wait(4)                                                                                                            
exten => _80!,n,playback(demo-echotest)                                                                                            
exten => _80!,n,echo                                                                                                               
exten => _80!,n,playback(demo-echodone)                                                                                            
exten => _80!,n,hangup                                                                                                             
                                                                                                                                   
;[authtest]                                                                                                                        
;exten => _89!,1,Macro(entfernegitter)                                                                                             
;exten => _89!,n,answer                                                                                                            
;exten => _89!,n,wait(2)                                                                                                           
;exten => _89!,n,authenticate(/etc/asterisk/passwd)                                                                                
;exten => _89!,n,system(zebedee2.bin -f /etc/zebedee/zbdr23.conf)                                                                  
;exten => _89!,n,playback(beep)                                                                                                    
;exten => _89!,n,hangup                                                                              

;                                                                                                                                  
; --------------------------------------------------------------------                                                             
; f¸r rausgehende Rufe                                               -                                                             
;                                                                    -                                                             
; Es hat sich als gute Praxis erwiesen, die Inhalte der Datei        -                                                             
; extensions.conf modular aufzubauen. Diese Praxis wollen            -                                                             
; wir auch hier anwenden                                             -                                                             
;                                                                    -                                                             
                                                                     -                                                             
[lokal]                                                              -                                                             
include => echotest                                                  -                                                             
include => recordtest                                                -                                                             
include => record_message                                            -                                                             
                                                                     -                                                             
; Erreichbarkeit der Nebenstellen                                    -                                                             
; untereinander herstellen                                           -                                                             
                                                                     -                                                             
                                                                     -                                                             
                                                                     -                                                             
                                                                     -                                                             
[festnetz_out]                                                       -                                                             
; Raustelefon?hlt!)                                                  -                                                             
; erzwinge default calller id aus capi.conf: /d                      -                                                             
; (/d geht nicht; SetCallerID verwenden)                             -                                                             
exten => _0900X.,1,GOTO(9)                                           -                                                             
exten => _0180X.,1,GOTO(9)                                           -                                                             
exten => _0137X.,1,GOTO(9)                                           -                                                             
exten => _0[1-9]X.,1,Set(SIP_ID=${CALLERID(num)})                    -                                                             
exten => _0[1-9]X.,2,Set(CALLERID(num)=%msn2%)                     -                                                             
exten => _0[1-9]X.,3,Set(NUM_DIGITS=${LEN(${EXTEN})})                -                                                             
exten => _0[1-9]X.,4,GOTOIF($[${NUM_DIGITS}>11]?5:7)                 -                                                             
exten => _0[1-9]X.,5,system(echo "${STRFTIME(||%Y-%m-%d_%H-%M-%S)} - ${CALLERID(num)}: Call from Account SIP-${SIP_ID} to ${EXTEN} 
exten => _0[1-9]X.,6,GOTO(9)                                                                                                       
exten => _0[1-9]X.,7,system(echo "${STRFTIME(||%Y-%m-%d_%H-%M-%S)} - ${CALLERID(num)}: Call from Account SIP-${SIP_ID} to ${EXTEN} 
exten => _0[1-9]X.,8,Dial(CAPI/ISDN1/${EXTEN},55,Tt)                                                                               
exten => _0[1-9]X.,9,HangUP()                                                                                                      
                                                                                                                                   
; --------------------------------------------------------------------                                                             
; f¸r reinkommende Rufe                                              -                                                             
;                                                                    -                                                             
; hier kommt der default-Context, in dem alle Geraete in der         -                                                             
; Grundkonfiguration erstmal laufen.                                 -                                                             
; Alle Geraete koennen sich gegenseitig anrufen                      -                                                             
                                                                     -                                                             
[default]                                                            -                                                             
;include => lokal                                                    -                                                             
                                                                     -                                                                          
                                                                                                                   
[%userSIPid%]                                                           -                                                             
include => lokal                                                     -                                                             
include => festnetz_out                                              -                         
; ISDN S0 extern                                                     -                                                             
[capi_in1]                                                           -                                                             
exten => _%msn2%,1,noop(Anruf von ${CALLERID(num)})                -                                                             
exten => _%msn2%,2,set(MSGFILENAME=)                               -                                                             
exten => _%msn2%,3,Dial(SIP/%userSIPid%,20,r)                            -                                                             
exten => _%msn2%,4,Goto(record,s,1)                                -

Vielen dank für die Hilfe
 
Zuletzt bearbeitet:
du könntest das ganze mit "capi show channels" überprüfen.

Code:
*CLI> capi show channels
CAPI B-channel information:
Line-Name       NTmode state i/o bproto isdnstate   ton  number
----------------------------------------------------------------
ISDN3#02         yes   Disc   -  trans              0x00 ''->''
ISDN3#01         yes   -----  -  trans              0x00 ''->''
ISDN1#02         no    Disc   -  trans              0x00 ''->''
ISDN1#01         no    Disc   -  trans              0x00 ''->''
Während Anruf
Code:
*CLI> capi show channels
CAPI B-channel information:
Line-Name       NTmode state i/o bproto isdnstate   ton  number
----------------------------------------------------------------
ISDN3#02         yes   Disc   -  trans              0x00 ''->''
ISDN3#01         yes   -----  -  trans              0x00 ''->''
ISDN1#02         no    Conn   O  trans  *BP         0x00 '1. MSN'->'2. MSN'
ISDN1#01         no    Conn   I  trans  *BS         0x21 '1.MSN'->'2. MSN'
und danach wieder alles auf "Disc"
Kannst du das mal überprüfen, ob da was verbunden bleibt.
 
nachdem Init:
Code:
CAPI B-channel information:

Line-Name       NTmode state i/o bproto isdnstate   ton  number

----------------------------------------------------------------
ISDN3#02         yes   -----  -  trans              0x00 ''->''
ISDN3#01         yes   -----  -  trans              0x00 ''->''
ISDN1#02         no    -----  -  trans              0x00 ''->''
ISDN1#01         no    -----  -  trans              0x00 ''->''
MSN2 ruft MSN1 an und telefoniert:
Code:
CAPI B-channel information:
Line-Name       NTmode state i/o bproto isdnstate   ton  number
----------------------------------------------------------------
ISDN3#02         yes   -----  -  trans              0x00 ''->''
ISDN3#01         yes   -----  -  trans              0x00 ''->''
ISDN1#02         no    Conn   O  trans  *BP         0x00 '%MSN2%'->'%MSN1'
ISDN1#01         no    -----  -  trans              0x00 ''->''

nachdem beide aufgelegt haben:
Code:
CAPI B-channel information:
Line-Name       NTmode state i/o bproto isdnstate   ton  number
----------------------------------------------------------------
ISDN3#02         yes   -----  -  trans              0x00 ''->''
ISDN3#01         yes   -----  -  trans              0x00 ''->''
ISDN1#02         no    Disc   -  trans              0x00 ''->''
ISDN1#01         no    -----  -  trans              0x00 ''->''

MSN1 ruft MSN2 an (geht nicht mehr)
Code:
CAPI B-channel information:
Line-Name       NTmode state i/o bproto isdnstate   ton  number
----------------------------------------------------------------
ISDN3#02         yes   -----  -  trans              0x00 ''->''
ISDN3#01         yes   -----  -  trans              0x00 ''->''
ISDN1#02         no    Conn   I  trans  *BS         0x21 '%MSN1%'->'%MSN2%'
ISDN1#01         no    -----  -  trans              0x00 ''->''

Mir ist noch folgendes aufgefallen.
Wenn ich das Softphone am Server anmelde bekomme ich diese Meldung:
Code:
 -- Registered SIP '%userSIPid%' at 192.168.178.22 port 51124 expires 300
       > Saved useragent "Telephone 0.15.0" for peer %userSIPid%
Wenn ich dann vom einen MSN zum anderen MSN hin her telefoniere, kommt irgendwann ein neuer User hinzu:
Code:
  == Using SIP RTP CoS mark 5

    -- Called %userSIPid%

    -- SIP/%userSIPid%-00621190 is ringing

    -- SIP/%userSIPid%-00621190 answered CAPI/ISDN1#02/%MSN2%-0
  == ISDN1#02: Answering for %MSN2%
  == ISDN1#02: Setting up DTMF detector (PLCI=0x1701, flag=1)

  == Spawn extension (capi_in1, %MSN2%, 3) exited non-zero on 'CAPI/ISDN1#02/%MSN2%-0'
  == ISDN1#02: CAPI Hangingup for PLCI=0x1701 in state 2
    -- Registered SIP '%userSIPid%' at %InetIP% port 5061 expires 120
       > Saved useragent "Asterisk PBX 1.6.0.1" for peer %userSIPid%
Dabei ist %InetIP% eben nicht die IP im LAN, sondern meine Internet-IP.
Danach kommt dann eben nur noch Loop Detected...
 
kannst du in der sip.conf mal den eintrag vom "register" weglassen
register => %userSIPid%:%userSIPid_PW%@%myIP.dyndns%:5061

[%userSIPid%]
Es lang bei einem Endgerät den Eintrag mit "[%userSIPid%]".

Kannst du mir noch mal kurz sagen, ob du die MSN intern anwählst oder schon über den NT extern.

Register ist nur für trunks und Provider vorgesehen.
 
super, ich habe jetzt die register Zeile entfernt, es scheint jetzt zu funktionieren.
Vielen dank !

Achso, alle Anrufe wurden extern geführt, also über NT.
 
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.