====== FreePBX programatically Delete Extensions ====== Sometimes you want to programatically delete endpoints(extensions) from FreePBX at the shell level. This PHP will work just fine. "; exit; } include '/etc/freepbx.conf'; $FreePBX = FreePBX::Create(); $device=$FreePBX->Core->getDevice($argv[1]); $user=$FreePBX->Core->getUser($argv[1]); if($device["user"]){ // normal extensions tested with sip, pjsip and dahdi echo "Found device ".$argv[1].", deleting...\n"; echo "Found user ".$device["user"].", deleting...\n"; $foo=$FreePBX->Core->delDevice($argv[1]); $foo=$FreePBX->Core->delUser($device["user"]); } elseif ($user) { // for extensions with users but no device i.e. virtual echo "Found user ".$user['extension'].", deleting...\n"; $foo=$FreePBX->Core->delUser($argv[1]); } else { echo "Neither user nor device ".$argv[1]." exists, exiting...\n"; } ?> But sometimes you have a list, this can be done with... // PBXdeletelist Version 1.004b // Richard Taylor 2021 if (!isset($argv[1])){ echo "Usage php pbxdeletelist.php ,,"; exit; } $exts=explode(",",$argv[1]); include '/etc/freepbx.conf'; $FreePBX = FreePBX::Create(); foreach($exts as $ext) { $device=$FreePBX->Core->getDevice($ext); $user=$FreePBX->Core->getUser($ext); echo $ext." "; //"Device ".$argv[1]." User ".$device["user"]." "; if($device["user"]){ // normal extensions tested with sip, pjsip and dahdi echo "DU"; $foo=$FreePBX->Core->delDevice($ext); $foo=$FreePBX->Core->delUser($device["user"]); } elseif ($user) { // for extensions with users but no device i.e. virtual echo "U"; $foo=$FreePBX->Core->delUser($ext); } else { echo "X"; } echo "\n"; } In this case we're issue something like php pbxdeletelist.php 2000,2001,2002,2003,2004,2005