Checkdir opens multiple popups for the same event

Re: ticket #194 - Checkdir opens multiple popups

We use checkdir to open a custom popup to find the caller id in our own database for external incoming calls. It works great except that it sometimes opens multiple popup windows. Some people have received 3 popups for the same phone call.

My suspicion is that it is because more than 1 person is logging into the same extension. We have some users whose phones are not in our main ring group so their phone does not ring for outside calls. But they want to see the popups for who is calling. So as many as 4 people might login to the login for the main reception phone. Only people logged into that reception phone login are getting multiple popups.

I have modified checkdir.php, but not other code. I added all ALLVAR variables to the url and all popups are caused by the RINGING event. I added a return 0; line to block further notifications.

Still some users get 3 popups from the RINGING event.

Thanks for your help

Comments

  • I believe your suspicion is correct. If you have 3 browsers logged into the same extension, all 3 browsers will get 3 popups when the phone rings. I can't think of a workaround for seeing popups, but they can see who's calling or in queue without a popup by making a FOP2 login without an extension but allowing them to see what caller IDs are waiting in the queue.

    A little PHP page with fast refresh and some tweaks in checkdir would allow you to essentially echo all the popup info from every call to a web page non-agents could monitor.
  • Thanks for the reply.

    We have not seen a popup for every browser logged in. Some users (logged in to reception) get a single popup while others get 3 for the same call. It might have something to do with the order of login or the order of receiving the event - the person seeing this most often tends to leave his browser open continuously including overnight while all others shutdown every night, so he would generally be the earliest login.

    I'll look into your suggestion about a separate fop login. If I could create single user logins just for monitoring and somehow tie it to the main ring group (so checkdir receives those events) that might solve it without the separate php page doing polling.

    Any tips?
  • I don't know of any way, without some php mods, to see actual popups without being logged into the queue, but the default information from the popup is in the queue widget, and there is a wealth of info in the full wallboard. You don't have to be logged into a queue to either of those. Just make a user/group/template that is allowed to see them.
  • Hi Jerry,

    Thanks for the reply. For now we had a phone at an admin desk rarely used, so I put that phone in the main ring group and I'm having the person seeing this most often login to FOP using that extension. No one else is aware of that extension, so it should never get multiple logins and we'll see what happens.

    Today that user did report getting 3 popups when logged into a different extension, so I have not totally confirmed that the duplicate popups are caused by multiple logins to same extension.

    Clarifying something in your last response, my purpose was not to "see actual popups without being logged into the queue". My idea was to setup a virtual extension that WAS in the main queue/ring group, but had no phone connected, hoping that would generate the RINGING event without having to setup a physical phone on that extension. But my first try at this did not work, apparently because no RINGING event was generated for the virtual extension with no phone.

    Another idea is to use an old LinkSys SIP to analog phone device with two ports on a desk, assign it two extensions and put the two extensions into the main queue/ring group. Then 2 more users can use those extensions as a login for the sole purpose to see popups.

    But all that is only worth it if the multiple popups are caused by multiple logins to the same extension, so we'll see what happens with my problem user using a new, more hidden login.

    Phil
  • Unfortunately, my user got 2 popups using a logon/extension that no one else uses, so something else is going on here (perhaps in addition to multiple logins to same extension).

    Here is the key section with my modifications to checkdir.php. I stripped comments and am only showing the ringing section. The url for duplicate popups indicates all popups are caused by the ringing event. count_digits is my simple function (not shown).

    if($ALLVAR=="ringing") {

    $exten = $ALLVAR;

    $clidname = base64_decode($ALLVAR);
    $clidnum = base64_decode($ALLVAR);

    while (substr($clidnum,0,1)=='0')
    $clidnum=substr($clidnum,1); // strip leading 0's
    $clidlen=count_digits($clidnum);
    if ($clidlen>=7)
    {
    if (substr($clidname,0,1)==">")
    $clidname=substr($clidname,1); // strip leading > indicating call came from queue

    $url="http://192.168.254.7/lookup_precheck.php";
    $del="?";
    foreach ($ALLVAR AS $var => $val)
    {
    if ($var=="clidname")
    $url.=$del."clidname=".$clidname;
    elseif ($var=="clidnum")
    $url.=$del."clid=".$clidnum;
    else
    $url.=$del.$var."=".$val;
    $del="&";
    }
    $url.="&remote_addr=".$_SERVER;

    header("Content-type: text/javascript");
    return 0; // Block normal notifications when we open our own popup
    }

    Anyone see anything odd here?

    Thanks
  • edited August 13
    More info... This user is connecting over VPN. I am using the lookup_precheck.php page from the url to log all notifications including the full query string for debugging and possibly as a way to detect and filter duplicates. Here are all log rows for this user with customer phones Xed out using letter strings to still show duplicates:

    [fixed]+
    +
    +
    +
    +
    +
    | clid | exten | uniqueid | ts | qstr |
    +
    +
    +
    +
    +
    +
    | AAAAAAAAAA | 226 | 0 | 2019-08-13 07:43:16 | poptype=ringing&clid=AAAAAAAAAA&clidname=&exten=226&remote_addr=192.168.254.116 |
    | AAAAAAAAAA | 226 | 0 | 2019-08-13 07:43:16 | poptype=ringing&clid=AAAAAAAAAA&clidname=&exten=226&remote_addr=192.168.254.116 |
    | BBBBBBBBBB | 226 | 0 | 2019-08-13 08:01:43 | poptype=ringing&clid=BBBBBBBBBB&clidname=&exten=226&remote_addr=192.168.254.116 |
    | BBBBBBBBBB | 226 | 0 | 2019-08-13 08:01:43 | poptype=ringing&clid=BBBBBBBBBB&clidname=&exten=226&remote_addr=192.168.254.116 |
    | CCCCCCCCCC | 226 | 0 | 2019-08-13 09:29:11 | poptype=ringing&clid=CCCCCCCCCC&clidname=105&exten=226&remote_addr=192.168.254.116 |
    | CCCCCCCCCC | 226 | 0 | 2019-08-13 09:29:11 | poptype=ringing&clid=CCCCCCCCCC&clidname=105&exten=226&remote_addr=192.168.254.116 |
    | DDDDDDDDDD | 226 | 0 | 2019-08-13 09:57:05 | poptype=ringing&clid=DDDDDDDDDD&clidname=&exten=226&remote_addr=192.168.254.116 |
    | DDDDDDDDDD | 226 | 0 | 2019-08-13 09:57:05 | poptype=ringing&clid=DDDDDDDDDD&clidname=&exten=226&remote_addr=192.168.254.116 |
    | EEEEEEEEEE | 226 | 0 | 2019-08-13 10:07:41 | poptype=ringing&clid=EEEEEEEEEE&clidname=&exten=226&remote_addr=192.168.254.116 |
    | EEEEEEEEEE | 226 | 0 | 2019-08-13 10:07:41 | poptype=ringing&clid=EEEEEEEEEE&clidname=&exten=226&remote_addr=192.168.254.116 |
    | FFFFFFFFFF | 226 | 0 | 2019-08-13 10:17:40 | poptype=ringing&clid=FFFFFFFFFF&clidname=&exten=226&remote_addr=192.168.254.116 |
    | FFFFFFFFFF | 226 | 0 | 2019-08-13 10:17:40 | poptype=ringing&clid=FFFFFFFFFF&clidname=&exten=226&remote_addr=192.168.254.116 |
    | GGGGGGGGGG | 226 | 0 | 2019-08-13 10:20:07 | poptype=ringing&clid=GGGGGGGGGG&clidname=XXXXXXXXX&exten=226&remote_addr=192.168.254.116 |
    | GGGGGGGGGG | 226 | 0 | 2019-08-13 10:20:07 | poptype=ringing&clid=GGGGGGGGGG&clidname=XXXXXXXXX&exten=226&remote_addr=192.168.254.116 |
    | HHHHHHHHHH | 226 | 0 | 2019-08-13 10:29:34 | poptype=ringing&clid=HHHHHHHHHH&clidname=&exten=226&remote_addr=192.168.254.116 |
    | HHHHHHHHHH | 226 | 0 | 2019-08-13 10:29:34 | poptype=ringing&clid=HHHHHHHHHH&clidname=&exten=226&remote_addr=192.168.254.116 |
    | IIIIIIIIII | 226 | 0 | 2019-08-13 11:08:12 | poptype=ringing&clid=IIIIIIIIII&clidname=&exten=226&remote_addr=192.168.254.116 |
    | IIIIIIIIII | 226 | 0 | 2019-08-13 11:08:12 | poptype=ringing&clid=IIIIIIIIII&clidname=&exten=226&remote_addr=192.168.254.116 |
    +
    +
    +
    +
    +
    +[/fixed]

    This log shows 18 popups for 9 phone calls, so consistent duplicate popups. Also note all were from the same IP address (browser) so not multiple logins.
  • Oh and FOP2 version 2.31.22, Asterisk version 11.22.0, FreePBX version 2.11.0.43, CentOS 6.8.

    We use Ring Group rather than Queue because of a known bug in this Asterisk version queue handling that caused Asterisk to crash, so at some point we plan to update Asterisk and use Queues again.
  • No takers, so does anyone have any tips where to look in logs or Asterisk to debug this myself?
  • Hi,

    A little bit late to the party... Maybe you can make some tests to see if we can determine what is triggering the bug.. and for that I have also a questions:
    Do you get a double popup on a freshly restarted FOP2 server?
    What happens if you reload FOP2 with the command:

    #> service fop2 reload

    Do you get a doulbe popup after a reload?
    Finally, one way to troubleshot directly on the browser would be to enable consoleDebug in FOP2 Manager Settings, then opening the javascript/developer console on the browser experiencing the issue, and looking at the event log to see if you get multiple notifyringing events.

  • edited November 14

    Sorry, I stopped monitoring this thread. I don't know the answer. I just did a service fop2 reload and will let you know what I see tomorrow. I also just enabled consoleDebug and I'll get our user to look at his event log tomorrow if we get any duplicates.

    We have been continuing to see 6-8 duplicates per day, all for this one user. We were getting some duplicates for other users earlier, but those may be due to multiple logins to the same extension, which are minimal now.

  • edited November 15

    No duplicate popups today. I'll check again tomorrow.

  • Duplicate popup this morning at 7:54 AM our local time and my user provided the console output from his browser. It is long and I'm not sure what to trim since I don't see any timestamps, so I am attaching rather than inline. There may be output for some time before the duplicate.

    Also, I did a reload per your earlier request, so still seeing duplicates after a reload. But time has gone by, so not sure if this met your intent.

    Phil

  • edited November 16

    I have a second consoleDebug capture for an additional duplicate. It contains slightly fewer lines than the first one. Let me know if it is useful to post it as well.

  • I worked my way through the second consoleDebug log. I don't see duplicate RINGING events, but I do see the first reference to the callerid that showed the duplicate, then working through queue members with last queue member, then two link commands for that number, then the call answered. Showing only the last queue sequence of msgs, here are the few lines that show the repeated link commands:

    26,queuemember=WyB7ICJwYXVzZWQiOiAiMCIsICJzdGF0ZSI6ICJmcmVlIiwgImxvYyI6ICJMb2NhbC8yMjZAZnJvbS1xdWV1ZS9uIiwgInF1ZXVlIjogIlFVRVVFLzIwM15MT0NBTEhPU1QiLCAicHR5IjogIjAiLCAibmFtZSI6InRlc3QiLCAiY2FsbHN0YWtlbiI6ICIwIiwgImxhc3RjYWxsIjogIjAiLCAiY3VycmVudGNhbGwiOiAiMCIsICJmcm9tcXVldWUiOiAiIiwgImNsaWRudW0iOiAiIiwgICJjbGlkbmFtZSI6ICIiLCAicmVhc29uIjogIiIsICJub3ciOiAiMTU3Mzg0NjkxOCIgfSBd en slot jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    29,settimer=0@UP en slot 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    29,state=UP en slot 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    29,settext=&inuse!1 en slot 0 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    29,details=WyB7ICJkaXJlY3Rpb24iOiAiaW5ib3VuZCIsICJjaGFubmVsIjogIlNJUC92b2lwbXMtMDAwMDEzMDAiLCAiY2FsbGVyaWQiOiAiNDA4NjIwMzM2MyIgfSBd en slot 2 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    18,settext=4086203363  en slot 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    18,direction=inbound en slot 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    18,link=4086203363  en slot 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    Ejecutando Callback Comando link jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    received link command from server with 4086203363 , button number18 in slot 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    29,setvar=VU5JUVVFSUQ9MTU3Mzg0NjkxNS41NjEw en slot 0 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    29,state=UP en slot 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    29,settext=&inuse!1 en slot 0 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    29,details=WyB7ICJkaXJlY3Rpb24iOiAiaW5ib3VuZCIsICJjaGFubmVsIjogIlNJUC92b2lwbXMtMDAwMDEzMDAiLCAiY2FsbGVyaWQiOiAiNDA4NjIwMzM2MyIgfSBd en slot 2 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    18,settext=4086203363  en slot 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    18,direction=inbound en slot 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    18,link=4086203363  en slot 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    Ejecutando Callback Comando link jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    received link command from server with 4086203363 , button number18 in slot 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    29,setvar=VU5JUVVFSUQ9MTU3Mzg0NjkxNS41NjEw en slot 0 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    29,notifyconnect=SIP/271 en slot 0 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    
  • Still receiving duplicate popups. Here is another instance of the log, this time with 3 popups shown. This appears consistent to me with the 3 lines that say "received link command from server ...". So I'm guessing that the link command is telling us something:

    en slot 3 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    11,settext=34943784075 Finance en slot 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    11,direction=inbound en slot 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    11,link=34943784075 Finance en slot 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    Ejecutando Callback Comando link jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    received link command from server with 34943784075 Finance, button number11 in slot 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    29,setvar=VU5JUVVFSUQ9MTU3NTM5ODUzMi44NDc3 en slot 0 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    29,notifyconnect=SIP/242 en slot 0 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    11,settext=34943784075 Finance en slot 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    11,direction=inbound en slot 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    11,link=34943784075 Finance en slot 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    Ejecutando Callback Comando link jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    received link command from server with 34943784075 Finance, button number11 in slot 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    29,setvar=VU5JUVVFSUQ9MTU3NTM5ODUzMi44NDc3 en slot 0 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    29,notifyconnect=SIP/242 en slot 0 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    11,settext=34943784075 Finance en slot 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    11,direction=inbound en slot 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    11,link=34943784075 Finance en slot 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    Ejecutando Callback Comando link jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    received link command from server with 34943784075 Finance, button number11 in slot 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    29,setvar=VU5JUVVFSUQ9MTU3NTM5ODUzMi44NDc3 en slot 0 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    29,notifyconnect=SIP/242 en slot 0 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    ws send <msg data="1|ping||" /> jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    envio ping 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    ws send <msg data="1|ping||" /> jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    envio ping 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    ws send <msg data="1|ping||" /> jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    envio ping 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    ws send <msg data="1|ping||" /> jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    envio ping 1 jquery-1.11.3.min.js line 2 > eval line 1 > eval:1:6769
    
Sign In or Register to comment.