Documentation


Frequently Asked Questions

  • Can I run FOP and FOP2 at the same time?
    • Yes. But both applications listen to port 4445 by default. In order to run both on the same server, you will have to configure the listen port on one of them to something else. We recommend to change FOP 1 listen port to 4444 and let FOP2 use port 4445. You can change FOP 1 listen port by editing op_server.cfg and changing the line that reads:

      ;listen_port=4445
      to:
      listen_port=4444

      and then restart FOP 1 for the change to take effect.
  • Can I run FOP2 on a plain Asterisk installation, with no FreePBX installed?
    • Yes. The tarball comes ready to work with FreePBX right out of the box, if you use plain asterisk or your custom configuration engine, you can still use FOP2 but you will have to write the configuration for users and buttons by hand or create a set of autoconfiguration scripts.
  • Why is the action toolbar missing when I log in?
    • In order for the action toolbar to appear, you MUST login with an extension that is also listed in the extensions list. If there is no matching button for the extension your are loggin as, the toolbar will not be displayed, as FOP2 will not be able to figure out the device to use for performing the actions. If you are using the free version, you must have to login with an extension that is part of the first 15 buttons displayed.
  • Is there a way to display only one line per extension?
    • Yes. You have to edit presence.js on the client and set the variable showLines to 1. Take into account that if an extension receives more than one call at a time, you might end up with a busy button with line 1 inactive because the action happens on line 2. It is not recommended to not show line 2.
  • How do I change the language?
    • Since FOP2 version 2.20, you only set the language in /var/www/html/fop2/js/presence.js file, or for individual users by opening the user preference in the fop2 gui.

      In previous FOP2 versions you have to edit /usr/local/fop2/fop2.cfg and set the language parameter on the server. On the client you need to include the correct .js language file in index.html, and finally set the language for the visual directory in /var/www/html/fop2/config.php. Also you might need to translate or put whatever you want in the /var/www/html/fop2/js/presence.js file.
  • Does FOP2 show parked calls?
    • Parking is supported since version 2.10. It will work by default with FreePBX, if you do not use FreePBX please read the README file for instructions on setting it up.
  • Where are the recordings initiated via FOP2 stored?
    • They are stored in the standard asterisk monitor directory: /var/spool/asterisk/monitor. Since FOP version 2.20 it is possible to specify a script to run after a recording is finished, we have included a sample script (tovoicemail.pl) that will sent the recording as a voicemail file. Please read the sample fop2.cfg file for details.
  • How to replace the FOP link in FreePBX to FOP2?
    • You can do it by means of modifying your apache configuration file. In Centos the file is located in /etc/httpd/conf/httpd.conf. In Debian it is located in /etc/apache2/sites-available/default. For other distros you can check apache wiki at http://wiki.apache.org/httpd/DistrosDefaultLayout. In this file add the following line:
      alias /panel/ "/var/www/html/fop2/"
      You will then need to copy the index.html file to index_amp.php in order to make FreePBX happy:
      cp /var/www/html/fop2/index.html /var/www/html/fop2/index_amp.php
      After the changes, reload Apache. From then one, all requests to /panel will be redirected to your FOP2 install.
  • What are the differences between FOP 1 and FOP 2?
    • Several. In FOP 1 you use drag and drop to perform actions. In FOP 2 you use only clicks, so its easier to control with touchscreens. FOP 1 has limited screen space, so the number of buttons to display depends on the size you choose for the buttons; this method imposes a practical limit of about 140 buttons per screen. In the other hand, FOP 2 does not use flash for the display but regular html, so there is no limit on the number of buttons to display, you will be able to scroll down to show any number of buttons, and with the Filter option it is easy to look for a particular extension if you have dozens of buttons. FOP 1 uses flash and a custom style configuration for changing the aspect, FOP 2 uses html and css so it is easier to modify the style. FOP 1 supports click 2 dial but you need to code in javascript/php in order to use the feature, while FOP 2 includes a Dial box by default that lets you type any number, sip contact or .tel domain to perform dialing. FOP 1 does not know about users, if you know the security code you can transfer any call to any place, while in FOP 2 there is a user authentication system with fine grained permissions. This is just a basic list of differences, but you might get the idea. Your best bet is to try it out and experience it yourself.
  • What permissions are needed in asterisk's manager.conf for the FOP 2 user?
    • You need at least system,call,command,agent,user,originate in asterisk's manager.conf file for the FOP user. In the latest tribox you might also need the "hud" permission or just use "all"
  • I have reset FOP1 to run on port 4444 but extensions in FOP1 flash red
    • Be sure to resetart FOP1 so the config change is applied. (Easiest way is to reboot, harder way is to selectively kill or restart FOP1 and be sure to start FOP2). Verify that FOP1 and FOP2 are running under different ports. Use netstat -an to verify 4444 and 4445 are listening. Also, PIAF installations have tcp port 4445 open so 4444 needs to be open as well. Use webmin to open port 4445.
  • How do I track FreePBX DND state in FOP 2?
    • Since version 2.10, the included extensions_override_freepbx.conf file includes the needed changes. Just copy the file to your /etc/asterisk. It works by modifying FreePBX dnd macros slightly, below you will find a sample, with the added lines hightlighted:

      [app-dnd-off]
      include => app-dnd-off-custom
      exten => *79,1,Answer
      exten => *79,n,Wait(1)
      exten => *79,n,Macro(user-callerid,)
      exten => *79,n,dbDel(DND/${AMPUSER})
      exten => *79,n,Set(CHAN=${CUT(CHANNEL,-,1)})
      exten => *79,n,dbDel(fop2state/${CHAN})
      exten => *79,n,UserEvent(FOP2ASTDB|Family: fop2state|Channel: ${CHAN}|Value: )
      exten => *79,n,Playback(do-not-disturb&de-activated)
      exten => *79,n,Macro(hangupcall,)
      
      ; end of [app-dnd-off]
      
      
      [app-dnd-on]
      include=> app-dnd-on-custom
      exten=> *78,1,Answer
      exten=> *78,n,Wait(1)
      exten=> *78,n,Macro(user-callerid,)
      exten=> *78,n,Set(DB(DND/${AMPUSER})=YES)
      exten=> *78,n,Set(CHAN=${CUT(CHANNEL,-,1)})
      exten=> *78,n,Set(DB(fop2state/${CHAN})=Do not Disturb)
      exten=> *78,n,UserEvent(FOP2ASTDB|Family: fop2state|Channel: ${CHAN}|Value: Do not Disturb)
      exten=> *78,n,Playback(do-not-disturb&activated)
      exten=> *78,n,Macro(hangupcall,)
      

  • Can I popup an arbitrary URL when a call comes in?
    • Yes. When your phone rings you will get a call notification. Via ajax the notification will trigger a request to the server to the script checkdir.php. You can modify that script to insert your own javascript code. At the very top there is a function named custom_popup() that will get 4 parameters: caller id number, caller id name or phonebook name,queue name if any and extension number. You can uncomment the sample function to fire a popup to google.com searching for the contact name. Eg:
      function custom_popup($clidnum,$name,$fromqueue,$exten) {
         // Here you can fire your own popups or do whatever you want
         // Uncomment this block to fire a popup to google.com
         
         header("Content-type: text/javascript");
         echo "window.open('http://www.google.com/search?q=$name')";
         
      }
      
      ..
      
  • When I try to run fop2_server it does not do anything at all.
    • fop2_server requires /tmp directory to allow execution. Some systems mount the /tmp directory with the noexec option for security reasons. In that case you need to create a special temp directory for FOP2 and modify the init script to export an environment variable so it uses that directory. So, you can create a temp directory:
      mkdir /usr/local/fop2/temp
      

      And then modify the init script by adding the highlighted line:
      case "$1" in
        start)
              echo -n "Starting Flash Operator Panel 2: "
              export PAR_GLOBAL_TMPDIR=/usr/local/fop2/temp
              daemon $DAEMON $OPTIONS
      
      
  • When I open the phonebook I get "Unknown field: picture". What is wrong?
    • You need to set up a mysql table and edit config.php to access it and enable the phonebook. Please follow the link for instructions: Configuring the visual phonebook.
  • Does the phonebook work with PHP 4?
    • Not currently. We are working on making it php4 compatible. If you want to test drive the php4 version contact us as we can provide you with some replacement php files for you to try.
  • I try to login and it rejects me every time
    • If you use the automatic configuration for freepbx, you can see the list of extensions and passwords that FOP2 will accept by running following command on the server:
      /usr/local/fop2/autoconfig-users-freepbx.sh
      
      If you modified fop2.cfg to use manual configuration, be absolutely sure that you comment the #exec line, if you fail to do so, the automatic config will kick in anyaways and it will override any manual config you do, and check too that you have defined a buttonfile and that the buttonfile exists and contains at least some buttons.
  • When I try to login after entering my credentials it waits forever and times out
    • If you use international characters in your configs, be sure to save the button config file as utf-8. That should take care of the problem.
  • Can I use international characters as button labels?
    • Yes, but be sure to save the buttonfile as utf-8. If you fail to do so you might have troubles login in.
  • Can I monitor FOP2 status from FreePBX dashboard instead of FOP1?
    • You must patch FreePBX dashboard module so it does not look for FOP1 port and checks FOP2 port instead. Assuming you have FOP2 binding to port 4445, you can apply the following patch, you can save it with the name /usr/src/fop2monitor.diff :
      --- class.procinfo.php  2011-01-06 12:54:05.000000000 -0500
      +++ class.procinfo.php.new      2011-01-06 12:47:55.000000000 -0500
      @@ -24,6 +24,7 @@
           } else {
             $listen_port = 4445;
           }
      +     $listen_port = 4445;
       
                      return $this->check_port($listen_port);
              }
      

      Change to the module directory:

      cd /var/www/html/admin/modules/dahsboard
      

      And apply the patch:

      patch < /usr/src/fop2monitor.diff
      
  • I have a multi tenant environment, how does licensing work?
    • FOP2 has a non nonsense license. You need only one license to unlock the full fop2 potential. That means that you can monitor multiple asterisk servers and define multiple contexts with multiple users, with no restrictions whatsoever by paying just $40. The only thing left out would be to modify the phonebook and make it context aware. You can buy support so we can make that modification for you, or you can do that yourself as php source is not encrypted.
  • I run asterisk on a virtual server (openvz or virtuozo) and I cannot register FOP2. What should I do?
    • You need to configure a dummy veth device with the following command:
      vzctl set $VEID --netif_add eth0 --save
      
      Using this you will have a veth0 device with a MAC address that can be used for registering FOP2 and any other software requiring a proper MAC.
  • Is there a FOP2 version for Centos 6?
    • We are working on a custom binary for Centos 6. In the meantime, you can use the Centos 5 binary, the only thing to do is to create a symlink for libcrypto so it works correctly:

      In a 64 bit system the command is:
      ln -s /usr/lib64/libcrypto.so.10 /usr/lib64/libcrypto.so.6
      
      In a 32 bit system the command is:
      ln -s /usr/lib/libcrypto.so.10 /usr/lib/libcrypto.so.6