
Суть проста — определять номера телефонов по собственной БД клиентов. Переходная модель до интеграции с CRM.
Сначала создаем таблицу MySQL
CREATE TABLE `companies` ( `name` CHAR(150) NOT NULL, `number` BIGINT UNSIGNED NOT NULL, PRIMARY KEY (`number`) );
И заполняем её клиентами, выгруженными из ваших учетных систем.
Настройка Asterisk с 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 (без FreePBX), то в диалплан нужно добавить строки:
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)
В данном куске конфига подразумевается, что MySQL установлена на самом Asterisk, поэтому считается localhost.