.titleBar { margin-bottom: 5px!important; }

Busy On Busy mit 2 Asterisk Server

Dieses Thema im Forum "Asterisk Rufnummernplan" wurde erstellt von oxirion, 15 Sep. 2005.

  1. oxirion

    oxirion Neuer User

    Registriert seit:
    7 Apr. 2005
    Beiträge:
    14
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Netzwerktechniker
    Ort:
    Tholey
    Hallo,

    Ich habe folgendes Problem :

    2 Asterisk Server und User die an beiden Servern angemeldet sein können. Ich habe zum Wählen das Super-Dial Macro von voip-info.org verwendet und etwas modifiziert. Setzt ein User eine wahl ab wird SetGroup für die Nummer des A-Tln. gesetzt. Ruft jetzt ein weiterer Teilnehmer diese "besetzte" Nebenstelle an , kommt die busy Mailbox. Das funktioniert alles wunderbar solange sich der A und B Tln. auf dem Selben Server angemeldet haben. So wie ich das sehe tauschen die Server via IAX diesen SetGroup Mechanismus nicht aus.
    Beispiel zu den folgenden extensions.conf wenn Tln. 110 mit 111 telefoniert und von Server 2 ruft 22 die 110 auf dem Server 1 dann klopft dieses Gespräch bei 110 an und das soll nicht sein (sondern busy MBX von 110).

    Server 1:
    Code:
    ;
    ; Static extension configuration file, used by
    ; the pbx_config module. This is where you configure all your 
    ; inbound and outbound calls in Asterisk. 
    ; 
    ;
    ; The "General" category is for certain variables.  
    ;
    [general]
    static=yes
    writeprotect=no
    ;
    ;    globale Einstellungen
    ;
    [globals]
    SVEN=Zap/1&IAX2/iaxsven              ;
    INTERNETT=xxxxx:xxxxx@xxxxxxx
    
    [default]
    ingnorepat => 9
    include => keinamt
    include => konferenz
    include => sven
    include => mailbox
    exten => 90,1,MeetMe(90)
    
    [mailbox]
    exten => 88,1,VoicemailMain(${CALLERIDNUM})
    exten => 88,2,Hangup
    
    [amt]
    ;
    ;	Teilnehmer die Amt bekommen sollen
    ;
    include => sven
    include => keinamt
    include => abgehend
    include => mailbox
    include => konferenz
    include => internett
    
    [keinamt]
    ;
    ;
    ; 	Teilnehmer die keine Amtsberechtigung haben
    ;
    ;
    exten => 111,1,Macro(ddial,SIP/cweber,20,m,,111,1,${CALLERIDNAME},${CALLERIDNUM},111,111,de)
    exten => 111,2,Voicemail,u111
    exten => 112,1,Macro(ddial,SIP/franke,20,m,,112,1,${CALLERIDNAME},${CALLERIDNUM},112,112,de)
    exten => 112,2,Voicemail,u112
    exten => 120,1,Macro(ddial,IAX2/iaxgast,20,m,,120,1,${CALLERIDNAME},${CALLERIDNUM},120,,de)
    
    [sven]
    exten => 110,1,Macro(ddial,${SVEN},20,m,,110,1,${CALLERIDNAME},${CALLERIDNUM},110,110,de)
    exten => 110,2,Voicemail,u110
    
    [incoming]
    ;
    ;
    ; 	ankommende Gespräche auf SVENS
    ;
    ;
    exten => s,1,Macro(ddial,${SVEN},25,,,10,1,,${CALLERIDNUM},110,110,de)
    exten => s,2,Voicemail,u110
    exten => xxxxxxxx,1,Macro(ddial,${SVEN},25,,,10,1,,${CALLERIDNUM},110,110,de)
    exten => xxxxxxxx,2,Voicemail,u110
    exten => xxxx,1,Macro(ddial,${SVEN},25,,,10,1,,${CALLERIDNUM},110,110,de)
    exten => xxxx,2,Voicemail,u110
    
    
    [macro-ddial]
    ; super macro 
    ;	${ARG1} - (wie SIP/2201)
    ;	${ARG2} - timeout in Sekunden
    ;	${ARG3} - Dial command options 
    ;	${ARG4} - URL 
    ;	${ARG5} - Gruppen Name  (um die Größe der Warte-Que anzugeben)
    ;	${ARG6} - Max. Gruppen Nummer (max. wartende Anrufer)
    ;	${ARG7} - Caller ID Name 
    ;	${ARG8} - Caller ID Nummer 
    ;	${ARG9} - CDR account name (over-rides account group setting in sip.conf or iax.conf)
    ;	${ARG10} - Mailboxnummer für nichtbenatwortete Anrufe
    ;	${ARG11} - Sprache für Voicemail (de,fr,en)
    ; Beispiele :
    ; 	abgehend: 
    ;		exten => s,1,Macro(ddial,IAX2/voipjet/${tfnumber},,,,voip,${MAXVOIPCALLS},yourname,8005551234,voipjet) 
    ;		exten => s,2,Macro(ddial,IAX2/alpeh-com/${tfnumber},,,,voip,${MAXVOIPCALLS},yourname,8005551234,aleph) 
    ;	der erste freie abgehende Channel wird benutzt
    ;
    ;	eingehend: 
    ;		exten => s,1,Wait(2)
    ;		exten => s,2,Macro(superdial,${PHONE1},15,Ttm,,pstn,${MAXPSTNCALLS},${CALLERIDNAME},${CALLERIDNUM},pstn,u${GENERALVM})
    ;		exten => s,3,Macro(superdial,${PHONE1},15,Ttm,,pstn,${MAXPSTNCALLS},${CALLERIDNAME},${CALLERIDNUM},pstn,u${GENERALVM})
    ;		exten => s,4,Voicemail(b${GENERALVM})
    ;	geht in u VM wenn Timer abgelaufen .. sonst (besetzt) wird die nächste Extension gerufen 
    ;	wenn alle besetzt oder nicht erreichbar sind .. gehe in busy Mailbox wenn sonst nix geht
    ;
    exten => s,1,SetLanguage(${ARG11})
    exten => s,2,SetGroup(${ARG5})
    exten => s,3,CheckGroup(${ARG6})	; springe zu 103 wenn Anzahl der Anrufer in der Gruppe ${ARG5} schon ${ARG6} ist
    exten => s,4,GotoIf($["${ARG7}" = ""]?macro-ddial,s,6)
    exten => s,5,SetCIDName(${ARG7})	; überspringe wenn ARG7 leer ist
    exten => s,6,GotoIf($["${ARG8}" = ""]?macro-ddial,s,8)
    exten => s,7,SetCIDNum(${ARG8})		; überspringe wenn ARG8 leer ist
    exten => s,8,GotoIf($["${ARG9}" = ""]?macro-ddial,s,10)
    exten => s,9,SetAccount(${ARG9})	; überspringe wenn ARG9 leer ist
    exten => s,10,Dial(${ARG1},${ARG2},${ARG3},${ARG4})
    exten => s,11,Goto(s-${DIALSTATUS},1)
    exten => s,104,Goto(s-BUSY,1)
    exten => s-BUSY,1,GotoIf($["${ARG10}" = ""]?macro-ddial,s-BUSY,3)
    exten => s-BUSY,2,Voicemail(b${ARG10})
    exten => s-BUSY,3,Noop
    exten => s-NOANSWER,1,GotoIf($["${ARG10}" = ""]?macro-ddial,s-NOANSWER,3)
    exten => s-NOANSWER,2,Voicemail(u${ARG10})
    exten => s-NOANSWER,3,Noop
    exten => _s-.,1,Noop
    ;
    ;
    ;       Die Amtsleitungen
    ;
    ;
    [abgehend]
    exten => _90[02-8].,1,Macro(ddial,SIP/${EXTEN:1}@1und1,,,,${CALLERIDNUM},1,,xxxxxxxx,,,de)
    exten => _91.,1,Macro(ddial,Zap/g2/${EXTEN:2},,,,${CALLERIDNUM},1,,xxxxxxx,,,de)
    exten => _95.,1,Macro(ddial,SIP/${EXTEN:2}@sipgate,,,,${CALLERIDNUM},1,,,,,de)
    ;
    ;
    ;	Konferenzräume
    ;
    ;
    [konferenz]
    exten => 90,1,MeetMe(90)
    ;
    ;
    ;	Server bei internett
    ;
    ;
    [internett]
    switch => IAX2/${INTERNETT}/intern
    
    Server 2:
    Code:
    [general]
    static=yes
    writeprotect=no
    [globals]
    SVENIAX=xxxxxxxx:xxxxxxxxxx@xx.xxxxxxxx.xxx
    HENDRIK=IAX2/hendrik
    JOHANNES=IAX2/johannes
    SILKE=IAX2/silke
    ORGA=IAX2/orga
    HANAUER=IAX2/hanauer
    WEINMANN=IAX2/weinmann
    CHRISTIAN=IAX2/christian
    MARKUS=IAX2/markus
    JOHANNES=IAX2/johannes
    MICHAEL=IAX2/michael
    ;
    ; The SWITCH statement permits a server to share the dialplain with
    ; another server. Use with care: Reciprocal switch statements are not
    ; allowed (e.g. both A -> B and B -> A), and the switched server needs
    ; to be on-line or else dialing can be severly delayed.
    ;
    
    [default]
    include => intern
    
    [lokal]
    include => intern
    exten => 89,1,VoicemailMain(${CALLERIDNUM})
    exten => 89,2,Hangup
    switch => IAX2/${SVENIAX}/sven
    
    [intern]
    exten => 11,1,Macro(ddial,${HENDRIK},20,,,11,1,${CALLERIDNAME},${CALLERIDNUM},11,,de)
    exten => 11,2,Voicemail,u11
    exten => 12,1,Macro(ddial,${SILKE},20,,,12,1,${CALLERIDNAME},${CALLERIDNUM},12,,de)
    exten => 12,2,Voicemail,u12
    exten => 13,1,Macro(ddial,${ORGA},20,,,13,1,${CALLERIDNAME},${CALLERIDNUM},13,,de)
    exten => 13,2,Voicemail,u13
    exten => 14,1,Macro(ddial,${HANAUER},20,,,14,1,${CALLERIDNAME},${CALLERIDNUM},14,,de)
    exten => 14,2,Voicemail,u14
    exten => 15,1,Macro(ddial,${CHRISTIAN},20,,,15,1,${CALLERIDNAME},${CALLERIDNUM},15,,de)
    exten => 15,2,Voicemail,u15
    exten => 22,1,Macro(ddial,${JOHANNES},20,,,22,1,${CALLERIDNAME},${CALLERIDNUM},22,,de)
    exten => 22,2,Voicemail,u22
    exten => 23,1,Macro(ddial,${MICHAEL},20,,,23,1,${CALLERIDNAME},${CALLERIDNUM},23,,de)
    exten => 23,2,Voicemail,u23
    exten => 24,1,Macro(ddial,${MARKUS},20,,,24,1,${CALLERIDNAME},${CALLERIDNUM},24,,de)
    exten => 24,2,Voicemail,u24
    exten => 33,1,Macro(ddial,${MARKUS},20,,,33,1,${CALLERIDNAME},${CALLERIDNUM},33,,de)
    exten => 33,2,Voicemail,u33
    exten => 5000,1,SetGroup(${CALLERIDNUM})
    exten => 5000,2,DISA(no-password|lokal)
    
    ;iaxsven]
    ;exten => 111,1,Dial(IAX2/${SVENIAX}/111)
    ;exten => 111,2,Hangup
    
    [macro-ddial]
    ; super macro
    ;       ${ARG1} - (wie SIP/2201)
    ;       ${ARG2} - timeout in Sekunden
    ;       ${ARG3} - Dial command options
    ;       ${ARG4} - URL
    ;       ${ARG5} - Gruppen Name  (um die Größe der Warte-Que anzugeben)
    ;       ${ARG6} - Max. Gruppen Nummer (max. wartende Anrufer)
    ;       ${ARG7} - Caller ID Name
    ;       ${ARG8} - Caller ID Nummer
    ;       ${ARG9} - CDR account name (over-rides account group setting in sip.conf or iax.conf)
    ;       ${ARG10} - Mailboxnummer für nichtbenatwortete Anrufe
    ;       ${ARG11} - Sprache für Voicemail (de,fr,en)
    ; Beispiele :
    ;       abgehend:
    ;               exten => s,1,Macro(ddial,IAX2/voipjet/${tfnumber},,,,voip,${MAXVOIPCALLS},yourname,8005551234,voipjet)
    ;               exten => s,2,Macro(ddial,IAX2/alpeh-com/${tfnumber},,,,voip,${MAXVOIPCALLS},yourname,8005551234,aleph)
    ;       der erste freie abgehende Channel wird benutzt
    ;
    ;       eingehend:
    ;               exten => s,1,Wait(2)
    ;               exten => s,2,Macro(ddial,${PHONE1},15,Ttm,,pstn,${MAXPSTNCALLS},${CALLERIDNAME},${CALLERIDNUM},pstn,u${GENERALVM})
    ;               exten => s,3,Macro(ddial,${PHONE1},15,Ttm,,pstn,${MAXPSTNCALLS},${CALLERIDNAME},${CALLERIDNUM},pstn,u${GENERALVM})
    ;               exten => s,4,Voicemail(b${GENERALVM})
    ;       geht in u VM wenn Timer abgelaufen .. sonst (besetzt) wird die nächste Extension gerufen
    ;       wenn alle besetzt oder nicht erreichbar sind .. gehe in busy Mailbox wenn sonst nix geht
    ;
    exten => s,1,SetLanguage(${ARG11})
    exten => s,2,SetGroup(${ARG5})
    exten => s,3,CheckGroup(${ARG6})        ; springe zu 103 wenn Anzahl der Anrufer in der Gruppe ${ARG5} schon ${ARG6} ist
    exten => s,4,GotoIf($["${ARG7}" = ""]?macro-ddial,s,6)
    exten => s,5,SetCIDName(${ARG7})        ; überspringe wenn ARG7 leer ist
    exten => s,6,GotoIf($["${ARG8}" = ""]?macro-ddial,s,8)
    exten => s,7,SetCIDNum(${ARG8})         ; überspringe wenn ARG8 leer ist
    exten => s,8,GotoIf($["${ARG9}" = ""]?macro-ddial,s,10)
    exten => s,9,SetAccount(${ARG9})        ; überspringe wenn ARG9 leer ist
    exten => s,10,Dial(${ARG1},${ARG2},${ARG3},${ARG4})
    exten => s,11,Goto(s-${DIALSTATUS},1)
    exten => s,104,Goto(s-BUSY,1)
    exten => s-BUSY,1,GotoIf($["${ARG10}" = ""]?macro-ddial,s-BUSY,3)
    exten => s-BUSY,2,Voicemail(b${ARG10})
    exten => s-BUSY,3,Noop
    exten => s-NOANSWER,1,GotoIf($["${ARG10}" = ""]?macro-ddial,s-NOANSWER,3)
    exten => s-NOANSWER,2,Voicemail(u${ARG10})
    exten => s-NOANSWER,3,Noop
    exten => _s-.,1,Noop