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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Определение абонента, который первым повесил трубку

База знаний Настройка Asterisk
В данной статье будет рассмотрен способ, который позволяет понимать и фиксировать, кто из абонентов первый кладет трубку.
Многие знают способ, когда используются логи очередей Asterisk на предмет событий COMPLETECALLER и COMPLETEAGENT. Конечно, это хороший способ, но он подходит только для входящих вызовов, поступающих на очередь, а что делать, если вызов исходящий или вызов приходит напрямую на телефон, минуя логику очередей?! В этом нам поможет использование переменной CHANNEL(hangupsource).

И так, что же делает переменная CHANNEL(hangupsource). Она позволяет отслеживать Астериску, какой канал вызвал завершение вызова. После завершения вызова при использовании данной переменной, она будет содержать имя канала или приложение, которое инициировало данное завершение (SIP BYE).

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

[outbound]
exten => 8XXXXXXXXXX,1,NoOp(начало исходящего вызова)
same => n,Dial(SIP/operator/${EXTEN},60,tTr)
same => n,NoOp(конец исходящего вызова)
same => n,Hangpup()


Что потребуется сделать теперь? Нужно в этот контекст добавить экстен h, в котором мы и будем смотреть имя канала, инициировавший завершение разговора с помощью переменной CHANNEL(hangupsource). Теперь добавляем следующую строку в наш контекст:

[outbound]
exten => 8XXXXXXXXXX,1,NoOp(начало исходящего вызова)
same => n,Dial(SIP/operator/${EXTEN},60,tTr)
same => n,NoOp(конец исходящего вызова)
same => n,Hangpup()
exten => h,1,NoOp(hangupsource = ${CHANNEL(hangupsource)})


Теперь после завершения вызова вы увидите имя канала, который завершил вызов. Выглядеть это будет примерно так:

Имя канала, который завершил вызов. Asterisk
Если вы хотите, чтобы по завершению всех разговоров у вас была информация об имени канала, завершившего разговор, то переменную CHANNEL(hangupsource) нужно прописывать в каждый контекст, в котором у вас происходит Dial.
Если у вас настроен CDR, то данную информацию можно отражать в нем, например, в поле userfield, для этого нужно использовать приложение CDR

exten => h,1,Set(CDR(userfield)=${CHANNEL(hangupsource)})




asterisk, sip, Channel