Asterisk Queue Probleme

tmace85

Neuer User
Mitglied seit
24 Aug 2006
Beiträge
16
Punkte für Reaktionen
0
Punkte
0
Hallo Leute,

Folgendes Szenario.

Asterisk 1.4.11
mISDN 1.1.11

1 x Beronet BNE1 1 Port Karte
1 x Beronet BN4S0 4 Port S0 Karte

Folgendes Problem.

Wie haben eine Warteschlange konfiguriert, Die Agents können sich anmelden usw.
Angemeldete Agenten:
Agent 1 Prio 1
Agent 2 Prio 2

Wenn nun jemand auf die Warteschlange anruft und der Agent 1 mit der Prio 1 besetzt ist geht die Mailbox ran. Er geht also nicht weiter zur nächsten Priorität oder bleibt nicht in der Warteschleife.
Er geht direkt zur Mailbox des Agent 1.

Hier mal die Konfiguration:
[Agents.conf]
Code:
persistentagents=yes
autologoff=35
;autologoffunavail=yes
ackcall=no
endcall=no
wrapuptime=60000
updatecdr=yes

group=1
agent=>111,,Agent 1 level 1
agent=>112,,Agent 2 level 1
agent=>113,,Agent 3 level 1
agent=>114,,Agent 4 level 1


agent=>121,,Agent 5 level 1
agent=>122,,Agent 6 level 1


group=2
agent=>211,,Agent 1 level 2 
agent=>212,,Agent 2 level 2
agent=>213,,Agent 3 level 2
agent=>214,,Agent 4 level 2


agent=>221,,Agent 5 level 2
agent=>222,,Agent 6 level 2


group=3
agent=>311,,Agent 1 level 3
agent=>312,,Agent 2 level 3
agent=>313,,Agent 3 level 3
agent=>314,,Agent 4 level 3


agent=>321,,Agent 5 level 3
agent=>322,,Agent 6 level 3
[sip.conf]
Code:
[13]
type=friend
user=13
secret=13
callerid=Name <13>
host=dynamic
mailbox=00
canreinvite=yes
pickupgroup=1
callgroup=1
;call-limit=2
nat=yes
[queues.conf]
Code:
persistentmembers = yes
autofill = yes
monitor-type = MixMonitor

[keyaccount]
musiconhold=warteschlange
strategy = roundrobin
timeout = 15
reportholdtime= yes
wrapuptime= 60
maxlen = 10
announce-frequency = 0
announce-holdtime = no
joinempty = yes
timeoutrestet = no
;memberdelay = 0


member => Agent/11
member => Agent/12
member => Agent/13
member => Agent/14
member => Agent/21
member => Agent/22


[warteschlange]
musiconhold=daphi-warteschlange
strategy = roundrobin
timeout = 15
reportholdtime= yes
wrapuptime= 60
maxlen = 10
announce-frequency = 0
announce-holdtime = no
joinempty = yes
timeoutreset = no
;memberdelay = 0


member => Agent/11
member => Agent/12
member => Agent/13
member => Agent/14
member => Agent/21
member => Agent/22




;PRIO = 1
member => Agent/111,1
member => Agent/112,1
member => Agent/113,1
member => Agent/114,1
member => Agent/121,1
member => Agent/122,1

extensions.conf
Code:
; extensions.conf - the Asterisk dial plan
;
; Static extension configuration file, used by
; the pbx_config module. This is where you configure all your 
; inbound and outbound calls in Asterisk. 
; 
; This configuration file is reloaded 
; - With the "dialplan reload" command in the CLI
; - With the "reload" command (that reloads everything) in the CLI

;
; The "General" category is for certain variables.  
;
[general]
;
; If static is set to no, or omitted, then the pbx_config will rewrite
; this file when extensions are modified.  Remember that all comments
; made in the file will be lost when that happens. 
;
; XXX Not yet implemented XXX
;
static=yes
;
; if static=yes and writeprotect=no, you can save dialplan by
; CLI command "dialplan save" too
;
writeprotect=yes
;
; If autofallthrough is set, then if an extension runs out of
; things to do, it will terminate the call with BUSY, CONGESTION
; or HANGUP depending on Asterisk's best guess. This is the default.
;
; If autofallthrough is not set, then if an extension runs out of 
; things to do, Asterisk will wait for a new extension to be dialed 
; (this is the original behavior of Asterisk 1.0 and earlier).
;
autofallthrough=no
;
; If clearglobalvars is set, global variables will be cleared 
; and reparsed on an extensions reload, or Asterisk reload.
;
; If clearglobalvars is not set, then global variables will persist
; through reloads, and even if deleted from the extensions.conf or
; one of its included files, will remain set to the previous value.
;
; NOTE: A complication sets in, if you put your global variables into
; the AEL file, instead of the extensions.conf file. With clearglobalvars
; set, a "reload" will often leave the globals vars cleared, because it
; is not unusual to have extensions.conf (which will have no globals)
; load after the extensions.ael file (where the global vars are stored).
; So, with "reload" in this particular situation, first the AEL file will
; clear and then set all the global vars, then, later, when the extensions.conf
; file is loaded, the global vars are all cleared, and then not set, because
; they are not stored in the extensions.conf file.
;
clearglobalvars=no
;
; If priorityjumping is set to 'yes', then applications that support
; 'jumping' to a different priority based on the result of their operations
; will do so (this is backwards compatible behavior with pre-1.2 releases
; of Asterisk). Individual applications can also be requested to do this
; by passing a 'j' option in their arguments.
;
priorityjumping=yes
;
; User context is where entries from users.conf are registered.  The
; default value is 'default'
;
;userscontext=default
;
; You can include other config files, use the #include command
; (without the ';'). Note that this is different from the "include" command
; that includes contexts within other contexts. The #include command works
; in all asterisk configuration files.
;#include "filename.conf"

; The "Globals" category contains global variables that can be referenced
; in the dialplan with the GLOBAL dialplan function:
; ${GLOBAL(VARIABLE)}
; ${${GLOBAL(VARIABLE)}} or ${text${GLOBAL(VARIABLE)}} or any hybrid
; Unix/Linux environmental variables can be reached with the ENV dialplan
; function: ${ENV(VARIABLE)}
;
[globals]
CONSOLE=Console/dsp				; Console interface for demo

RINGTIME1 => 30
RINGTIME2 => 50

;ANSCHLUSS
LEITUNG1_NR => nummer

;Anderes
FAX => mISDN/g:ISDN-NT/01
ISDNFONWERKSTATT => mISDN/g:ISDN-NT/34

; Support
SUPPORT1 => SIP/11
SUPPORT2 => SIP/12
SUPPORT3 => SIP/13
;SUPPORT4 => mISDN/g:ISDN-TE/nummer
SUPPORT4 => SIP/14
SUPPORT5 => SIP/17
SUPPORT_ALL = ${SUPPORT1}&${SUPPORT2}&${SUPPORT3}&${SUPPORT4}
;GL

GL_ALL => ${GL2}
GL1 => SIP/21
GL2 => SIP/22
;Sekki
SEK1 => SIP/15
SEK2 => SIP/18

[default]
include => isdn-nt


[isdn-te]
;exten => 200,1,Macro(setze-callerid-eingehend)
;exten => 200,n,Goto(von-extern,${EXTEN:1},1)

exten => _${LEITUNG1_NR}XX,1,Macro(setze-callerid-eingehend)
exten => _${LEITUNG1_NR}XX,n,Goto(von-extern,${EXTEN:7},1)

[isdn-nt]
;nach extern telefonieren
exten => _9.,1,Goto(nach-extern,${EXTEN},1)
exten => _9.,n,Hangup

exten => _XX,1,Goto(intern,${EXTEN},1)

[von-extern]

exten => 00,1,GotoIfTime(19:00-09:00,mon-fri,*,*?nachtschaltung,s,1)
exten => 00,n,GotoIfTime(00:00-23:59,sat-sun,*,*?nachtschaltung,s,1)
exten => 00,n,GotoIfTime(18:00-19:00,wed,13-13,feb?schulung,s,1)
;exten => 00,n,GotoIfTime(13:00-19:00,fri,14-14,dec?weihnachten,s,1)
exten => 00,n,GotoIfTime(13:00-23:59,mon,31-31,dec?silvester,s,1)
;exten => 00,n,GotoIfTime(00:00-23:59,tue,1-1,jan?silvester,s,1)
exten => 00,n,Macro(callin-direkt,${SUPPORT_ALL},${RINGTIME1})


exten => 21,1,Macro(callin-gl,${GL_ALL},${RINGTIME1})
;exten => 21,1,Macro(callin-direkt,SIP/22,${RINGTIME1})
;exten => 21,2,hangup



exten => 01,1,misdn_set_opt(n:!e) ; optionen: n= don't detect dtmf tones on called channel: !e=no  echo cancelation on this channel: 
exten => 01,2,Dial(${FAX})
exten => 01,n,Hangup

;exten => 04,1,Answer()
;exten => 04,2,set(TIMEOUT(absolute)=59)
;exten => 04,3,Set(FAXFILE=/tmp/incomingfax.tif)
;exten => 04,4,rxfax(${FAXFILE})
;exten => T,1,hangup()

; Konferenzraum
exten => 03,1,Ringing
exten => 03,n,Wait(2)
exten => 03,n,MeetMe(03,Mic)
exten => 03,n,Hangup


exten => 05,1,Answer()
exten => 05,2,Playback(test/testfile)
exten => 05,n,Hangup

;DISA-Funktion
exten => 09,1,Answer()
exten => 09,n,Set(TIMEOUT(digit)=5)
exten => 09,n,Set(TIMEOUT(response)=20)
exten => 09,n,Authenticate(4041)
exten => 09,n,DISA(no-password|nach-extern)
exten => 09,n,Hangup


;WARTESCHLANGE
exten => 06,1,Answer
;exten => 06,n,Background(warteschlange/begruessung1)
exten => 06,2,SetMusicOnHold(daphi-warteschlange)
exten => 06,3,Queue(warteschlange|tT,,,180)
;exten => 06,n,Goto(von-extern,3)
;exten => 06,4,Hangup()



exten => 20,1,GotoIfTime(19:00-09:00,mon-fri,*,*?nachtschaltung,s,1)
exten => 20,n,GotoIfTime(00:00-23:59,sat-sun,*,*?nachtschaltung,s,1)
exten => 20,n,Macro(callin-gl,${GL_ALL},${RINGTIME1})

t
exten => 28,1,Playback(xxx/alte_nummer_umleitung)
exten => 28,n,Goto(00,1)


exten => 29,1,Goto(01,1)

; alles andere
exten => _XX,1,Goto(intern,${EXTEN},1)

[nach-extern]
exten => _9.,1,Macro(setze-callerid-ausgehend)
exten => _9.,n,Dial(mISDN/g:ISDN-TE/${EXTEN:1},,Tm(daphi-intern))


[intern]
include => warteschlange
include => voicemail

; SIP HINTs
exten => 18,hinz,SIP,18
exten => 17,hinz,SIP,17
exten => 16,hint,SIP/16
exten => 15,hint,SIP/15
exten => 14,hint,SIP/14
exten => 13,hint,SIP/13
exten => 12,hint,SIP/12
exten => 11,hint,SIP/11
exten => 21,hint,SIP/22
exten => 210,hint,SIP/210
exten => 22,hint,SIP/22

; SIPGATE-Anrufe
exten => xxx,1,Goto(von-extern,00,1)
exten => xxx,1,Goto(von-extern,00,1)

;nach ausserhalb telefonieren
exten => _9.,1,Goto(nach-extern,${EXTEN},1)
exten => _9.,n,Hangup

;Faxe empfangen
exten => 01,1,Goto(von-extern,${EXTEN},1)

;exten => 04,1,Goto(von-extern,${EXTEN},1)


exten => 20,1,Goto(von-extern,${EXTEN},3)
exten => 20,n,Hangup


;die SIP-Teilnehmer anrufen
exten => _1X,1,Macro(callin-direkt,SIP/${EXTEN},${RINGTIME2})
exten => _1X,n,Hangup
exten => _2X,1,Macro(callin-direkt,SIP/${EXTEN},${RINGTIME1})
exten => _2X,n,Hangup
;exten => _21X,1,Macro(callin-direkt,SIP/22,${RINGTIME1})
;exten => _21X,n,Hangup

;ISDN-Geräte anrufen
exten => _3X,1,Dial(mISDN/g:ISDN-NT/${EXTEN})
exten => _3X,n,Hangup


exten => 49,1,Answer
exten => 49,n,MusicOnHold

[warteschlange]
;#an der Warteschlange anmelden

exten => 800,1,Answer()
;exten => 800,2,AgentCallbackLogin(${CALLERID(num)},s,${CALLERID(num)}@warteschlange)
exten => 800,n,AgentCallbackLogin(,${CALLERID(num)}@warteschlange)
exten => 800,n,Playback(agent-loginok)
exten => 800,n,Hangup()

;#Agent abmelden
exten => 801,1,Answer()
exten => 801,2,system(asterisk -rx "agent logoff agent/${AGENTBYCALLERID_${CALLERID(num)}}")
exten => 801,n,Playback(agent-loggedoff)
exten => 801,n,Hangup()


;Konfig für Nachtanrufe
[nachtschaltung]
exten => s,1,Playback(xxx/ausserhalb_gz)
exten => s,n,Voicemail(00)
exten => s,n,Hangup()

[weihnachten2]
exten => s,1,Answer()
exten => s,2,NoOp(Hallo)
exten => s,n,Background(weihnachten2)
exten => s,n,Voicemail(00)
exten => s,n,Hangup()

[silvester]
exten => s,1,Answer()
exten => s,2,NoOp(Hallo)
exten => s,n,Background(silvester)
exten => s,n,Voicemail(00)
exten => s,n,Hangup()

[schulung]
exten => s,1,Answer()
exten => s,2,NoOp(Hallo)
exten => s,n,Background(schulung)
exten => s,n,Voicemail(00)
exten => s,n,Hangup()

;1 wird angesprungen, wenn 1 bei backround weihnachten gedruekt wird
exten => 1,1,Dial(mISDN/g:ISDN-TE/Nummer)
exten => 1,2,Hangup()



[voicemail]
; persoenliche mailboxen
exten => 1111,1,VoicemailMain(s${CALLERID(num)})
exten => 1111,n,Hangup
; zentrale mailbox fuer die 0
exten => 1110,1,VoicemailMain(s00)
exten => 1110,n,Hangup


;#########################################################################################
;			    M A C R O S
;#########################################################################################


; Makro fuer die direkte Anwahl einer Nummer
[macro-callin-direkt]
; ARG1= Protokoll(SIP od. IAX2) und Rufnummer z.B. SIP/11 oder SIP/11&SIP/12
; ARG2= Timeout beim Klingeln
; waehle RINGIMTE1 Sekunden und liefere dann den dialstatus

exten => s,1,NoOp(Dialing ${ARG1} ARG2})
exten => s,2,Dial(${ARG1},${ARG2},tT)
exten => s,n,Goto(s-${DIALSTATUS},1)


; In abhaengigkeit des Dialstatus aktionen ausfuehren
exten => s-NOANSWER,1,Voicemail(u${MACRO_EXTEN})
exten => s-NOANSWER,n,Hangup
exten => s-CHANUNAVAIL,1,Voicemail(u${MACRO_EXTEN})
exten => s-CHANUNAVAIL,n,Hangup
exten => s-BUSY,1,Voicemail(b${MACRO_EXTEN})
exten => s-BUSY,n,Hangup
exten => s-CONGESTION,1,Voicemail(u${MACRO_EXTEN})
exten => s-CONGESTION,n,Hangup



; Makro fuer die GL Rufnummer (-20)
[macro-callin-gl]
; ARG1= Protokoll(SIP od. IAX2) und Rufnummer z.B. SIP/11 oder SIP/11&SIP/12
; ARG2= Timeout beim Klingeln
; waehle RINGIMTE1 Sekunden und liefere dann den dialstatus
exten => s,1,Dial(${ARG1},${ARG2},t)
exten => s,n,Goto(s-${DIALSTATUS},1)
; In abhaengigkeit des Dialstatus aktionen ausfuehren
exten => s-NOANSWER,1,Voicemail(u00)
exten => s-NOANSWER,n,Hangup
exten => s-CHANUNAVAIL,1,Voicemail(u00)
exten => s-CHANUNAVAIL,n,Hangup
exten => s-BUSY,1,Voicemail(b00)
exten => s-BUSY,n,Hangup
exten => s-CONGESTION,1,Voicemail(u00)
exten => s-CONGESTION,n,Hangup


[macro-setze-callerid-eingehend]
;# Setzt die Caller ID (Namen) für eingehende Anrufe
;# keine Parameter

exten => s,1,Set(CALLERID(num)=9${CALLERID(num)})
exten => s,n,GotoIf($[${CALLERID(num)} = 9]?unbekannt:weiter)
exten => s,n(unbekannt),Set(CALLERID(name)="Unbekannte Rufnummer")
exten => s,n,Set(CALLERID(num)=Unbekannt)
exten => s,n(weiter),NoOp(${CALLERID(all)})

;wenn der Anruf nicht aus Deutschland kommt (Callerid beginnt mit 900), dann schalte den Kanal auf Englisch
exten => s,n,GotoIf($[${CALLERID(num):0:3} = 900 ]?en:ende)

exten => s,n(en),Set(CHANNEL(language)=en)
exten => s,n(ende),NoOp(Kanalsprache: ${CHANNEL(language)})

[macro-setze-callerid-ausgehend]
;# Setzt CallerID für ausgehende Anrufe

exten => s,1,Set(CALLERID(num)=00)

Habt ihr ne Ahnung warum dass so ist?

MFG tmace85

Edit Guard-X: Bitte nächstes mal Code-Tags verwenden!
 
Zuletzt bearbeitet:
extensions.conf ?
 
da ist sie sorry hatte ich vergessen
 
Welche Rufnummer wählst Du um das Wartefeld zu erreichen,
LeitungsNummer+00 oder +06?
 
Vielleicht fasst Du diese Zeilen ein wenig enger oder kommentierst sie mal testweise aus.

Code:
; alles andere
exten => _XX,1,Goto(intern,${EXTEN},1)

Ein Mitschnitt aus dem CLI könnte auch helfen.
 
Hi ixsz,

ich hatte es auskommentiert. Kommt der gleiche Fehler. Hier mal die CLI:

Code:
    -- Executing [anrufende nummer@isdn-te:1] Macro("mISDN/3-u184", "setze-callerid-ein                                                                             gehend") in new stack
    -- Executing [s@macro-setze-callerid-eingehend:1] Set("mISDN/3-u184", "CALLE                                                                             RID(num)=anrufende nummer") in new stack
    -- Executing [s@macro-setze-callerid-eingehend:2] GotoIf("mISDN/3-u184", "0?                                                                             unbekannt:weiter") in new stack
    -- Goto (macro-setze-callerid-eingehend,s,5)
    -- Executing [s@macro-setze-callerid-eingehend:5] NoOp("mISDN/3-u184", """ <                                                                             anrufende nummer>") in new stack
    -- Executing [s@macro-setze-callerid-eingehend:6] GotoIf("mISDN/3-u184", "0?                                                                             en:ende") in new stack
    -- Goto (macro-setze-callerid-eingehend,s,8)
    -- Executing [s@macro-setze-callerid-eingehend:8] NoOp("mISDN/3-u184", "Kana                                                                             lsprache: de") in new stack
    -- Executing [nummer-06@isdn-te:2] Goto("mISDN/3-u184", "von-extern|06|1") i                                                                             n new stack
    -- Goto (von-extern,06,1)
    -- Executing [06@von-extern:1] Answer("mISDN/3-u184", "") in new stack
    -- Executing [06@von-extern:2] SetMusicOnHold("mISDN/3-u184", "daphi-wartesc                                                                             hlange") in new stack
    -- Executing [06@von-extern:3] Queue("mISDN/3-u184", "warteschlange|tT|||180                                                                             ") in new stack
    -- Started music on hold, class 'warteschlange', on mISDN/3-u184
    -- outgoing agentcall, to agent '113', on 'Local/13@default-5000,1'
    -- Executing [13@default:1] Goto("Local/13@default-5000,2", "intern|13|1") i                                                                             n new stack
    -- Goto (intern,13,1)
    -- Executing [13@intern:1] Macro("Local/13@default-5000,2", "callin-direkt|S                                                                             IP/13|50") in new stack
    -- Executing [s@macro-callin-direkt:1] NoOp("Local/13@default-5000,2", "Dial                                                                             ing SIP/13 ARG2}") in new stack
    -- Executing [s@macro-callin-direkt:2] Dial("Local/13@default-5000,2", "SIP/                                                                             13|50|tT") in new stack
    -- Called 13
    -- Got SIP response 486 "Busy Here" back from 172.22.22.152
    -- SIP/13-0819a2f0 is busy
  == Everyone is busy/congested at this time (1:1/0/0)
    -- Executing [s@macro-callin-direkt:3] Goto("Local/13@default-5000,2", "s-BU                                                                             SY|1") in new stack
    -- Goto (macro-callin-direkt,s-BUSY,1)
    -- Executing [s-BUSY@macro-callin-direkt:1] VoiceMail("Local/13@default-5000                                                                             ,2", "b13") in new stack
    -- Agent/113 answered mISDN/3-u184
    -- <Local/13@default-5000,2> Playing '/var/spool/asterisk/voicemail/default/                                                                             13/busy' (language 'en')
    -- <Agent/113> Playing 'queue-reporthold' (language 'en')
[May 13 15:25:28] WARNING[1381]: interface.c:215 decodeMP3: Junk at the beginnin                                                                             g of frame 00000000
    -- Executing [35@intern:1] Dial("SIP/13-b46007d0", "mISDN/g:ISDN-NT/35") in                                                                              new stack
    -- Called g:ISDN-NT/35
    -- <Agent/113> Playing 'queue-less-than' (language 'en')
    -- <Agent/113> Playing 'digits/2' (language 'en')
    -- <Agent/113> Playing 'queue-minutes' (language 'en')
    -- Stopped music on hold on mISDN/3-u184
  == Spawn extension (von-extern, 06, 3) exited non-zero on 'mISDN/3-u184'
  == Spawn extension (macro-callin-direkt, s-BUSY, 1) exited non-zero on 'Local/                                                                             13@default-5000,2' in macro 'callin-direkt'
  == Spawn extension (macro-callin-direkt, s-BUSY, 1) exited non-zero on 'Local/                                                                             13@default-5000,2'

MFG
 
Habe den Fehler gefunden. Es war im Macro "call-in-direkt" bei dem Status s-bussy.
Hier die richtige variante:

Code:
exten => s-BUSY,1,Dial(${ARG3},20,tT)
exten => s-BUSY,n,Voicemail(b${MACRO_EXTEN})
exten => s-BUSY,n,Hangup

Vielen Dank für eure hilfe

MFG
 
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.