Джим Меггелен - Asterisk™: будущее телефонии Второе издание Страница 25
- Категория: Компьютеры и Интернет / Программное обеспечение
- Автор: Джим Меггелен
- Год выпуска: неизвестен
- ISBN: нет данных
- Издательство: неизвестно
- Страниц: 136
- Добавлено: 2019-06-19 14:52:37
Джим Меггелен - Asterisk™: будущее телефонии Второе издание краткое содержание
Прочтите описание перед тем, как прочитать онлайн книгу «Джим Меггелен - Asterisk™: будущее телефонии Второе издание» бесплатно полную версию:Джим Меггелен - Asterisk™: будущее телефонии Второе издание читать онлайн бесплатно
channel => 1 ; Телефон подключается к порту 1
context=incoming ; Входящие вызовы направляются в контекст [incoming],
; описанный в extensions.conf signalling=fxs_ks ; Для канала FXO используется протокол обмена сигналами FXS channel => 2 ; PSTN подключается к порту 2
Конфигурация диалплана
Мы воспользуемся простейшим диалпланом, сконфигурированным ранее в данной главе для тестирования FXS-порта с помощью приложения Echo(). Соответствующий раздел, который уже должен присутствовать в диалплане, выглядит следующим образом:
[internal]
exten => 500,1,Verbose(1|Echo test application) exten => 500,n,Echo() exten => 500,n,Hangup()
[phones]
include => internal Приложение Echo() будет возвращать все, что вы скажете.
Конфигурация SIP-телефонов
Протокол Session Initiation Protocol (SIP)[60], обычно применяемый в VoIP-телефонах (как аппаратных, так и программных), отвечает за установку и разъединение соединения, а также за любые изменения, происходящие во время соединения, такие как переадресации. Назначение SIP - помочь двум конечным точкам поговорить друг с другом (по возможности напрямую). Протокол SIP - это просто протокол обмена сигналами, то есть его задачей является лишь обеспечить возможность двум конечным точкам говорить друг с другом, но не работа с носителем вызова (голосом). Передача голоса осуществляется с помощью другого протокола - Real-Time Transport Protocol (транспортный протокол реального времени - RTP; RFC 3550) - для передачи медиа-данных непосредственно между двумя конечными точками.
Термин «медиа-данные» используется здесь для обозначения данных, передаваемых между конечными точками и используемых для воссоздания голоса на противоположном конце провода. Также он может использоваться в случае воспроизведения музыки или голосовых сообщений офисной АТС.
В мире SIP конечные точки называются агентами пользователя, которые могут быть двух типов: клиент и сервер. Клиент - это конечная точка, формирующая запрос, а сервер обрабатывает этот запрос и формирует ответ. Когда конечная точка желает выполнить вызов другой конечной точки (например, наш программный телефон звонит на другой программный телефон), она формирует запрос и отправляет его на прокси-сервер SIP[61]. Прокси-сервер принимает запрос, определяет его место назначения и направляет его туда. Если два агента пользователя успешно договорились и установили вызов, переносимый сигнал передается по RTP-протоколу и пересылается непосредственно от одного агента пользователя другому. SIP-прокси не обрабатывают медиа-данные; они просто работают с SIP-пакетами.
С другой стороны, Asterisk называют Back-To-Back User Agent (B2BUA). Это означает, что Asterisk действует как агент пользователя или в роли сервера (принимающий), или в роли клиента (посылающий). Итак, когда программный телефон звонит на добавочный номер, соединение устанавливается непосредственно между программным телефоном и Asterisk. Если логика, реализованная в Asterisk, определяет, что вызов адресован другому агенту пользователя, Asterisk действует как клиент и устанавливает другое соединение (известное как канал) с другим телефоном. При этом медиа-информация передается от телефона к телефону прямо через Asterisk[62]. С точки зрения телефонов они взаимодействуют непосредственно с Asterisk.
Базовая конфигурация SIP-телефонов в Asterisk
Конфигурация SIP-телефона для работы с Asterisk не требует много усилий и времени. Однако здесь можно легко запутаться из-за обилия опций как в Asterisk, так и в конфигурации конкретного телефонного аппарата или программного телефона. Добавьте к этому тот факт, что одни и те же вещи могут называться по-разному, - вот и прекрасный повод для того, чтобы впасть в отчаяние. Поэтому мы собираемся рассмотреть лишь самые основные вопросы. У тех, кто последует нашим советам, должно получиться заставить работать рассматриваемые здесь аппараты (а также уверенно справиться с неупомянутыми здесь телефонами). Мы не говорим, что это лучший или даже верный путь, но это самый простой путь. Намного проще взять уже работоспособную базу и настраивать ее, добиваясь необходимого решения.
Точно так же, как мы делали это для файла extensions.conf, выполните следующие команды в оболочке bash:
# mv sip.conf sip.conf.sample
# touch sip.conf
Определение SIP-устройства в Asterisk
Если внести следующие строки в файл sip.conf, можно будет зарегистрировать телефон в системе.
[general]
[1000] type=friend context=phones host=dynamic
Несимпатично, небезопасно, не обладает гибкостью, неполнофункцио- нально, но это будет работать.
Даже несмотря на то что это SIP-устройство названо 1000 и, вероятно, ему будет присвоен именно этот добавочный номер, следует отметить, что имя устройства может быть произвольным. mysipset, john, 0004f201ab0c - все эти имена действительны, широко используются и даже, возможно, больше отвечают требованиям пользователей1. Главное, чтобы присваиваемое имя было уникальным идентификатором устройства, который станет частью мандата при выполнении вызова по каналу SIP. Поскольку мы хотим как направлять вызовы в программный телефон, так и обеспечить клиенту возможность размещать вызовы, параметр type (тип) был определен как friend (друг). Существует еще два параметра: user (пользователь) и peer (равноправный участник сети). С точки зрения Asterisk user задается для входящих вызовов, а peer - для исходящих звонков (через приложение Dial()). friend - это просто краткая запись, определяющая и пользователя, и равноправного участника. Если есть сомнения, задавайте тип friend.
Опция host (хост) используется для определения местонахождения клиента в сети, когда Asterisk необходимо направить ему вызов. Это значение может быть задано статически, например host=192.168.1.100, или, если клиент имеет динамический IP-адрес, задается host=dynamic. Если для опции host задано значение dynamic и клиент сконфигурирован для автоматической регистрации, Asterisk получит от конечной точки (то есть от телефонного аппарата или программного телефона) пакет REGISTER, из которого Asterisk сможет узнать, какой IP-адрес использует равноправный SIP-участник.
Если вы не доверяете своей сети, вероятно, следует задать пароль. Для этого в описание устройства добавляется следующая строка. Это один из тех параметров, которые не являются обязательными, но желательны:
secret=guessthis
Конфигурация самого устройства
В меню конфигурации телефона (которые могут быть предоставлены через графический веб-интерфейс пользователя, меню самого телефона или, возможно, посредством использования конфигурационных файлов, хранящихся на сервере) уникальный идентификатор (в данном случае 1000) является составной частью мандатов, используемых для процесса аутентификации. Естественно, чтобы соединение было успешным, идентификатор в Asterisk должен совпадать с идентификатором телефонного аппарата. Забавно, что формального названия для этого идентификатора не существует. Мы решили называть его просто уникальным идентификатором.
В SIP RFC (http://www.faqs.org/rfcs/rfc3261.html) в разделе 19.1 этот токен пользователя назван «идентификатором конкретного ресурса хоста, к которому выполняется обращение». Эта формулировка соответствует нашему применению [ 1000 ] в качестве идентификатора аппарата в файле Asterisk sip.conf.
Вероятно, вам привычнее было бы видеть поля user name, auth name, authentication name и т. д. Здесь необходимо помнить, что на стороне Asterisk все сконфигурировано просто и правильно и поэтому можно экспериментировать с настройками телефона, пока не будет найдена работоспособная комбинация. Такой вариант намного лучше, потому что обычно новые пользователи проходят через невероятные мучения, меняя настройки и там и тут, и не могут зарегистрировать телефон.
Повторим еще раз: задайте в sip.conf максимально простую конфигурацию Asterisk и после этого не меняйте ничего. Поверьте, то, что написано здесь, будет работать. Приведите свой телефон в рабочее состояние (то есть чтобы он мог принимать и делать вызовы) и только после этого начинайте экспериментировать с разными настройками. Мы видели слишком много страданий (включая собственные) и хотим положить им конец.
Упрощение sip.conf
Файл sip.conf (который был скопирован в папку /etc/asterisk с помощью команды make samples в предыдущей главе) содержит большое количество опций и документации, но сам файл на самом деле очень небольшой, если убрать из него все закомментированные параметры. Стандартный файл сводится всего лишь к следующим нескольким строкам, незакомментированным по умолчанию: [general]
context=default ; Контекст по умолчанию для входящих ; вызовов
allowoverlap=noallowoverlap=no Отключить поддержку набора номера в режиме overlap. (Значение по умолчанию - yes) bindport=5060 Используемый UDP-порт 5060 (стандартный SIP-порт) bindport - локальный UDP-порт, который будет слушать Asterisk bindaddr=0.0.0.0 Используемый IP-адрес 0.0.0.0 (все доступные адреса) srvlookup=yes Активировать поиск DNS SRV-записей для исходящих вызовов Примечание: Asterisk использует только первый хост в SRV-записях Деактивация поиска DNS SRV-записей отключает возможность размещать SIP-вызовы к другим SIP-пользователям в Интернете на основании доменных имен [authentication]В разделе [general] находятся опции, которые будут применяться ко всем клиентам и каналам SIP. Некоторые настройки задаются только в разделе [general], другие могут задаваться в разделе [general] как применяемые по умолчанию для всех условных инструкций и могут быть переопределены в другом месте. Эти опции перечислены в столбцах [users] и [peers] под заголовком [authentication].
Жалоба
Напишите нам, и мы в срочном порядке примем меры.