Курсы по использованию Asterisk

IP-телефония — технология будущего. Обучитесь работе с IP-АТС Asterisk для того чтобы внедрить и профессионально использовать при решении коммуникационных задач.

Работайте с Asterisk профессионально!

Многоуровневая защита IP-АТС Asterisk

Телефонные станции очень часто становятся объектами хакерских атак. Узнайте, каким образом необходимо строить многоуровневую защиту для Вашей IP-АТС.

Не оставьте хакерам шансов. Защитите свой Asterisk от атак.

Используйте Веб-Интерфейс для удобства настройки

Панель управление FreePBX позволяет легко и удобно управлять всей системой. Научитесь эффективно использовать FreePBX для решения своих задач.

Управление станцией и статистика в окне браузера.

Научитесь работать с Asterisk из консоли

Для понимания работы с Asterisk необходимо уметь настраивать его вручную с конфигурационными файлами и командной строкой CLI Asterisk.

Научитесь «тонкой» настройке Asterisk

Цель курсов - максимум практики.

Обучение нацелено на практическую работу с IP-оборудованием: платы потоков E1, VoIP-телефонные аппараты, голосовые шлюзы FXS и прочее.

Обучение на реальном оборудовании — залог успеха.

Постоянный повторный набор номера до ответа

База знаний Настройка Asterisk

В этой статье будет описан простой сервисный код для постоянного набора номера до ответа. Такую функцию удобно использовать для дозвона на номера, которые часто бывают заняты - если от провайдера придёт ответ «занято», вызов тут же будет повторён снова.

Для начала нужно сделать возможным возврат из контекста, который используется для набора номера через транк провайдера. Пример - в FreePBX для набора номера через транк провайдера используется контекст macro-dialout-trunk, для возврата из этого контекста после неудачного набора, достаточно добавить условный вызов MacroExit после вызова Dial:

 

[macro-dialout-trunk]
...
exten => s,n(skipoutnum),Dial(${pre_num:4}${the_num}${post_num},${TRUNK_RING_TIMER},${DIAL_TRUNK_OPTIONS})
exten => s,n,ExecIf($["${RETURN_AT_ONCE}"="true"]?MacroExit())
...
 

(Для редактирования контекста macro-dialout-trunk скопируйте его в файл /etc/asterisk/extensions_override_freepbx.conf и внесите необходимые изменения)
Как видите, если установить переменную RETURN_AT_ONCE=true перед вызовом макроса dialout-trunk, сразу после попытки вызова номера управление вернётся в тот контекст, откуда вы вызвали макрос.

 

Теперь с помощью этого нехитрого приёма можно реализовать описываемый сервисный код. При реализации в FreePBX можно написать диалплан сервисного кода в отдельном контексте в файле /etc/asterisk/extensions_custom.conf и включить этот контекст в from-internal-custom:

 
[from-internal-custom]
include => app-redial-number
 
[app-redial-number]
exten => _*20849[589]XXXXXXX,1,Set(DIAL_NUM=${EXTEN:3})
same  => n,Macro(user-callerid)
same  => n,Set(RETURN_AT_ONCE=true)
same  => n,Set(REPEAT_COUNT=-1)
same  => n(repeat_dial),Set(REPEAT_COUNT=$[${REPEAT_COUNT} + 1])
same  => n,ExecIf($[${REPEAT_COUNT} > ${REPEATED_DIAL_MAX}]?Macro(hangupcall))
same  => n,GotoIf($[${REPEAT_COUNT} <= 0]?first_time)
same  => n,Progress()
same  => n,Wait(1)
same  => n,SayNumber(${REPEAT_COUNT})
same  => n(first_time),Set(DIALSTATUS=)
same  => n,Macro(dialout-trunk,10,${DIAL_NUM}) ; 10 в строке выше - идентификатор транка в FreePBX. Узнать идентификатор транка можно либо в таблице trunks БД FreePBX или в файле /etc/asterisk/extensions_additional.conf (в разделе [globals] описаны переменные OUT_<номер>=<технология>/<имя транка>, <номер> в имени переменной - идентификатор транка).
same  => n,ExecIf($["${DIALSTATUS}" = "ANSWER"]?Macro(hangupcall))
same  => n,GotoIf($["${DIALSTATUS}" = "BUSY"]?repeat_dial)
same  => n,GotoIf($["${DIALSTATUS}" = "NOANSWER"]?repeat_dial)
same  => n,Macro(dialout-trunk,11,${DIAL_NUM})
same  => n,ExecIf($["${DIALSTATUS}" = "ANSWER"]?Macro(hangupcall))
same  => n,Goto(repeat_dial)
 

В диалплане упоминается переменная REPEATED_DIAL_MAX - максимальное число повторов, эту глобальную переменную нужно описать в файле /etc/asterisk/globals_custom.conf:

 

REPEATED_DIAL_MAX=128

 

Чтобы задействовать описанный выше сервисный код, нужно набрать московский городской номер с префиксом *20.
В приведённом выше примере для вызова используется два транка по очереди, если после вызова через первый транк оператор вернул «занято» или на вызов не ответили, вызов будет повторён сразу. Если результат вызова другой (например транк недоступен или все линии заняты), будет попытка прозвона через второй транк. Для удобства, перед каждой попыткой кроме первой, абоненту объявляется номер попытки.

asterisk, FreePBX, Time, callerid