vn-asterisk/incoming.php

81 lines
1.8 KiB
PHP
Executable File

#!/usr/bin/php -q
<?php
if (file_exists(__DIR__.'/env.php'))
include_once __DIR__.'/env.php';
require_once 'agi.php';
require_once 'vn-autoload.php';
$app = new Vn\Lib\App('vn-asterisk');
$app->init();
$db = $app->getSysConn();
Agi::init();
// Formats the caller phone number
$callerId = str_replace('+', '00', Agi::get('agi_callerid'));
$countryPrefix = $db->getValue('SELECT countryPrefix FROM config');
$prefixLen = strlen($countryPrefix);
if (substr($callerId, 0, $prefixLen) === $countryPrefix)
$callerId = substr($callerId, $prefixLen);
// Checks if phone number is on the blacklist
if ($db->getValue('SELECT COUNT(*) > 0 FROM blacklist WHERE phone = #', [$callerId])) {
Agi::exec('HANGUP');
exit;
}
// Checks whether its a festive day
$sundayFestive = $db->getValue('SELECT sundayFestive FROM config');
if (date('N') == 7 && $sundayFestive) {
Agi::exec('SET VARIABLE MACRO playback');
Agi::exec('SET VARIABLE ARG1 out-of-ours');
exit;
}
// Checks schedules
$scheduledQueue = $db->getValue(
'SELECT `queue` FROM pbx.schedule
WHERE `weekDay` = WEEKDAY(CURDATE())
AND CURTIME() BETWEEN timeStart AND timeEnd
LIMIT 1'
);
if ($scheduledQueue) {
Agi::exec('SET VARIABLE MACRO queue');
Agi::exec("SET VARIABLE ARG1 $scheduledQueue");
exit;
}
// Gets the customer from the phone number
$customer = $db->getValue('SELECT clientFromPhone(#)', [$callerId]);
if ($customer) {
// Gets the customer salesperson extension
$extension = $db->getValue(
'SELECT s.extension
FROM sip s
JOIN vn2008.Trabajadores t ON t.user_id = s.user_id
WHERE t.id_trabajador = vn2008.Averiguar_ComercialCliente_Id(#, CURDATE())'
,[$customer]
);
if ($extension) {
Agi::exec('SET VARIABLE MACRO exten');
Agi::exec("SET VARIABLE ARG1 $extension");
} else {
Agi::exec('SET VARIABLE MACRO playback');
Agi::exec('SET VARIABLE ARG1 busy');
}
}