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

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


dialplan_fb

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

dialplan_fb [2016/07/18 11:14] (текущий)
kov создано
Строка 1: Строка 1:
 +=== Адресная книга в Asterisk. Подстановка Caller Name при входящем звонке ===
  
 +Друзья согласитесь что при входящем вызове приятнее видеть не просто номер телефона,​ а при этом как то идентифицировать человека. Для этого я решил придумать небольшой сценарий для адресной книги. Так же сразу добавлю распределение вызова на того или иного сотрудника.
 +
 +Суть будет такой, мы создаем таблицу в базе, в которой будут следующие поля:
 +
 +ID - Уникальный порядковый номер \\
 +PHONE - Номер телефона клиента\\
 +NAME - Имя клиента\\
 +AGENT - Внутренний номер сотрудника\\
 +
 +После создания таблицы с этими полями можно будет ​
 +
 +Добавляем запрос в //​**func_odbc.conf**//​ \\
 +<​code>​
 +[GET_DATA_FB]
 +dsn=aster
 +read=SELECT phone,​name,​agent FROM имя_базы.таблица WHERE phone="​${CALLERID(num)}"​
 +</​code>​
 +
 +Далее правим входящий звонок //​**extensions.conf**//​
 +
 +<​code>​
 +[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()
 +</​code>​
 +
 +Для удобства заполнения номеров,​ накидал небольшую форму.
 +
 +
 +Создаем файл //​**connect.php**//​
 +
 +<​code>​
 +<?php
 +mysql_connect("​localhost",​ "​Логин",​ "​Пароль"​) //​параметры в скобках ("​хост",​ "​имя пользователя",​ "​пароль"​)
 +or die("<​p>​Ошибка подключения к базе данных! " . mysql_error() . "</​p>"​);​
 +
 +mysql_select_db("​asteriskcdrdb"​)//​параметр в скобках ("​имя базы, с которой соединяемся"​)
 + or die("<​p>​Ошибка выбора базы данных! ". mysql_error() . "</​p>"​);​
 +?>
 +</​code>​
 +
 +Создаем файл //​**form.php**//​
 +
 +<​code>​
 +<?​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 "​Информация не занесена в базу данных";​
 +}
 +
 +?>
 +</​code>​
 +
 +Ну и завершающий файл //​**fb.html**//​
 +
 +<​code>​
 +<​!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>​
 +</​code>​
dialplan_fb.txt · Последние изменения: 2016/07/18 11:14 — kov