Asterisk/FreePBX: Интеграция определителя номера с базой клиентов в MySQL

Суть проста — определять номера телефонов по собственной БД клиентов. Переходная модель до интеграции с 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.

Добавить комментарий