Чтение онлайн

ЖАНРЫ

Asterisk™: будущее телефонии Второе издание
Шрифт:

Для Торонто:

[2001] type=friend host=dynamic context=phones

Далее сконфигурируем программный телефон IAX2 для регистрации в Asterisk. Если телефон успешно зарегистрирован, в командной строке будет выведено примерно следующее сообщение:

*CLI> -- Registered IAX2 '1001' (UNAUTHENTICATED) at 192.168.1.104:4569

Конфигурация диалплана

Чтобы обеспечить возможность установления соединения между двумя серверами Asterisk по магистральному каналу IAX2, необходимо сконфигурировать простой диалплан. Представленный диалплан будет направлять вызовы на все добавочные номера в

диапазоне 1000 (от 1000 до 1999) на сервер Осака и вызовы на все добавочные номера в диапазоне 2000 (от 2000 до 2999) на сервер Торонто. В данном примере предполагается, что сконфигурирована пара программных телефонов IAX2, но если в вашем распоряжении имеется SIP-телефон (или

два), можно использовать и его. Просто помните, что в этом случае понадобится изменить приложение Dial так, чтобы вызовы направлялись на SIP-телефон по SIP-протоколу, а не IAX2 (то есть строку

Dial(IAX2/${EXTEN},30) необходимо заменить на Dial(SIP/${EXTEN},30)). Файл extensions.conf для Торонто:

[globals]

[general]

autofallthrough=yes [default] [incoming_calls] [phones]

include => internal include => remote

[internal]

exten => _1XXX,1,NoOp

exten => _1XXX,n,Dial(IAX2/${EXTEN},30)

exten => _1XXX,n,Playback(the-party-you-are-calling&is-curntly-unavail) exten => _1XXX,n,Hangup

[remote]

exten => _2XXX,1,NoOp

exten => _2XXX,n,Dial(IAX2/toronto/${EXTEN}) exten => _2XXX,n,Hangup

[toronto_incoming] include => internal

Файл extensions.conf для Осаки:

[globals]

[general]

autofallthrough=yes [default] [incoming_calls] [phones]

include => internal include => remote

[internal]

exten => _2XXX,1,NoOp

exten => _2XXX,n,Dial(IAX2/${EXTEN},30)

exten => _2XXX,n,Playback(the-party-you-are-calling&is-curntly-unavail) exten => _2XXX,n,Hangup

[remote]

exten => _1XXX,1,NoOp

exten => _1XXX,n,Dlal(IAX2/osaka/${EXTEN})

exten => _1XXX,n,Hangup

[osaka_lncomlng] include => internal

Использование шаблонов в конфигурационных файлах

С конфигурационными файлами Asterisk связан один очень малоизвестный факт, но он настолько замечательный, что заслуживает отдельного небольшого раздела.

Скажем, имеется 20 SIP-телефонов, практически идентичных с точки зрения конфигурации. Согласно документации они должны описываться путем задания параметров для каждого телефона в отдельности. Фрагмент подобного файла sip.conf мог бы выглядеть так:

[1000]

type=friend

context=internal

host=dynamic

disallow=all

allow=ulaw

dtmfmode=rfc2833

maibox=1000

secret=AllYourSetsAreBelongToUs

[1001]

type=friend

context=internal

host=dynamic

disallow=all

allow=ulaw

dtmfmode=rfc2833

maibox=1001

secret=AllYourSetsAreBelongToUs

[1002]

type=friend

context=internal

host=dynamic

disallow=all

allow=ulaw

dtmfmode=rfc2833

maibox=1002

secret=AllYourSetsAreBelongToUs

Слишком

много ввода текста, копирования и вставки, правда? А что если требуется изменить имя контекста для телефонов. Не очень удобно, не так ли?

Вводим шаблон. Давайте создадим таких же участников сети типа friend, как делали выше, только на этот раз используя шаблон:

[sets](!) ; <== обратите внимание, восклицательный знак ; взят в круглые скобки. Это признак шаблона. type=friend context=internal host=dynamic disallow=all allow=ulaw dtmfmode=rfc2833 secret=AllYourSetsAreBelongToUs

1000] (sets) ; <== обратите внимание, имя шаблона взято

; в круглые скобки. Все настройки этого шаблона ; будут унаследованы.

maibox=1000

1001] (sets) maibox=1001

1002] (sets) maibox=1002

Это одна из самых малоизвестных возможностей создания конфигурационного файла. Очень немногие пользуются этой возможностью, но лишь потому, что мало кто знает о ней. Итак, пришло время перемен. С этого момента мы хотим видеть, что шаблонами пользуются все; и да, мы будем проверять.

Отладка

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

Подключение к консоли

Чтобы подключиться к консоли Asterisk, можно или запустить сервер непосредственно из консоли (в этом случае невозможно будет выйти из консоли, не завершив работу Asterisk), или запустить Asterisk как демон и затем подключиться к удаленной консоли.

Чтобы запустить процесс Asterisk непосредственно из консоли, используйте флаг консоли: # /usr/sbin/asterisk -c

Чтобы подключиться к удаленной консоли, сначала запустите демон, а затем выполните подключение, используя флаг -r:

# /usr/sbin/asterisk

# /usr/sbin/asterisk -r

Если какой-то модуль не загружается или Asterisk не загружается из- за какого-то модуля, запустите Asterisk с флагом -c, чтобы отслеживать статус загружаемых модулей. Например, если при попытке загрузить драйвер канала OSS (который позволяет использовать канал CONSOLE (консоль)) Asterisk не может открыть /dev/dsp, при запуске будет получено сообщение о такой ошибке:

WARNING[32174]: chan_oss.c:470 soundcard_init: Unable to open /dev/dsp:

No such file or directory

== No sound card detected -- console channel will be unavailable

== Turn off OSS support by adding 'noload=chan_oss.so' in /etc/asterisk/ modules.conf

WARNING[32174]: chan_oss.c:470 soundcard_init: Не получается

открыть /dev/dsp:

Файл или каталог не существует

== Звуковая карта не найдена - канал консоли будет недоступен

== Отключите поддержку OSS, добавив 'noload=chan_oss.so' в /etc/asterisk/modules.conf

Поделиться с друзьями: