dialplan_fb
Адресная книга в Asterisk. Подстановка Caller Name при входящем звонке
Друзья согласитесь что при входящем вызове приятнее видеть не просто номер телефона, а при этом как то идентифицировать человека. Для этого я решил придумать небольшой сценарий для адресной книги. Так же сразу добавлю распределение вызова на того или иного сотрудника.
Суть будет такой, мы создаем таблицу в базе, в которой будут следующие поля:
ID - Уникальный порядковый номер
PHONE - Номер телефона клиента
NAME - Имя клиента
AGENT - Внутренний номер сотрудника
После создания таблицы с этими полями можно будет
Добавляем запрос в func_odbc.conf
[GET_DATA_FB] dsn=aster read=SELECT phone,name,agent FROM имя_базы.таблица WHERE phone="${CALLERID(num)}"
Далее правим входящий звонок 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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "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_fb.txt · Последнее изменение: 2016/07/18 11:14 — kov