Asterisk PHP AGI Dialplan Согласие на ограничение вызовов - PullRequest
0 голосов
/ 09 ноября 2019

Я хочу получить информацию из БД в соответствии с лимитом звонка, означает, что достигнут лимит звонков в диалплане, которого можно избежать. ниже я предоставляю свою текущую схему БД и код php.

+----+--------+----------+-----------+--------------+------------+------+--------+---------------------+
| id | prefix | priority | tunnel    | device_ip    | call_limit | used | status | created_on          |
+----+--------+----------+-----------+--------------+------------+------+--------+---------------------+
|  1 | 923    |        1 | Asim_Pak4 | 172.55.85.10 |          1 |    1 |      1 | 2019-10-26 21:57:12 |
|  2 | 923    |        2 | Asim_Pak4 | 172.55.85.20 |          1 |    1 |      1 | 2019-10-26 21:57:12 |
|  3 | 923    |        3 | Asim_Pak4 | 172.55.85.30 |          1 |    1 |      1 | 2019-10-26 21:57:12 |
+----+--------+----------+-----------+--------------+------------+------+--------+---------------------+
3 rows in set (0.00 sec)

Мой PHP:

$dial_no = "923480678736";
$RT1_Sql="SELECT priority,device_ip,call_limit FROM v4g_dialplan WHERE '$dial_no' LIKE CONCAT(prefix,'%') AND status=1 ORDER BY priority ASC LIMIT 1";
$RT1_result=mysql_query($RT1_Sql,$db_con);

while ($RT1_data = mysql_fetch_array($RT1_result, MYSQL_ASSOC)){

    $RT1_Prio = $RT1_data['priority'];
    $RT1_GwIP = $RT1_data['device_ip'];
    $RT1_Gw_CallLimit = $RT1_data['call_limit'];            
    $agi->set_variable('GROUP()',"$RT1_GwIP");
    $Gw_IPCrnt_Call = $agi->get_variable('GROUP_COUNT()',"$RT1_GwIP");

    $agi->verbose("Device IP : ".$RT1_GwIP);
    $agi->verbose("Device CC : ".$Gw_IPCrnt_Call);          

    if($RT1_Gw_CallLimit >= $Gw_IPCrnt_Call)
    {
        echo "Device Limit Not Reached";
        $DP_Next = "Tunnel";
    }else
    {
        $RT1_Sql2="SELECT * FROM v4g_dialplan WHERE '$dial_no' LIKE CONCAT(prefix,'%') AND priority > $RT1_Prio AND status=1 ORDER BY priority ASC LIMIT 1";
        $RT1_result2=mysql_query($RT1_Sql2,$db_con);                
        $RT1_data2 = mysql_fetch_assoc($RT1_result2);

        $RT1_Prio2 = $RT1_data2['priority'];
        $RT1_GwIP2 = $RT1_data2['device_ip'];
        $RT1_Gw_CallLimit2 = $RT1_data2['call_limit'];

        $agi->verbose("Device Prio : ".$RT1_Prio2);
        $agi->verbose("Device IP : ".$RT1_GwIP2);
        $agi->verbose("Device CL : ".$RT1_Gw_CallLimit2);
    }
}

Как вы видите, у меня есть 3 плана набора в БД, и я получаю 1 из них &затем я делаю функцию подсчета групп и групп, чтобы проверить лимит вызовов.

Моя цель - получить план набора из db, для которого текущий предел вызова меньше, чем db call_limit, если строка не найдена, тогда выдайте ошибку плана набора номерапревышать.

...