Продолжая использовать наш сайт, вы даете согласие на обработку файлов cookie, которые обеспечивают правильную работу сайта. Благодаря им мы улучшаем сайт!
Принять и закрыть

Читать, слущать книги онлайн бесплатно!

Электронная Литература.

Бесплатная онлайн библиотека.



Главная
Все книги
Назад
Читать: ELASTIX – общайтесь свободно - Владислав Юров на бесплатной онлайн библиотеке Э-Лит


Помоги проекту - поделись книгой:


Теперь в CDR будет сохраняться информация об используемых для входящей связи городских номерах, которые можно увидеть в меню Reports \ CDR Report:


В целях анализа статистики использования городских линий можно выгрузить информацию из CDR в Excename = "note"


Также можно предварительно обработать данные из CDR примерно так:


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


Для подключения к базе CDR указанным выше способом требуется установить phpmyadmin, подключившись по SSH с правами root, выполнить команды:

sudo yum install phpmyadmin

sudo service httpd restart

Подпрограмма соединения звонящего с последним собеседником (SmartCallback)

Не редко мы пытаемся с офисного телефона позвонить кому-то на мобильный, но абонент оказывается не доступен или занят. Когда искомый нами человек перезванивает по пропущенному вызову, он слышит в ответ название компании, из которой ему звонили, но не всегда может догадаться кому он был нужен. В то же время, Elastix хранит информацию о вызовах и знает разгадку – кто и когда пытался с ним связаться. Если мы, получив такой звонок, соединим абонента с последним, кто ему звонил, скорее всего окажем услугу – сэкономим время обоих. Такой функционал не входит в стандартный набор функций, но может быть относительно просто реализован нами самостоятельно. Для этого потребуется:

• настроить подпрограмму (которую мы назовем SmartCallback) и присвоить ей номер 661234 (файл «extensions_custom.conf»)

• настроить запрос к статистике соединений и назвать его «LASTCALL» (файл «func_odbc.conf»)

• настроить подключение к базе данных CDR со статистикой соединений (файлы «res_odbc.conf» и «/etc/odbc.ini»)

• настроить Собственную функцию (Misc Destination) «SmartCallback» и присвоить ей вызов подпрограммы «661234»

• настроить Внутреннюю функцию (Misc Application) «NoSmartCallback», присвоив ей номер «601234», чтобы переключать на нее вызовы, не обработанные функцией «SmartCallback»

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

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

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

• в синтаксисе настраиваемого плана набора (файл «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»

Создание запроса к 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»


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

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



Поделиться книгой:



Регистрация