Владислав Юров - ELASTIX общайтесь свободно стр 26.

Шрифт
Фон

Владислав Юров - ELASTIX - общайтесь свободно

открыть для редактирования "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"

Создание запроса к CDR

Описания запросов хранятся в файле "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").

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

Описание подключений к ресурсам баз данных 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")

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

Описание подключений к ресурсам баз данных 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=".

Настройка Собственной функции (Misc Destination) "SmartCallback"

Чтобы использовать созданную подпрограмму "SmartCallback" требуется настроить Собственную функцию (Misc Destination) "SmartCallback":

• открыть меню "PBX / Misc Destinations"

• добавить ссылку на подпрограмму:

Destination – удобное для администратора Elastix название функции, можно назвать как и подпрограмму – "SmartCallback"

Dial – номер "661234", присвоенный подпрограмме "SmartCallback"

Владислав Юров - ELASTIX - общайтесь свободно

Настройка Внутренней функции (Misc Application) "NoSmartCallback"

Чтобы при невозможности обнаружить абонента для соединения можно было направить звонок по другому направлению, необходимо создать функцию, имеющую цифровой код, чтобы ее было легко вызвать из подпрограммы "SmartCallback". Для этого следует:

• открыть меню "PBX / Misc Applications"

• присвоить функции цифровой номер:

Description – удобное для администратора Elastix название функции, можно назвать как "NoSmartCallback"

Feature Code – цифровой номер "601234", который может быть вызван из подпрограммы "SmartCallback"

Destination – направление, куда будет направлен вызов

Владислав Юров - ELASTIX - общайтесь свободно

Настройка правила входящей связи для "SmartCallback"

Чтобы Elastix могла соединить звонящего с абонентом, который вызывал его последним, необходимо настроить с правилах входящей связи (Inbound Routes) вызов Собственной функции (Misc Destination) "SmartCallback":

Владислав Юров - ELASTIX - общайтесь свободно

Проделайте аналогичные изменения во всех правилах входящей связи, в которых необходимо использование функции "SmartCallabck", и примените сделанные в Elastix изменения, нажав сверху ссылку "Apply Configuration Changes Here".

Попробуйте позвонить с офисного телефона на свой мобильный, не снимайте трубку на мобильном, затем перезвоните с мобильного на пропущенный вызов. Elastix сразу же соединит вызов с тем телефоном, с которого Вы звонили на свой мобильный. Если что-то не сработало, проверьте работу функции ODBC_LASTCALL (описано дальше). Если функция ODBC_LASTCALL работает исправно, варианты следующие:

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

• номер вашего мобильного номера не передается в Elastix оператором связи (проверьте историю звонков в меню "Reports / CDR Report")

Проверка функции ODBC_LASTCALL

После проделанных выше изменений в Elastix можно проверить работу функции LASTCALL:

• перезагрузите настройки Asterisk:

• откройте меню "PBX / Tools"

• наберите команду "core reload", чтобы применить сделанные изменения

ELASTIX - общайтесь свободно

• выполните поиск абонента, который последним звонил из офиса, например, по номеру "74999686408", выполнив команду "odbc read ODBC_LASTCALL 74999686408 exec":

ELASTIX - общайтесь свободно

Если запрос вернул желаемый результат, когда из города позвонят с номера "74999686408", станция сможет его соединить с абонентом "7724".

Подключение Elastix к глобальным телекоммуникационным сетям

Подключение к ТФОП через аналоговые линии

Многие телеком-провайдеры до сих пор не могут предложить своим абонентам подключение по протоколу SIP. Для подключения Elastix к таким провайдерам по аналоговым линиям используются шлюзы FXO-SIP или FXO-IAX2.

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке