Инструменты пользователя

Инструменты сайта


dialplan_ab

Это старая версия документа!


Адресная книга в Asterisk. Подстановка Caller Name при входящем звонке

Друзья согласитесь что при входящем вызове приятнее видеть не просто номер телефона, а при этом как то идентифицировать человека. Для этого я решил придумать небольшой сценарий для адресной книги. Так же сразу добавлю распределение вызова на того или иного сотрудника.

Суть будет такой, мы создаем базу в которой будут следующие поля:

ID - Уникальный порядковый номер
PHONE - Номер телефона клиента
NAME - Имя клиента
AGENT - Внутренний номер сотрудника

После создания таблицы с этими полями можно будет

Добавляем запрос в func_odbc.conf

[SET_DATA_FB]
dsn=aster
write=INSERT INTO имя_базы.phone_book (phone,name,agent) VALUES (${CALLERID(num)},${NAME},${AGENT})

Далее правим входящий звонок extensions.conf

[IN]
exten => _X.,1,Answer()
exten => _X.,2,Set(ARRAY(PHONE,NAME,AGENT)=${ODBC_GET_DATA_FB(${CALLERID(num)})}") ; Построение массива номеров из БД FB 
exten => _X.,3,Set(CALLERID(name)=${NAME}) ; При имеющемся совпадении задается имя контакта
exten => _X.,4,GotoIf($["${AGENT}"!=""]?dialagent) ; Проверка задан ли агент в базе FB
exten => _X.,5,Dial(SIP/5553)
exten => _X.,n(dialagent),Dial(SIP/${AGENT},25,tTm(hold))
exten => _X.,n,HangUp()

Для удобства заполнения номеров, накидал небольшую форму.

Создаем файл connect.php

<?php
mysql_connect("localhost", "Логин", "Пароль") //параметры в скобках ("хост", "имя пользователя", "пароль")
or die("<p>Ошибка подключения к базе данных! " . mysql_error() . "</p>");

mysql_select_db("asteriskcdrdb")//параметр в скобках ("имя базы, с которой соединяемся")
 or die("<p>Ошибка выбора базы данных! ". mysql_error() . "</p>");
?>

Создаем файл form.php

<?php 
require 'connect.php';

$phone = $_REQUEST['phone'];
$name = $_REQUEST['name'];
$agent = $_REQUEST['agent'];

mysql_query("SET NAMES utf8");

$insert_sql = "INSERT INTO phone_book (phone, name, agent)" . "VALUES('{$phone}', '{$name}', '{$agent}');";
mysql_query($insert_sql);

header("Location: ".$_SERVER['HTTP_REFERER']);
if ($result = 'true'){
    echo "Информация занесена в базу данных";
}else{
    echo "Информация не занесена в базу данных";
}

?>

Ну и завершающий файл fb.html

<code> <!DOCTYPE HTML PUBLIC «-W3CDTD HTML 4.01 TransitionalEN» «http://www.w3.org/TR/html4/loose.dtd»> <html> <head> <meta http-equiv=«Content-Type» content=«text/html; charset=utf-8»> <link rel=«stylesheet» href=«style.css» type=«text/css»> <title>Untitled Document</title> </head> <body> <form action=«/form.php» method=«post» name=«forma»> <fieldset> <label for=«phone»>Номер телефона клиента:</label><br/> <input type=«text» name=«phone» size=«30»><br/> <label for=«name»>Имя клиента:</label><br/> <input type=«text» name=«name» size=«30»><br/> <label for=«agent»>Вн. номер менеджера:</label><br/> <input type=«text» name=«agent» size=«30»><br/> </fieldset> <br/> <fieldset> <input id=«submit» type=«submit» value=«Отправить данные»><br/> </fieldset> </form> </body> </html>

dialplan_ab.1468829114.txt.gz · Последнее изменение: 2016/07/18 11:05 — kov