-
-
Save lgaetz/ff7d6806c798086e144396d275f7a8ab to your computer and use it in GitHub Desktop.
#!/usr/bin/env php | |
<?php | |
if (!isset($argv[1])){ | |
echo " | |
***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** | |
* | |
* Script: lgaetz-fmfm.php | |
* | |
* Latest version: https://gist.github.com/lgaetz/ff7d6806c798086e144396d275f7a8ab | |
* | |
* Usage: Run at bash prompt of FreePBX system running FreePBX 13+ with single argument | |
* of extension to display whether FMFM is enabled for the extension. Use optional command | |
* as second argument to change | |
* | |
* # lgaetz-fmfm.php 3002 [command] | |
* | |
* Commands: | |
* enable - if disabled, enable for provided extension | |
* disable - if enabled, disable for provided extension | |
* toggle - either enable or disable depending on current state | |
* list - show all FMFM details | |
* | |
* License: GNU/GPL3+ | |
* | |
* History: | |
* 2017-11-18 First commit by lgaetz | |
* 2020-04-06 Covid-19 Quarantine update - added improvements suggested by https://gist.github.com/t-oster | |
* | |
***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** | |
"; | |
exit; | |
} | |
// user params | |
$verbose = true; // set to false to diable all console output | |
// include FreePBX bootstrap environment | |
include '/etc/freepbx.conf'; | |
$FreePBX = FreePBX::Create(); | |
$device=$FreePBX->Findmefollow->get($argv[1],true); | |
// print_r($device); // uncomment for dbug | |
// get current fmfm status | |
if (array_key_exists ("ddial",$device)){ | |
if($device[ddial]=="CHECKED"){ | |
$fmfm=false; | |
} elseif($device[ddial]=="") { | |
$fmfm=true; | |
} | |
} else { | |
// prob an invalid extension | |
verbose_output("Invalid extenion - exiting"); | |
exit; | |
} | |
switch ($argv[2]) { | |
case "enable": | |
if (!$fmfm) { | |
$FreePBX->Findmefollow->setDDial($argv[1], true); | |
verbose_output("FMFM changed to enabled"); | |
} else { | |
verbose_output("FMFM already enabled - no change"); | |
} | |
break; | |
case "disable": | |
if ($fmfm) { | |
$FreePBX->Findmefollow->setDDial($argv[1], false); | |
verbose_output("FMFM changed to diabled"); | |
} else { | |
verbose_output("FMFM already diabled - no change"); | |
} | |
break; | |
case "toggle": | |
if ($fmfm){ | |
$FreePBX->Findmefollow->setDDial($argv[1], false); | |
verbose_output("FMFM changed to diabled"); | |
} else { | |
$FreePBX->Findmefollow->setDDial($argv[1], true); | |
verbose_output("FMFM changed to enabled"); | |
} | |
break; | |
case "list": | |
print_r($device); | |
break; | |
default: // maintain compatibility for previous version | |
if(!$fmfm){ | |
verbose_output("FMFM disabled"); | |
} elseif($device[ddial]=="") { | |
verbose_output("FMFM enabled"); | |
} | |
} | |
function verbose_output($string) { | |
global $quiet, $verbose; | |
if (!$quiet && $verbose) { | |
echo $string."\n"; | |
} | |
} |
Sorry, in which path this file is supposed to be placed?
Seems as if you can use $FreePBX->Findmefollow->setDDial($argv[1], true);
or $FreePBX->Findmefollow->setDDial($argv[1], false);
in order to enable/disable. This can be executed from bash anywhere in the freepbx server or you can modify it to work via HTTP and place it in /var/www/html of the freepbx server.
Thanks for the suggestion @t-oster. This script has been neglected for too long, I updated to incorporate your suggestion.
@lukakiro, you can put the script wherever you wish. It's common to place scripts like these in /var/lib/asterisk/agi-bin
I tried making my own script while using your script for inspiration. See https://www.reddit.com/r/freepbx/comments/txwwk2/issue_writing_my_own_fmfm_script/. Any idea what I may be doing wrong?
To do - add support to enable/disable/toggle FMFM