• настроить в правилах входящей связи (Inbound Routes) вызов Собственной функции (Misc Destination) «SmartCallback»

<p>Настройка подпрограммы (контекста) SmartCallback</p>

Собственные функции можно писать разными способами:

• в синтаксисе настраиваемого плана набора (файл «extensions_custom.conf»)

• на языке AEL (Asterisk Extension Language) (файл «extensions.ael»)

• на PHP или на другом языке, используя функцию AGI (Asterisk Gateway Interface)

Наша задача легко решается использованием файла «extensions_custom.conf». Для редактирования требуется открыть меню PBX / Tools / Asterisk File Editor:

открыть для редактирования «extensions_custom.conf» и добавить в него подпрограмму (контекст) [SmartCallback] с номером «661234»:

[SmartCallback]

exten => 661234,1,SET(CALL2B=${ODBC_LASTCALL(${CALLERID(number)})})

exten => 661234,n,Set(DIAL=${DB(DEVICE/${CALL2B}/dial)})

exten => 661234,n,GotoIf($["${DIAL}" = ""]?nfound)

exten => 661234,n,Set(CDR(accountcode)=B:${CDR(accountcode)})

exten => 661234,n,DIAL(${DIAL},12,)

exten => 661234,n,GotoIf($["s${DIALSTATUS}" = "sANSWER"]?endcon)

exten => 661234,n(nfound),Goto(601234,1)

exten => 661234,n(endcon),Hangup()

[ext-did-custom]

include => SmartCallback

Наша функция:

• вызывает еще не созданный нами запрос к статистике вызовов под названием «LASTCALL» (запросу передаем номер звонящего – «CALLERID(number)»)

• находит как следует сделать набор абонента, который вызывал звонящего последним

• добавляет к полю «accountcode» префикс «B:», чтобы в статистике сохранилась информация, что вызов был переключен на сотрудника нашей подпрограммой «SmartCallback»

• пытается в течение 12 секунд вызвать найденного абонента

• если абонент не найден или не ответил, переключает на еще не созданный номер «601234»

<p>Создание запроса к CDR</p>

Описания запросов хранятся в файле «func_odbc.conf», который по аналогии открываем через меню PBX / Tools / Asterisk File Editor и добавляем следующий текст:

[LASTCALL]

dsn=getcdr

readsql=SELECT src FROM cdr WHERE calldate > CURDATE() – 2 AND RIGHT(dst,10) = RIGHT('${SQL_ESC(${ARG1})}',10) ORDER BY calldate DESC LIMIT 0,1

Здесь «getcdr» – название еще не созданного источника данных, ARG1 – номер звонящего абонента. Чтобы учесть разные способы набора номера, используем последние 10 цифр от номера абонента («RIGHT(…,10)»). Поскольку в статистике могут храниться очень старые вызовы, ограничиваем поиск последними двумя днями («CURDATE() – 2»). Сортируем историю вызовов от последнего звонка к более старым («ORDER BY calldate DESC») и возвращаем первую из найденных записей («LIMIT 0,1»).

<p>Настройка источника данных в Asterisk</p>

Описание подключений к ресурсам баз данных Asterisk хранит в файле «res_odbc.conf». В этот файл следует добавить следующие строки:

[getcdr]

enabled => yes

dsn => asterisk-getcdr

pre-connect => yes

isolation => read_uncommitted

Таким образом мы сообщаем Asterisk, что:

• источник активен и может быть использован («enabled => yes»)

• в операционной системе следует найти подключение с именем «asterisk-getcdr»

• для ускорения доступа следует всегда держать открытым соединение с базой данных («pre-connect => yes»)

• для исключения блокировок и для ускорения доступа следует читать данные из базы не дожидаясь завершения других транзакций («isolation => read_uncommitted»)

<p>Настройка источника данных в CentOS</p>

Описание подключений к ресурсам баз данных CentOS, на которой работает Elastix, хранит в файле «/etc/odbc.ini». Для редактирования этого файла требуется подключиться к Elastix по протоколу SSH от имени пользователя «root». В Windows для этого можно использовать бесплатную программу Putty. После подключения к Elastix по SSH следует открыть файл «/etc/odbc.ini», используя, например, редактор «nano»:

nano /etc/odbc.ini

В этот файл следует добавить следующие строки:

[asterisk-getcdr]

Description=MySQL ODBC Driver for CDR DB

Driver=MySQL

Server=localhost

User=asteriskuser

Password=VeryStrongPassword

Database=asteriskcdrdb

Option=3

Port=3306

Вместо «VeryStrongPassword» укажите созданный при установке Elastix пароль подключения к базе данных mySQL. Если уже не помните его, подсмотрите его в файле «/etc/amportal.conf» в строке «AMPDBPPASS=».

<p>Настройка Собственной функции (Misc Destination) «SmartCallback»</p>
Перейти на страницу:

Поиск

Похожие книги