Asterisk/FreePBX: Интеграция определителя номера с базой клиентов
Версия от 11:48, 21 января 2016; Sol (обсуждение | вклад) (Новая страница: «Категория:VoIP == Общие приготовления == Сначала нужно создать в БД таблицу: CREATE TABLE `compani…»)
Общие приготовления
Сначала нужно создать в БД таблицу:
CREATE TABLE `companies` ( `name` CHAR(150) NOT NULL, `number` BIGINT UNSIGNED NOT NULL, PRIMARY KEY (`number`) );
и заполнить её списком клиентов, сотрудников и так далее. Этот список без проблем можно импортировать через промежуточный CSV из 1C, Active Directory, различных CRM и адресных книг с помощью множества доступных утилит, от HeidiSQL до PHPMyAdmin, и эта часть не должна создать проблем.
FreePBX
В меню Caller ID Lookup Sources нужно добавить source type: MySQL, прописать адрес сервера, логин, пароль, а в поле query указать:
SELECT name FROM companies WHERE number LIKE CONCAT('%',SUBSTRING('[NUMBER]',-7));
а в меню inbound routes выбрать свежесозданный lookup source из выпадающего списка.
Asterisk communications framework — то есть «чистый» Asterisk
В диалплан следует добавить следующие строки:
exten => foo,n,MYSQL(Connect connid localhost cdr cdrpass asterisk) ; Указываем хост, логин, пароль, БД. exten => foo,n,GotoIf($["${connid}" = ""]?nodb) ; Соединение не удалось exten => foo,n,MYSQL(Query resultid ${connid} SELECT name FROM companies WHERE number="${CALLERID(num)}" LIMIT 1) exten => foo,n,MYSQL(Fetch fetchid ${resultid} name) exten => foo,n,MYSQL(Clear ${resultid}) exten => foo,n,Set(CALLERID(name)=${name}) exten => foo,n,MYSQL(Disconnect ${connid}) exten => foo,n(nodb),NoOp(DoneDB)