В freepbx например, есть возможность при входящем звонке делать http-запрос на внешний ресурс (crm, например или своя БД) и подставить в поле callerid полученное через этот запрос значение.
Например, если в БД занесен “Вася Пупкин” с номером 1234567890, то когда он звонит с номера 1234567890, выполняется get запрос примерно такого вида “http://crmaddress/addressbook?num=1234567890” и в ответ получает значение “Вася Пупкин”, которое подставляется в поле callerid и высвечивается на экране телефона пользователей mikopbx.
Я не нашел в интерфейсе mikopbx ничего очевидно похожего. Понимаю, что это можно сделать через agi-скрипт запросом к php, но возможно уже имеется встроенный механизм для этого, задача-то не уникальная.
Задача действительно сводится к кастомизации extensions.conf и использовании PHP-AGI скрипта.
“Из коробки” такой возможности нет.
В силу неглубоких познаний накидал agi-скрипт, который делает запрос и возвращает ответ, который я вижу в консоли ($agi->verbose(“Opredelilo: --== $result ==–”);.
Но этот ответ почему-то не подставляется в CALLERID(name), делаю это так:
$agi->set_variable(‘CALLERID(name)’, $result);
Что не так делаю?
Весь скрипт на всякий случай:
use MikoPBX\Core\Asterisk\AGI;
require(‘phpagi.php’);
require_once ‘Globals.php’;
$agi = new AGI();
$callfromnumber = $agi->request[‘agi_callerid’];
// Задаем url для поиска
$url = “http://192.168.123.123:8069/asterisk_common/get_caller_name?number=$callfromnumber”;
$result = file_get_contents($url);
//$agi->set_variable(‘CALLERID(name)’, substr($result,20));
// Выводим в консоль что определилось
$agi->verbose(“Opredelilo: --== $result ==–”);
$agi->set_variable(‘CALLERID(name)’, $result);
$agi->exec_goto(“internal”, “2001”, “1”);
$agi->hangup();