FOP2 with agents
I have 200 users which are set up as agents using AgentCallBackLogin etc to enable hotdesking. With FOP1 i was able to use the same config but simply have
[Agent/496]
extension=496
instead of
[SIP/496]
extension=496
and everything worked fine. This doesn't seem to work with FOP2.
Am i missing something really simple?
Thanks
Court
[Agent/496]
extension=496
instead of
[SIP/496]
extension=496
and everything worked fine. This doesn't seem to work with FOP2.
Am i missing something really simple?
Thanks
Court
Comments
You have to fill the context and extension with the ones that show as Location when you do a "show agents"
Best regards,
Sorry my complete button config is:
[Agent/510]
type=extension
extension=510
voicemailext=*510@fop
channel=Agent/510
context=fop
mailbox=510
label=Courtenay Greig 510
It displays, but when i make a call, it shows no change, however if someone rings me, Line one changes to show the new info, the the colour doesnt go red and the little LED remains unchanged. Its like its only getting half the info....
Is the above config correct?
Thanks Court
Thanks
Court
You did not post the output of "show agents". As I said, the channel name is not that important. The important part is the LOCATION for the agent that needs to match extension & context in fop's button config.
You can have something like
[SIP/itdoesnotmatter]
type=extension
extension=100
context=agent
Agent channels are not trackable "all the way", as they are proxy channels. FOP will try to track them, but you cannot track an outgoing call without knowing the real channel the agent is using.
So, do a "show agents" in the asterisk cli, look at the Location, and configure a button with the same extension and context you see there... if location is 4302@somecontext, you have to set extension 4302 and context "somecontext" in the button.
Best regards,
402 (402 Marcel Brandenburg) available at '1053@agents' (musiconhold is 'default')
403 (403 Tessa Clarke) available at '1062@agents' (musiconhold is 'default')
404 (404 Merri Blakemore) available at '1055@agents' (musiconhold is 'default')
405 (405 Glyn OBrien) available at '1103@agents' (musiconhold is 'default')
406 (406 Russell Garvey) available at '1037@agents' (musiconhold is 'default')
so in our environment when people are dynamically logging in and out all day, we would need to rebuild the fop config file each time somebody logs in to reassign the channel to which ever phone they logged into?
if this is the case, is there any way to issue a 'refresh' to fop2_server, otherwise each time somebody logs in i would have to restart the fop2_server service, and that would cause all clients to disconnect (i assume)
Many thanks
That should be set as:
[dummy/channel]
type=extension
extension=1053
context=agent
You should be able to track inbound calls for that agent with no issues.
Best regards,
With the following configurations below, do not really help. The sip button shows when the phone is ringing and when someone is on that phone, however there is no way to know wwhich agent is on that phone. The label always says the sip extension no matter what. Additionally even though the agent is logged in, and the agents name is listed under the queue they are logged into, the agents icon never changes, it always shows ready, it never changes to busy, even though the phone she logged into is busy.
Agent login dialplan:
extensions.conf
exten => 400,1,Answer()
exten => 400,n,wait(0.5)
exten => 400,n,read(agent,agent-user)
exten => 400,n,Authenticate(/agentpw-${agent},d,)
exten => 400,n,read(ext,agent-newlocation)
exten => 400,n,GotoIf($["${ext}" = ""]?logout)
exten => 400,n,GotoIf(${DB_EXISTS(Agent_Ext/${agent})}?move)
exten => 400,n,Set(DB(Agent_Ext/${agent})=${ext})
exten => 400,n,AddQueueMember(800,local/${agent}@agent,,,,SIP/${ext})
exten => 400,n,playback(agent-loginok)
exten => 400,n,playback(vm-goodbye)
exten => 400,n,Hangup
exten => 400,n(move),set($junk=${DB_DELETE(Agent_Ext/${agent})})
exten => 400,n,RemoveQueueMember(800,local/${agent}@agent)
exten => 400,n,Set(DB(Agent_Ext/${agent})=${ext})
exten => 400,n,AddQueueMember(800,local/${agent}@agent,,,,SIP/${ext})
exten => 400,n,playback(agent-loginok)
exten => 400,n,playback(vm-goodbye)
exten => 400,n,Hangup
exten => 400,n(logout),set($junk=${DB_DELETE(Agent_Ext/${agent})})
exten => 400,n,RemoveQueueMember(800,local/${agent}@agent)
exten => 400,n,playback(agent-loggedoff)
exten => 400,n,playback(vm-goodbye)
exten => 400,n,hangup
queues.conf
[general]
persistentmembers = yes
autofill = yes
monitor-type = MixMonitor
eventwhencalled = yes
[800]
fullname = CSR Agent Queue
strategy = rrmemory
timeout = 8
timeoutreset = yes
wrapuptime = 20
autofill = yes
autopause = no
maxlen =
joinempty = yes
leavewhenempty = no
reportholdtime = no
musicclass = csr
fop2 buttons.cfg
[SIP/100]
type=extension
extension=100
context=default
label=100
[QUEUE/800]
type=queue
label=CSR
extension=800
context=default
[QUEUE/805]
type=queue
label=Luxe
extension=805
context=default
fop-0.3 buttons.cfg
[SIP/101]
Position=2
Label="CSR 101"
Extension=101
Context=default
[SIP/107]
Position=n
Label="CSR 107"
Extension=107
Context=default
[SIP/110]
Position=n
Label="CSR 110"
Extension=110
Context=default
[SIP/111]
Position=n
Label="CSR 111"
Extension=111
Context=default
;[SIP/112]
;Position=n
;Label="CSR 112"
;Extension=112
;Context=default
[SIP/113]
Position=n
Label="CSR 113"
Extension=113
Context=default
[SIP/114]
Position=n
Label="Custom 114"
Extension=114
Context=default
[SIP/115]
Position=n
Label="CSR 115"
Extension=115
Context=default
[SIP/116]
Position=n
Label="CSR 116"
Extension=116
Context=default
[SIP/118]
Position=n
Label="CSR 118"
Extension=118
Context=default
[SIP/121]
Position=n
Label="CSR 121"
Extension=121
Context=default
[SIP/127]
Position=n
Label="CSR 127"
Extension=127
Context=default
[SIP/131]
Position=n
Label="Custom 131"
Extension=131
Context=default
[SIP/138]
Position=n
Label="CSR 138"
Extension=138
Context=default
[SIP/142]
Position=n
Label="CSR 142"
Extension=142
Context=default
[SIP/149]
Position=n
Label="CSR 149"
Extension=149
Context=default
[SIP/150]
Position=n
Label="CSR 150"
Extension=150
Context=default
[SIP/152]
Position=n
Label="CSR152"
Extension=152
Context=default
[SIP/123]
Position=n
Lablel="Custom 123"
Extension=123
Context=default
;
; CSR LuxeBidder lines
;
[SIP/2110]
Position=22
Label="CSR 2110"
Extension=2110
Context=default
[SIP/2112]
Position=n
Label="CSR 2112"
Extension=2112
Context=default
[SIP/2113]
Position=n
Label="CSR 2113"
Extension=2113
Context=default
[SIP/2118]
Position=n
Label="CSR 2118"
Extension=2118
Context=default
[SIP/2127]
Position=n
Label="CSR 2127"
Extension=2127
Context=default
[SIP/2138]
Position=n
Label="CSR 2138"
Extension=2138
Context=default
[SIP/2149]
Position=n
Label="CSR 2149"
Extension=2149
Context=default
[QUEUE/800]
Position=32-49
Label="CSR Queue"
Extension=800
[QUEUE/800]
Position=50
Label="CSR Q Summary"
Extension=800
[QUEUE/806]
Position=30
Label="Custom Q Summary"
Extension=806
[QUEUE/805]
Position=52-69
Label="Luxe Queue"
Extension=805
[QUEUE/805]
Position=70
Label="Luxe Q Summary"
Extension=805
; 3rd box
[rectangle]
x=708
y=35
width=298
height=550
line_width=3
;line_color=ffff10
;fade_color1=ffff10
;fade_color2=ffff3F
line_color=10ff10
fade_color1=10ff10
fade_color2=10ff10
rnd_border=2
alpha=10
layer=top ; top = above buttons
; bottom = below buttons
; 2nd column top row
;[rectangle]
;x=498
;y=35
;width=252
;height=515
;line_width=3
;line_color=ff1010
;fade_color1=ff1010
;fade_color2=a01000
;line_color=10ff10
;fade_color1=10ff10
;fade_color2=10ff10
;rnd_border=2
;alpha=10
;layer=top
;panel_context=* ; The item will be persistant across contexts
; 2nd column bottom row
;[rectangle]
;x=498
;y=255
;width=252
;height=295
;line_width=3
;line_color=10ff10
;fade_color1=10ff10
;fade_color2=10ff00
;rnd_border=2
;alpha=20
;layer=top
; 1st column
[rectangle]
x=-1
y=35
width=426
height=550
line_width=3
line_color=1010ff
fade_color1=1010ff
fade_color2=1010ff
rnd_border=2
alpha=10
layer=top
; luxe queue
;
[rectangle]
x=424
y=35
width=283
height=550
line_width=3
line_color=ff3300
fade_color1=ff3300
fade_color2=ff3300
rnd_border=2
alpha=10
layer=top
; you can include configuration files
;
;include => more_rectangles.cfg
;[LEGEND]
;x=800
;y=50
;text=Zap Lines
;font_size=32
;font_color=000000
;font_family=Times New Roman ; only used when use_embed_fonts=0
;use_embed_fonts=1 ; if set to 1 it will use an embeded Arial type font
; that looks consistently between platforms/os
[LEGEND]
x=430
y=50
text=DNL Queue
font_size=20
font_color=000000
font_family=Arial
use_embed_fonts=1
[LEGEND]
x=720
y=50
text=Luxe Queue
font_size=20
font_color=000000
font_family=Arial
use_embed_fonts=1
;[LEGEND]
;x=555
;y=270
;text=Queues
;font_size=32
;font_color=000000
;font_family=Arial
;use_embed_fonts=1
[LEGEND]
;x=160
x=10
y=50
text=CSR Agents
font_color=000000
font_size=20
font_family=Arial
use_embed_fonts=1
[LEGEND]
x=290
y=50
text=Luxe Agents
font_color=000000
font_size=20
font_family=Arial
use_embed_fonts=1
[LEGEND]
x=290
y=485
text=Custom Q
font_color=000000
font_size=20
font_family=Arial
use_embed_fonts=1
;[LEGEND]
;x=75
;y=75
;text=Local
;font_size=24
;font_family=Arial
;font_color=000000
;use_embed_fonts=1
;[LEGEND]
;x=315
;y=75
;text=Remote
;font_color=000000
;font_size=24
;font_family=Arial
;use_embed_fonts=1
*** AGENT LOGGED ON ***
localhost*CLI> queue show 800
800 has 0 calls (max unlimited) in 'rrmemory' strategy (1s holdtime, 0s talktime), W:0, C:1, A:0, SL:0.0% within 0s
Members:
local/1149@agent (dynamic) (Not in use) has taken no calls yet
No Callers
localhost*CLI> database show
/Agent_Ext/1149 : 100
/Queue/PersistentMembers/800 : local/1149@agent;0;0;local/1149@agent;SIP/100
We tried to make the documentation as clear as possible. It is also nice to have clear and precise questions so we can reply accordingly.
FOP2 will work correctly for any type of queue member type and login method, either if you use 1.4 deprecated agentcallbacklogin (where it will behave similar to fop1, changing the button label to the agent name, but not the led color).
If you are using 1.6 now there is no more agentcallbacklogin, but you have the option to add queue members dynamically and use the membername parameter. If there is a local queue member logged into any queue, using the membername option, and you have a button in fop2 that matches the extension@context of that local queue member, the button will change the label to the membername when added, and back to the regular button label when removed.
There is nothing to do on your part, there are no special settings. If the dialplan in asterisk uses those functions and parameters I mention, and your fop2 buttons are configured correctly, it will just work. The dialplan you pasted is not using the queue member name, so not sure where do you expect fop2 to find out about it. You can do something like:
Replace the agent name with whatever you like, perhaps that agent number, or maybe you have some DB entries mapping the agent number to their real name... etc. The member name is also important for queue_log statistics, is what we have now that agentcallbacklogin was deprecated.
best regards,
Unfortunately either I didn't do a good job at relaying my "real" need, or I'm too stupid to understand this concept... Sorry..
So what do you mean by "matches extension@context of that local queue member"? My understanding of this would be to have a button that says 1149@agents. Then when the user that logs into queue 800 as agent 1149 (which would login with device local/1149@agents). That button would show [1149@agents] when the user is not logged in and [agent fancy name] when the agent is logged in.
Which is not really what I'm going for.
I want to have a button that monitors SIP/100. So the hardware phone that registers as 100 would be the location the button is monitoring. So the button would show [SIP/100] (or whatever the label is for that button) when there is no one logged into the queue, but when an agent sits down at that phone and logs into the queue using the agent device local/1149@agents, the button would change from SIP/100 to the fancy name of the agent that logged into the queue.
Thank you for your time! :-)
Cheers!
Greg
[SIP/100]
type=extension
label=Ext 100
extension=100
context=default
Change the label from "Ext 100" to "Rachel" when I do this in the dialplan:
exten => 400,n,AddQueueMember(800,local/1149@agent,,,Rachel,SIP/100)
Does that help?
Thanks! Awesome App! The boss is really liking it and can't wait for me to get this last item finished!
Greg
{
For example, if you add a member like:
Local/1234@agents/n
The button file has to have a button with extension=1234 and context=agents. That way fop2 will be able to rename the button to the memberinterface name set on your dialplan (if you use the member interface parameter).
}
However, I tried this as well. The ending result is a static button that shows the agent name all of the time rather than only while the agent is logged in.
Some additional points that come to mind, not sure if they will help here or not, but:
1. my dynamic members are not in the asterisk configuration anywhere.
2. members will sign into their queues from different sip phones from time to time.
3. various members will sign into the same sip phone each day as the shifts change. i.e. many members share a workstation from shift to shift.
Sorry for all of the posts, but I really want to make this work, and I'm just trying to share anything I can to help. I already told the boss it would work, since it did on asterisk 1.4 and fop1 .30. now my reputation is on the line... :-(
Thanks!
Greg
If you want to change SIP/100 button label, the Addqueuemember line in your dialplan should be:
The extension@context after a Local type channel MUST MATCH the extension and context of the button configuration. And I am also fixing the case and suffix of the local type channel , as you might face issues with the queue_log file if you do not use /n.
Suppose that you do not use the "default" context for your Queue context in the dialplan, but you use the "agent" context as per the previous example, but you do use the "default" context to reach the regular device/extension. In that case, add the "queuecontext=agent" entry in the button configuration file.
You said you had turns, someone logs in sip/100 in the morning and another agent in the afternoon. In that case, work it out in your dialplan, so the fancy name "Rachel" or whatever is taken from some variable or astdb entry when the agent authenticates itself, etc.. You should manage that via the dialplan. FOP2 will just pick the name up.
I have dumped a tarball of screen shots to here:
http://www.gmellc.com/fop-screenshots.tgz
I setup a button like you stated above. This button works similar to what I'm looking for, but in reverse. I don't want to create a member button for each phone, I would like to create just the phone buttons and have the phone button show me which member is at that phone. Just like fop1 used to do.
Here's a fop1 button for the CSR phone extention 107. When agent/queue member 1149 logs into the queue from the csr phone 107, the label of this button changes from CSR 107 to Rachel.
[SIP/107]
Position=n
Label="CSR 107"
Extension=107
Context=default
I guess long story short, can you send me an example that would allow me to visually display which queue members are at which phones, knowing that my phones are SIP/100 - SIP/199 and members are local/1100 - local/1149?
Lastly as you can see in fop2-3, even though the member rachel is logged out of the queue as seen in fop2-4, the member still shows as being logged in. This behaviour started when I installed 2.20.
Thanks for all your help!
Greg
It seems you are asking me to configure your asterisk to replace agentcallbacklogin? I can only help you configuring fop2, and suggest asterisk configs, but not configure your whole dialplan. FOP2 works very well with agentcallbacklogin too. It is not a behavior from FOP that you want in FOP2, but forwardport the asteriskcallbacklogin application that was deprecated since asterisk 1.6.
I do not understand your Local/XXXX and SIP/YYY relation. That is something that you choose to do in your dialplan logic. But it does not make any sense just by reading your post. How do you relate a device with an extension? I have no idea, you never mentioned how either. And it does not matter. Your dialplan is yours, but do not expect tools to match your criteria or ideas on how things should work.
If you want the agentcallbacklogin behaviour, then use agentcallbacklogin in asterisk 1.4, or switch to agentlogin that works in a similar fashion also in 1.6 and 1.8. FOP and FOP2 track devices/channel names. They do not track other things. You must define a button to track a real asterisk device/channel, with just one exception: user&device mode for freepbx.
You can try to mimic freepbx user and device mode, where you setup buttons like:
[USER/1120]
and then you create astdb entries mapping users and devices, in the way that FreePBX does, that is quite complicated and that I do not even remember exactly how it is done, there is a userloginlogout.agi , AMPUSER astdb entries to play with, etc. I think that your idea of how things should work is more like this freepbx mode. With this mode you track "extensions/users" and not "devices". To dial an extension you always dial the extension number, but it might rang a different device depending on where the user is logged in. As this behaviour is not something you can do with asterisk applications (like agentcallbacklogin or agentlogin) and it is just a total invention using dialplan, agi, astdb, etc, it is IMPOSSIBLE for any application to accommodate everyone's needs/dialplans/ideas/idiosyncrasy. Freepbx User & Device mode is one way to do it, and fop2 only supports that way. But in that mode you will only see user/extension buttons not directly related to a device.
The label renaming in fop2 works by matching the extension and context for a Local queue member, or by agentlogin events. It renames ONLY on queue membership.
I am not going to review all your screenshots, dialplan or ideas as I do not have the time and fop2 will probably not match or will work the way you want. I already mentioned the way fop2 works, and it makes absolute sense. I think you have to try to replicate the userevents and astdb entries for freepbx user&device mode to have something similar, where you see buttons for PEOPLE/EXTENSIONS, and they are not related to a particular device as the relation is done at the time they login into the system.
best regards,