Адресная книга для телефонов Grandstream из FreePBX 13

Адресная книга удобная опция, которую часто спрашивают заказчики, поэтому разберемся как прописать ее для телефонов Grandstream

Сначала нам нужен скрипт который выгрузит номера и их Caller ID (он же поле «Имя») из настроек внутренних номеров FreePBX. Я делал на версии FreePBX 13, возможно будет работать и на более ранних.
<?php
$config = include("db/config.php");

$db = new PDO($config["db"], $config["username"], $config["password"], $config["options"]);

$sql = "SELECT extension, name from users";   // Делаем выборку записей книги
$q = $db->prepare($sql);
$q->execute();
$rows = $q->fetchAll();

unlink($config["pb_file_gs"]);  // Удалим старый файл

$fp = fopen($config["pb_file_gs"],"w+");
fputs($fp, '<?xml version="1.0" encoding="UTF-8"?><AddressBook>');

foreach($rows as $row) {         // Пробежим по всем записям, подготовив XML файл нужного вида
    	fputs($fp, '<Contact>
                        <FirstName>'.$row['name'].'</FirstName>
                        <LastName></LastName>
                        <Phone>
                                   <phonenumber>'.$row['extension'].'</phonenumber>
                                   <accountindex>1</accountindex>
                                   <downloaded>1</downloaded>
                        </Phone>
                        <Groups>
                                   <groupid>4</groupid>
                        </Groups>
            </Contact>
	'); 
}
fputs($fp, '<Group id="4">Server</Group> </AddressBook>');
fclose($fp);
?>


Файл «db/config.php»
<?php
return array(
    "db" => "mysql:host=localhost;dbname=asterisk",
    "pb_file_gs" => "/var/www/html/phonebook/phonebook.xml",
    "username" => "freepbxuser",     //Mysql login
    "password" => "123456", //Mysql password
    "options" => array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')
);


Потом заходим в телефон «Phonebook -> Phonebook Management»

Enable Phonebook XML Download -> Enabled, HTTP
Phonebook XML Server Path -> http://serverpbx/phonebook/
Phonebook -> Phonebook Management
Phonebook Download Interval -> 60
Remove Manually-edited Entries on Download -> No

В крон прописываем запуск скрипта, который будет выгружать книгу. Для проверки можно посмотреть логи httpd, чтобы удостовериться, что телефон загружает нужный файл. Чтобы не ждать, можно телефон перегрузить, тогда он при загрузке подтянет телефонную книгу.

0 комментариев