Member
Last active 9 years ago
Hi!
Is there a way to rebuild the buttons from shell? I have a external script that updates priorities in FreePBX/Asterisk based on our employee schedule.
The problem is Fop2 doesn't pick up the changes until I login to fop2/admin and hit rebuild buttons. It worked before the update since I just called the FreePBX rebuild config script and that updated everything. With Fop2 being 100% external now that doesn't seem to work anymore.
I thought of calling the rebuild buttons URL, however, before I do all the scripting required to get logged in to call the URL I figured I'd ask.
Dave
Hi
Almost forgot. You also have to set the following to true in FreePBX advanced settings.
Asterisk Queues Patch 15168 Installed
Athought I'm not sure if that is required if FreePBX detects a version of Asterisk which should have the patch included. This may just be for people who have custom built asterisk with the patch.
Dave
Hi,
This seems to be the proper way to monitor a queue member attached to multiple devices.
https://issues.asterisk.org/jira/browse/ASTERISK-14178
I change the QueueChannel to the following
Local/8008@from-queue/n|Penalty=0|MemberName=Dave C|HINT:8008@ext-local
and it appears to work as intended. My agent is still valid and I can answer calls.
I have done VERY limited testing. I have to setup a few extensions and test queues and I haven't had very much free time lately. If I can manage to test it more thoroughly I'll report back.
Dave
Ah! I now see the & in the field list. That explains everything!
As for the StateInterface the only things that are usable in FreePBX are devices that I'm aware of. I changed line 189 since in my setup it works to match the device to the user by default. If a user logs into a different device you'll have to grab the stateinterface for that user when you see the login event in AMI. Does the fop2_server do that currently? If so I can revert my change and take yours which will set the stateinterface to nothing and let the fop2_server assign the stateinterface at runtime.
Hi,
I'm using the latest version of everything
Fop 2.27 / FopAdmin 1.0 / FreePBX 2.11.0.38
Using the latest versions I'm having a problem with creation of the Queue Channel field. In FopAdmin/functions-freepbx.php the following code is setting the stateInterface to be USER/extension.
188 if ($conf['EXTENSIONS'] == "deviceanduser") {
189 $fields="extension,concat('USER/',extension) AS dial, if(voicemail='novm','',concat(extension,'@',voicemail)) AS mailbox,name,IF(voicemail<>'novm',concat('$vmprefix',extension),'') AS extenvoicemail";
That causes the queue members to be invalid since it doesn't actually exist as a state interface. Changing "concat('USER/',extension) AS dial" to just "dial" fixes the problem.
I am using deviceanduser mode. If USER/ should be a stateinterface on FreePBX I may have to look into that instead. This system has been upgraded through many versions of FreePBX and may have missed something during one.
There's also a problem where it's duplicating the queue fields but I haven't tracked that one down yet. An example entry in the database(After I corrected the USER/) is below. Most fields are just duplicated but Penalty is 0 and 60. It should just be 60.
Local/8052@from-queue/n|Penalty=0|MemberName=????|StateInterface=SIP/8052&Local/8052@from-queue/n|Penalty=60|MemberName=????|StateInterface=SIP/8052|Queue=8900
Dave
Hello,
Would it be possible to add an option to sort the queues by agent penalty? Also if this sort option is enabled allow for drag and drop reordering, or some simple way for an agent or admin to set priority via the flash panel in the queue?
Thanks,
Dave
The AMPVERSION string is being detected correctly now.
The problem is the flash panel is still adding the agents with the wrong context.
Here's the debug output showing incorrect context used.
Response: Success
Message: Added interface to queue
Server: 0
127.0.0.1 <- Event: QueueMemberAdded
127.0.0.1 <- Privilege: agent,all
127.0.0.1 <- Queue: 8900
127.0.0.1 <- Location: Local/8090@from-internal/n
127.0.0.1 <- MemberName: Daves Sandbox
127.0.0.1 <- Membership: dynamic
127.0.0.1 <- Penalty: 0
127.0.0.1 <- CallsTaken: 0
127.0.0.1 <- LastCall: 0
127.0.0.1 <- Status: 5
127.0.0.1 <- Paused: 0
127.0.0.1 <- Server: 0
The code generated by patched autoconfig-buttons-freepbx.sh for above button
[USER/8090]
type=extension
extension=8090
label=Daves Sandbox
context=from-internal
queuecontext=from-queue
extenvoicemail=*
privacy=none
group=Support
queuechannel=Local/8090@from-internal/n|Penalty=0|MemberName=Daves Sandbox|StateInterface=SIP/8090
customastdb=CF/8090
It looks like the queuechannel line is being set incorrectly. I dug a little deeper and found that in the fop2buttons table. Since that is generated by the FreePBX plugin I took a look at that code and sure enough, found the same bug.
$ver = getversion();
$ver = str_replace(".","",substr($ver,0,3));
$ver is populated with the value 21 for FreePBX 2.10. The above bug is 3 places that I found in the plugin. I changed the substr function from 0,3 to 0,4 and its fixed. Having my users test functionality now.
diff -u /root/fop2admin/functions.inc.php ./functions.inc.php --- /root/fop2admin/functions.inc.php 2012-06-05 17:20:39.000000000 -0400 +++ ./functions.inc.php 2012-07-25 10:19:03.000000000 -0400 @@ -6,7 +6,7 @@ $queuechannelString = fop2_set_queuemember_strings(); $ver = getversion(); - $ver = str_replace(".","",substr($ver,0,3)); + $ver = str_replace(".","",substr($ver,0,4)); if($ver>25) { $qctx="from-queue"; @@ -1276,7 +1276,7 @@ global $db, $astman; $ver = getversion(); - $ver = str_replace(".","",substr($ver,0,3)); + $ver = str_replace(".","",substr($ver,0,4)); if($ver>25) { $qctx="from-queue"; Common subdirectories: /root/fop2admin/i18n and ./i18n diff -u /root/fop2admin/install.php ./install.php --- /root/fop2admin/install.php 2011-10-24 13:17:28.000000000 -0400 +++ ./install.php 2012-07-25 10:18:45.000000000 -0400 @@ -114,7 +114,7 @@ $queuechannelString = fop2_set_queuemember_strings(); $ver = getversion(); -$ver = str_replace(".","",substr($ver,0,3)); +$ver = str_replace(".","",substr($ver,0,4)); if($ver>25) { $qctx="from-queue";
Thanks! That fixed the version string return.
I think there may be some other incompatibility with 2.10 going on though.
Agents that add themselves to a queue via FreePBX's various methods are being added as
Name (Local/extension@from-queue/n)
and cannot control their queue status via fop2.
Agents that add themselves to a queue via fop2 function correctly and are added as
Name (Local/extension@from-internal/n)
Running the button script returns the following contexts for the phones
context=from-internal
queuecontext=from-queue
Seems like something may be mixed up other than in the button script.
This seemed like the best place to report a bug.
I'm using the latest fop 2.26 and there's an issue when generating the buttons
The following code in autoconfig-buttons-freepbx.sh detects FreePBX version 2.10 incorrectly.
AMPVERSION=`cat $AMPDIR | grep "<version>" | sed -e 's/<[^>]*>//g' | cut -b 2,4`
if [ $AMPVERSION -gt 25 ]; then
QUEUECONTEXT="from-queue"
else
QUEUECONTEXT="from-internal"
fi
Its looking for AMPVERSION greater than 25 for versions above 2.5. With FreePBX version 2.10 the string thats returned in AMPVERSION is 21 making it set the wrong queue context. This causes a few features to break.
This is the only place I see this getting detected incorrectly. Not sure if anything in the fop2_server binary would be effected but it seems to be breaking my users ability to add/remove themselves from queues and pause/unpause.
Hello,
Would it be possible to make the icons in the queues/extensions more consistent? For instance if someone uses the panel to set them selves DND/Break/Etc could the icon in the queue change to DND as well?
Thanks,
Dave