Доступ к Очередям и Группам звонков при входящих звонках из города
По умолчанию номера, присвоенные Очередям (Queues) и Группам звонков (Ring Groups) не доступны извне. Абонент, позвонивший из города, не сможет в IVR набрать номер Очереди или Группы звонков и соединиться с ней. Можно для каждой Очереди и Группы звонков создать Виртуальные номера (Virtual Extension), но это непрактично – придется не только поддерживать записи в актуальном состоянии, но и помнить разные номера для звонков из города и с офисного телефона. Это недоразумение легко исправить:
• открыть меню PBX / Tools / Asterisk File Editor
• открыть файл extensions_custom.conf
• добавить три строки
[from-did-direct-ivr-custom]
include => ext-queues
include => ext-group
• сохранить изменения, нажав кнопку Save
• применить настройки, нажав кнопку Reload Asterisk

Определить, что добавить эти строки нужно именно в [from-did-direct-ivr-custom], можно просмотрев файл extensions_additional.conf, создаваемый Elastix после изменения настроек системы – номера всех созданных телефонов прописываются в контексте [from-did-direct-ivr], который включает в себя контекст [from-did-direct-ivr-custom]:

Настройка функции Автодозвона
Следует иметь в виду, что автоматический дозвон до занятого/не доступного абонента создает повышенную нагрузку как на вашу станцию Elastix, так и на сети провайдеров связи (если вызываемый абонент находится вне Elastix). Лучше всего найти способ известить абонента другими способами о необходимости с ним переговорить. Однако, если собеседник не слишком заинтересован в беседе, сотрудникам может помочь функция автодозвона:
• откройте меню PBX / Tools / Asterisk File Editor
• откройте файл extensions_custom.conf
• добавите строки
[from-internal-custom]
include => autoredial
[autoredial]
exten => _99.,1,Dial(Local/${EXTEN:2}@from-internal,40,tr)
exten => _99.,n,GotoIF($["${DIALSTATUS}" == "ANSWER"]?end)
exten => _99.,n,GotoIF($["${DIALSTATUS}" == "ANSWERED"]?end)
exten => _99.,n,GotoIF($[${CDR(billsec)} >0]?end)
exten => _99.,n,Wait(10)
exten => _99.,n,Goto(${EXTEN},1)
exten => _99.,n(end),Hangup
• сохраните изменения, нажав кнопку Save
• примените настройки, нажав кнопку Reload Asterisk

Теперь ваши сотрудники могут набрать префикс "99" перед требуемым номером, нажать "#" и ждать пока абонент поднимет трубку. Elastix будет бесконечно вызывать абонента, ожидать ответа 40 секунд, при отсутствии ответа или при ошибке соединения ждать 10 секунд и повторять набор.
Например:
• "9984956881001#" – поможет дозвониться до техподдержки 1С
• "994123#" – поможет дозвониться до абонента Elastix 4123, если абонент долго висит на трубке, очень нужен, но лишен других, известных Вам, средств связи
Сохранение в CDR рекламного номера
Оплачивая городские номера полезно знать насколько часто каждый из них используется. По умолчанию Elastix сохраняет информацию о том кто звонил и с кем разговаривал, но информация об использованном для входящей связи номере нигде не сохраняется, хотя зачастую известна системе. Один из способов сохранять эту информацию – создать свою подпрограмму (контекст) для обработки входящих вызовов, заполняя в ней поле accountcode, которое сохраняется в CDR (Call Detail Records – детальная информация о звонках). Сделать это достаточно просто:
• откройте меню PBX / Tools / Asterisk File Editor
• откройте файл extensions_custom.conf
• добавьте строки
[from-trunk-accountcode]
exten => _.,1,Set(CDR(accountcode)=i:${EXTEN})
exten => _.,n,Goto(from-trunk,${EXTEN},1)
exten => h,1,Macro(hangupcall,)
• сохраните изменения, нажав кнопку Save
• откройте каждую Внешнюю линию (Trunk) и укажите "from-trunk-accountcode" в поле "USER Context"

• примените настройки, нажав "Apply Configuration Changes Here"

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

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

Также можно предварительно обработать данные из 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: