Paging groutps don't hang up

Is this still a problem in FreePBX 2.11. If so someone should open a bug report and provide logs showing this happening as we can not replicate it here.

Another suggestion, click on the friendly professional support link. They don’t bite and are a great resource.

For a few hours of support you can get all your problems resolved.

I haven’t seen this problem in about 3 years.

For us it’s sporadic. I’m patched to FreePBX Distro 5.211.65-6.

Here’s my setup:
PBX In A Flash 2.0.6.5
FreePBX 2.11.0.24
Asterisk 1.8.25.0
OS: CentOS release 6.5 (Final)
Kernel: 2.6.32-431.1.2.0.1.el6.i686 - 32 Bit

I have the PBX in a VM running under Hyper-V in Windows Server 2012. We use POTS lines here, using the GrandStream GXW4104 to connect them via SIP Trunks to the VM. We use all Polycom 550 and 335 phones running the latest firmware downloaded using the OSS Endpoint Manager.

Initially upon installation (Which was like a week and a half ago), the Polycom phones wouldn’t page at all. So, I did the following:

  1. Go to phpMyAdmin and navigate to the Asterisk database
  2. Find the Paging_Autoanswer table
  3. Change the Polycom entry to “Alert-Info: Ring Answer”
  4. Edit the following file: /etc/asterisk/extensions_additional.conf
  5. Find the only instance of “Polycom” and change the Alert Info to “Alert-Info: Ring Answer”
  6. Reboot

Now the phones would page but wouldn’t hang up. I downgraded the Paging module and quickly found out that does nothing. So, I did the following to fix it:

  1. In FreePBX Administration, go to the Settings->Advanced Settings menu entry
  2. Find the section called “Dialplan and Operational”. Underneath that is an option called “Conference Room App”.
  3. Change the “Conference Room App” from “app_confbridge” to “app_meetme”.

Problem solved! I hope that helps someone. I’ve run into several PBXs with this issue and worked this out to resolve the problems on them all. I’m about to try the same thing on a FreePBX 2.10 system that is showing signs of the same issues.

CentOS 6.5 final
Kernel 2.6.32-431.1.2.0.1.el6.i686 (SMP) i686
Asterisk 1.8.25.0
FreePBX 2.11.0.24
Aastra 6757i and 6731i phones

Replaced an existing asterisk 1.4 installation and ran into this paging problem.

Currently using app_meetme for conferencing.
Phones recieve the page fine, but don’t hangup. Pressing the hangup key allows the phone to resume normal operation.

What logs would help troubleshoot this problem?

Make sure you are on the latest Asterisk 11 also not 10 or 1.8.

FreePBX 2.11.0.30
Asterisk 11.8.1

I posted a while back… still having sporadic no hang ups after paging with Cisco SPA525G2 sip phones. Tried an Astra also and guess what? Yup your right.
Did the dev for this module just give up? Is there new tech coming soon? Any hope?

Here is the logging from the CLI… verbose 3

Connected to Asterisk 11.8.1 currently running on pi-pbx (pid = 2664)
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
– Executing [5745384687@from-trunk:1] Set(“SIP/5745384687-00000016”, “__FROM_DID=5745384687”) in new stack
– Executing [5745384687@from-trunk:2] Gosub(“SIP/5745384687-00000016”, “app-blacklist-check,s,1()”) in new stack
– Executing [s@app-blacklist-check:1] GotoIf(“SIP/5745384687-00000016”, “0?blacklisted”) in new stack
– Executing [s@app-blacklist-check:2] Set(“SIP/5745384687-00000016”, “CALLED_BLACKLIST=1”) in new stack
– Executing [s@app-blacklist-check:3] Return(“SIP/5745384687-00000016”, “”) in new stack
– Executing [5745384687@from-trunk:3] Set(“SIP/5745384687-00000016”, “CDR(did)=5745384687”) in new stack
– Executing [5745384687@from-trunk:4] ExecIf(“SIP/5745384687-00000016”, “0 ?Set(CALLERID(name)=15745276447)”) in new stack
– Executing [5745384687@from-trunk:5] Set(“SIP/5745384687-00000016”, “CHANNEL(musicclass)=default”) in new stack
– Executing [5745384687@from-trunk:6] Set(“SIP/5745384687-00000016”, “__MOHCLASS=default”) in new stack
– Executing [5745384687@from-trunk:7] Set(“SIP/5745384687-00000016”, “__CALLINGPRES_SV=allowed_not_screened”) in new stack
– Executing [5745384687@from-trunk:8] Set(“SIP/5745384687-00000016”, “CALLERPRES()=allowed_not_screened”) in new stack
– Executing [5745384687@from-trunk:9] Goto(“SIP/5745384687-00000016”, “ivr-1,s,1”) in new stack
– Goto (ivr-1,s,1)
– Executing [s@ivr-1:1] Set(“SIP/5745384687-00000016”, “TIMEOUT_LOOPCOUNT=0”) in new stack
– Executing [s@ivr-1:2] Set(“SIP/5745384687-00000016”, “INVALID_LOOPCOUNT=0”) in new stack
– Executing [s@ivr-1:3] Set(“SIP/5745384687-00000016”, “_IVR_CONTEXT_ivr-1=”) in new stack
– Executing [s@ivr-1:4] Set(“SIP/5745384687-00000016”, “_IVR_CONTEXT=ivr-1”) in new stack
– Executing [s@ivr-1:5] Set(“SIP/5745384687-00000016”, “__IVR_RETVM=”) in new stack
– Executing [s@ivr-1:6] GotoIf(“SIP/5745384687-00000016”, “0?skip”) in new stack
– Executing [s@ivr-1:7] Answer(“SIP/5745384687-00000016”, “”) in new stack
– Executing [s@ivr-1:8] Wait(“SIP/5745384687-00000016”, “1”) in new stack
– Executing [s@ivr-1:9] Set(“SIP/5745384687-00000016”, “IVR_MSG=custom/Main-Greeting-Mike”) in new stack
– Executing [s@ivr-1:10] Set(“SIP/5745384687-00000016”, “TIMEOUT(digit)=3”) in new stack
– Digit timeout set to 3.000
– Executing [s@ivr-1:11] ExecIf(“SIP/5745384687-00000016”, “1?Background(custom/Main-Greeting-Mike)”) in new stack
[2014-03-27 18:54:56] WARNING[3793][C-0000002c]: mp3/interface.c:216 decodeMP3: Junk at the beginning of frame 49443303
– <SIP/5745384687-00000016> Playing ‘custom/Main-Greeting-Mike.slin’ (language ‘en’)
– Executing [7@ivr-1:1] Goto(“SIP/5745384687-00000016”, “app-pagegroups,1234,1”) in new stack
– Goto (app-pagegroups,1234,1)
– Executing [1234@app-pagegroups:1] Macro(“SIP/5745384687-00000016”, “user-callerid,”) in new stack
– Executing [s@macro-user-callerid:1] Set(“SIP/5745384687-00000016”, “TOUCH_MONITOR=1395960895.88”) in new stack
– Executing [s@macro-user-callerid:2] Set(“SIP/5745384687-00000016”, “AMPUSER=15745276447”) in new stack
– Executing [s@macro-user-callerid:3] GotoIf(“SIP/5745384687-00000016”, “0?report”) in new stack
– Executing [s@macro-user-callerid:4] ExecIf(“SIP/5745384687-00000016”, “1?Set(REALCALLERIDNUM=15745276447)”) in new stack
– Executing [s@macro-user-callerid:5] Set(“SIP/5745384687-00000016”, “AMPUSER=”) in new stack
– Executing [s@macro-user-callerid:6] GotoIf(“SIP/5745384687-00000016”, “0?limit”) in new stack
– Executing [s@macro-user-callerid:7] Set(“SIP/5745384687-00000016”, “AMPUSERCIDNAME=”) in new stack
– Executing [s@macro-user-callerid:8] GotoIf(“SIP/5745384687-00000016”, “1?report”) in new stack
– Goto (macro-user-callerid,s,15)
– Executing [s@macro-user-callerid:15] GotoIf(“SIP/5745384687-00000016”, “0?continue”) in new stack
– Executing [s@macro-user-callerid:16] Set(“SIP/5745384687-00000016”, “__TTL=64”) in new stack
– Executing [s@macro-user-callerid:17] GotoIf(“SIP/5745384687-00000016”, “1?continue”) in new stack
– Goto (macro-user-callerid,s,28)
– Executing [s@macro-user-callerid:28] Set(“SIP/5745384687-00000016”, “CALLERID(number)=15745276447”) in new stack
– Executing [s@macro-user-callerid:29] Set(“SIP/5745384687-00000016”, “CALLERID(name)=BOB BROWN”) in new stack
– Executing [s@macro-user-callerid:30] Set(“SIP/5745384687-00000016”, “CDR(cnum)=15745276447”) in new stack
– Executing [s@macro-user-callerid:31] Set(“SIP/5745384687-00000016”, “CDR(cnam)=BOB BROWN”) in new stack
– Executing [s@macro-user-callerid:32] Set(“SIP/5745384687-00000016”, “CHANNEL(language)=en”) in new stack
– Executing [1234@app-pagegroups:2] Set(“SIP/5745384687-00000016”, “_PAGEGROUP=1234”) in new stack
– Executing [1234@app-pagegroups:3] GotoIf(“SIP/5745384687-00000016”, “1?:busy”) in new stack
– Executing [1234@app-pagegroups:4] Set(“SIP/5745384687-00000016”, “DEVICE_STATE(Custom:PAGE1234)=INUSE”) in new stack
– Executing [1234@app-pagegroups:5] Answer(“SIP/5745384687-00000016”, “”) in new stack
– Executing [1234@app-pagegroups:6] Gosub(“SIP/5745384687-00000016”, “app-paging,ssetup,1()”) in new stack
– Executing [ssetup@app-paging:1] Set(“SIP/5745384687-00000016”, “_SIPURI=”) in new stack
– Executing [ssetup@app-paging:2] Set(“SIP/5745384687-00000016”, “_ALERTINFO=Alert-Info: Ring Answer”) in new stack
– Executing [ssetup@app-paging:3] Set(“SIP/5745384687-00000016”, “_CALLINFO=Call-Info: ;answer-after=0”) in new stack
– Executing [ssetup@app-paging:4] Set(“SIP/5745384687-00000016”, “_SIPURI=intercom=true”) in new stack
– Executing [ssetup@app-paging:5] Set(“SIP/5745384687-00000016”, “_DOPTIONS=A(beep)”) in new stack
– Executing [ssetup@app-paging:6] Set(“SIP/5745384687-00000016”, “_DTIME=5”) in new stack
– Executing [ssetup@app-paging:7] Set(“SIP/5745384687-00000016”, “_ANSWERMACRO=”) in new stack
– Executing [ssetup@app-paging:8] Set(“SIP/5745384687-00000016”, “PAGE_CONF=1395960902673”) in new stack
– Executing [ssetup@app-paging:9] Return(“SIP/5745384687-00000016”, “”) in new stack
– Executing [1234@app-pagegroups:7] Set(“SIP/5745384687-00000016”, “PAGEMODE=PAGE”) in new stack
– Executing [1234@app-pagegroups:8] Set(“SIP/5745384687-00000016”, “PAGE_MEMBERS=5000”) in new stack
– Executing [1234@app-pagegroups:9] Set(“SIP/5745384687-00000016”, “PAGE_CONF_OPTS=”) in new stack
– Executing [1234@app-pagegroups:10] AGI(“SIP/5745384687-00000016”, “page.agi”) in new stack
– Launched AGI Script /var/lib/asterisk/agi-bin/page.agi
– Executing [s@app-page-stream:1] Wait(“Local/s@app-page-stream-00000021;2”, “1”) in new stack
– Executing [PAGE5000@app-paging:1] Macro(“Local/PAGE5000@app-paging-00000022;2”, “autoanswer,5000”) in new stack
– Executing [s@app-page-stream:1] Wait(“Local/s@app-page-stream-00000023;2”, “1”) in new stack
– Executing [s@macro-autoanswer:1] Set(“Local/PAGE5000@app-paging-00000022;2”, “DIAL=SIP/5000”) in new stack
– Executing [s@macro-autoanswer:2] ExecIf(“Local/PAGE5000@app-paging-00000022;2”, “0?Set(DIAL=DAHDI/5000)”) in new stack
– Executing [s@macro-autoanswer:3] GotoIf(“Local/PAGE5000@app-paging-00000022;2”, “0?macro”) in new stack
– Executing [s@macro-autoanswer:4] Set(“Local/PAGE5000@app-paging-00000022;2”, “phone=Cisco/SPA525G2-7.5.5”) in new stack
– Executing [s@macro-autoanswer:5] ExecIf(“Local/PAGE5000@app-paging-00000022;2”, “0?Set(CALLINFO=Call-Info: sip:broadworks.net;answer-after=0)”) in new stack
– Executing [s@macro-autoanswer:6] ExecIf(“Local/PAGE5000@app-paging-00000022;2”, “0?Set(ALERTINFO=Alert-Info: Intercom)”) in new stack
– Executing [s@macro-autoanswer:7] ExecIf(“Local/PAGE5000@app-paging-00000022;2”, “0?Set(ALERTINFO=Alert-Info: Intercom)”) in new stack
– Executing [s@macro-autoanswer:8] ExecIf(“Local/PAGE5000@app-paging-00000022;2”, “0?Set(ALERTINFO=Alert-Info: info=Auto Answer)”) in new stack
– Executing [s@macro-autoanswer:9] ExecIf(“Local/PAGE5000@app-paging-00000022;2”, “0?Set(ALERTINFO=Alert-Info: ring-answer)”) in new stack
– Executing [s@macro-autoanswer:10] ExecIf(“Local/PAGE5000@app-paging-00000022;2”, “1?SipAddHeader(Alert-Info: Ring Answer)”) in new stack
– Executing [s@macro-autoanswer:11] ExecIf(“Local/PAGE5000@app-paging-00000022;2”, “1?SipAddHeader(Call-Info: ;answer-after=0)”) in new stack
– Executing [s@macro-autoanswer:12] ExecIf(“Local/PAGE5000@app-paging-00000022;2”, “1?Set(__SIP_URI_OPTIONS=intercom=true)”) in new stack
– Executing [PAGE5000@app-paging:2] Dial(“Local/PAGE5000@app-paging-00000022;2”, “SIP/5000,5,A(beep)”) in new stack
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
– Called SIP/5000
– <SIP/5745384687-00000016>AGI Script page.agi completed, returning 0
– SIP/5000-00000017 answered Local/PAGE5000@app-paging-00000022;2
– <SIP/5000-00000017> Playing ‘beep.ulaw’ (language ‘en’)
– Executing [1234@app-pagegroups:11] Set(“SIP/5745384687-00000016”, “CONFBRIDGE(user,template)=page_user_duplex”) in new stack
– Executing [1234@app-pagegroups:12] Set(“SIP/5745384687-00000016”, “CONFBRIDGE(user,admin)=yes”) in new stack
– Executing [1234@app-pagegroups:13] Set(“SIP/5745384687-00000016”, “CONFBRIDGE(user,marked)=yes”) in new stack
– Executing [1234@app-pagegroups:14] ConfBridge(“SIP/5745384687-00000016”, “1395960902673,admin_menu”) in new stack
== Spawn extension (app-paging, PAGE5000, 2) exited non-zero on ‘Local/PAGE5000@app-paging-00000022;2’
– Executing [s@app-page-stream:2] Answer(“Local/s@app-page-stream-00000021;2”, “”) in new stack
– Executing [s@app-page-stream:2] Answer(“Local/s@app-page-stream-00000023;2”, “”) in new stack
– Executing [s@app-page-stream:3] Set(“Local/s@app-page-stream-00000023;2”, “CONFBRIDGE(user,template)=page_user_duplex”) in new stack
– Executing [s@app-page-stream:4] Set(“Local/s@app-page-stream-00000023;2”, “CONFBRIDGE(user,marked)=yes”) in new stack
– Executing [s@app-page-stream:5] ConfBridge(“Local/s@app-page-stream-00000023;2”, “1395960902673,”) in new stack
– <Local/s@app-page-stream-00000023;1> Playing ‘beep.slin’ (language ‘en’)
– Executing [s@app-page-stream:3] Set(“Local/s@app-page-stream-00000021;2”, “CONFBRIDGE(user,template)=page_user_duplex”) in new stack
– Executing [s@app-page-stream:4] Set(“Local/s@app-page-stream-00000021;2”, “CONFBRIDGE(user,marked)=yes”) in new stack
– Executing [s@app-page-stream:5] ConfBridge(“Local/s@app-page-stream-00000021;2”, “1395960902673,”) in new stack
– Executing [h@app-pagegroups:1] ExecIf(“SIP/5745384687-00000016”, “1?Set(DEVICE_STATE(Custom:PAGE1234)=NOT_INUSE)”) in new stack

#!/usr/bin/php -q

<?php //include freepbx configuration $restrict_mods = true; if (!@include_once(getenv('FREEPBX_CONF') ? getenv('FREEPBX_CONF') : '/etc/freepbx.conf')) { include_once('/etc/asterisk/freepbx.conf'); } list($agi, $vars) = __agi(); $ast_ge_10 = version_compare($amp_conf['ASTVERSION'], '10', 'ge'); $get = array( 'ALERTINFO' => '', 'AMPUSER' => '', 'CALLINFO' => '', 'DOPTIONS' => '', 'DTIME' => '', 'LEAD_WAIT' => 5, 'PAGEMODE' => '', 'PAGE_CONF' => '', 'PAGE_CONF_OPTS' => '', 'PAGE_MEMBERS' => '', 'SIPURI' => '', 'STREAM' => 'beep', 'VXML_URL' => '' ); foreach ($get as $k => $v) { $tmp = agi_get_var($k); $vars[$k] = $tmp ? $tmp : $v; } //clear stream if requested $vars['STREAM'] = $vars['STREAM'] == 'NONE' ? '' : $vars['STREAM']; // TODO: this deals with the mainstream ones. We could check in the dialplan if //there are any others outside of these and only in that case evoke the //new custom macro that gets generated to otherwise deal with these??? //set channel variables $base_vars['__FORWARD_CONTEXT'] = 'block-cf'; $base_vars['AMPUSER'] = __pad_string($vars['AMPUSER']); $chan_vars = array( 'ALERTINFO', 'CALLINFO', 'DOPTIONS', 'DTIME', 'SIPURI', 'SIPURI', 'VXML_URL' ); foreach ($chan_vars as $var) { if ($vars[$var] != '') { $base_vars[$var] = __pad_string($vars[$var]); } } //dbug('vars', $vars); /* TODO: run through the list here first and check for: * future - check if each specific extension needs modifications to * auto-answer channel variables so the conditional assignments can * be skipped */ $page_members = explode('-', $vars['PAGE_MEMBERS']); $this_chan = explode('-', agi_get_var("CHANNEL(name)"), 2); /* Create a temp leader to address the issue of members being paged * followed by the real leader hanging up, resulting in hung paged phones * becasue the leader never left. Since the conference ends when the LAST * leader hangs up, this leader stays on just long enough to allow the real * leader to get going. * note: we got to app-page-stream since it simply enters the conference * as a marked user */ $lead = array( 'Channel' => 'Local/s@app-page-stream', 'CallerID' => 'Page Startup', 'Async' => 'true', 'Variable' => array( 'PAGE_CONF' => __pad_string($vars['PAGE_CONF']), 'PAGE_CONF_OPTS' => 'xqA' ), 'Application'=> 'Wait', 'Data' => $vars['LEAD_WAIT'] ); $astman->Originate($lead); foreach ($page_members as $pm) { $pagemode = 'PAGE'; $pass_vars = $base_vars; if ($amp_conf['ASTCONFAPP'] == 'app_confbridge' && $ast_ge_10) { $pass_vars['CONFBRIDGE(user,template)'] = $vars['PAGE_CONF_OPTS'] == 'duplex' ? 'page_user_duplex' : 'page_user'; } $device = $agi->database_get("DEVICE", $pm . '/dial'); $device = $device['data']; if ($device == $this_chan[0]) { continue; // don't page ourselves } // if not force mode, don't page busy extension (NOT_INUSE or ONHOLD // are ok to page). if FPAGE we use the PAGE context reset above but //this will get skipped if ($vars['PAGEMODE'] == 'PAGE') { $dev_state = agi_get_var("DEVICE_STATE($device)"); if ($dev_state != 'NOT_INUSE' && $dev_state != 'ONHOLD') { //TODO: change to in_array or a function continue; } $user = $agi->database_get("DEVICE", $pm . '/user'); $dnd = $user['data'] != '' ? $agi->database_get("DND", $user['data']) : array('data' => ''); if ($dnd['data'] == 'YES') { continue; } // try using Spy mode (whisper) } elseif ($vars['PAGEMODE'] == 'SPAGE') { $dev_state = agi_get_var("DEVICE_STATE($device)"); // if not idle but in a state we can try spying, then try if ($dev_state != 'NOT_INUSE' && $dev_state != 'ONHOLD') { //TODO: change to in_array or a function $user = $agi->database_get("DEVICE", $pm . '/user'); $dnd = $user['data'] != '' ? $agi->database_get("DND", $user['data']) : array('data' => ''); if ($dnd['data'] == 'YES') { continue; } $type = explode('/', $device, 2); if (strtolower($type[0]) != 'sip') { continue; } switch ($dev_state) { case "INUSE": case "BUSY": case "RINGINUSE": case "HOLDINUSE": // Try SPY $pagemode = 'SPAGE'; $pass_vars['SP_DEVICE'] = __pad_string($device); break; default: // State is not amicable to spy or normal // (such as RINGING) so skip it continue; break; } } } if ($amp_conf['ASTCONFAPP'] == 'app_confbridge' && $ast_ge_10) { $data_params = $vars['PAGE_CONF'] . ',,,' . 'user_menu'; } else { $data_params = $vars['PAGE_CONF'] . ',' . $vars['PAGE_CONF_OPTS'] . ',,'; } $astman->Originate(array( 'Channel' => 'Local/' . $pagemode . $pm . '@app-paging', 'CallerID' => $vars['calleridname'] . ' <' . $vars['callerid'] . '>', 'Async' => 'true', 'Variable' => $pass_vars, 'Application' => ($amp_conf['ASTCONFAPP'] == 'app_confbridge' ? 'ConfBridge' : 'MeetMe'), 'Data' => $data_params )); } if ($vars['STREAM']) { $beep = array( 'Channel' => 'Local/s@app-page-stream', 'CallerID' => 'Playback Stream', 'Async' => 'true', 'Variable' => array( 'PAGE_CONF' => __pad_string($vars['PAGE_CONF']), 'PAGE_CONF_OPTS' => 'xq' ), 'Application'=> 'Playback', 'Data' => $vars['STREAM'] ); //dbug($beep); $astman->Originate($beep); } function __agi(){ require_once('phpagi.php'); $agi=new AGI(); foreach($agi->request as $key => $value){//strip agi_ prefix from keys if(substr($key,0,4)=='agi_'){ $opts[substr($key,4)]=$value; } } foreach($opts as $key => $value){//get passed in vars if(substr($key,0,4)=='arg_'){ $expld=explode('=',$value); $opts[$expld[0]]=$expld[1]; unset($opts[$key]); } } array_shift($_SERVER['argv']); foreach($_SERVER['argv'] as $arg){ $arg=explode('=',$arg); //remove leading '--' if(substr($arg['0'],0,2) == '--'){$arg['0']=substr($arg['0'],2);} $opts[$arg['0']]=isset($arg['1'])?$arg['1']:null; } return array($agi, $opts); } function agi_get_var($value) { global $agi; $r = $agi->get_variable($value); if ($r['result'] == 1) { $result = $r['data']; return $result; } return ''; } function __pad_string($string) { return str_replace( array('\\', ',', '='), array('\\\\', '\\,', '\\='), $string ); } ?>

I have the same issue as described above. I’m using Asterisk version 11.8.1, and FreePBX 2.11.0.37.

I think this is not a FreePBX issue, but rather an issue in asterisk’s app_confbridge application. It seems it was fixed here https://issues.asterisk.org/jira/browse/ASTERISK-21859 in version 11.6, but maybe there is still some lingering issue.

The issue is not consistent and is happening for me on yealink and polycom phones.

Does not appear to be a priority.
Solution: Go use another paid PBX if you want paging.

Developers work from the bug tracker at http://issues.freepbx.org/browse/FREEPBX
In the following comment the recommendation was made to file a bug report:
http://www.freepbx.org/comment/250452#comment-250452

This was NOT done, so as far as the developers are aware this problem does not exist to be a priority.

Feel free to file a bug report so it can get on the developers radar.

i tried to report this via the issues tracker and i cannot log in.

same user name, same password. tells me

“You do not have a permission to log in. If you think this is incorrect, please contact your JIRA administrators.”

another user reported this here and abandoned his bug report. I have updated it and hope to work with a developer to fix it. Other users, please help out too.

http://issues.freepbx.org/browse/FREEPBX-6517