Глава 9. Интернационализация
Дэвид Дюффетт
Английский? Кто должен тратить время на его изучение? Я никогда не поеду в Англию!
– Дэн Касталланета
Телефония - одна из тех сфер жизни, где люди не любят сюрпризов, будь они дома или на работе. Когда люди пользуются телефонами, все, что выходит за рамки нормы, не оправдывается, и, как человек, который, вероятно занимается поставками телефонных систем, вы будете знать, что неудовлетворенные ожидания могут привести к неописуемым страданиям с точки зрения дополнительной работы, потерянных денег и других проблем, связанных с недовольством клиентов.
Помимо того, что пользовательский интерфейс соответствует тому, что ожидают пользователи, также необходимо, чтобы ваш Asterisk чувствовал себя «как дома». Например, если исходящий вызов сделан по аналоговой линии (FXO), Asterisk будет нужно интерпретировать тоны, которые он «слышит» на линии (занято, вызов и т.д.).
По умолчанию (а возможно, как и следовало бы ожидать, поскольку он был “рожден в США”), Asterisk настроен на работу в Северной Америке. Однако, поскольку Asterisk развертывается во многих местах и (к счастью) люди со всего мира вносят свой вклад в него, вполне возможно настроить Asterisk для правильной работы практически в любом месте, где вы решите его развернуть.
Если вы читали эту книгу с самого начала - глава за главой, вы уже сделали некоторый выбор во время установки и начальной конфигурации, которая настроила ваш Asterisk для работы в вашем регионе (и оправдает ожидания ваших клиентов).
Довольно много глав в этой книге содержат информацию, которая поможет вам интернационализировать1 или (возможно, более правильно) локализовать вашу реализацию Asterisk. Цель этой главы - обеспечить единое место, куда можно будет ссылаться, обсуждать и объяснять все аспекты изменений, которые необходимо внести в телефонную систему на базе Asterisk в этом контексте. Причина использования фразы “телефонная система на основе Asterisk”, а не просто” Asterisk”, заключается в том, что некоторые изменения необходимо будет внести в другие части системы (IP-телефоны, ATAs и т. д.), в то время как другие изменения будут реализованы в конфигурационных файлах Asterisk и DAHDI.
Давайте начнем с составления списка (не в определенном порядке) вещей, которые возможно потребуется изменить для оптимизации вашей телефонной системы на основе Asterisk для данного местоположения за пределами Северной Америки. Вы можете выкрикнуть что-нибудь ещё, если хотите.…
- Язык/акцент подсказок
- Физическое подключение для интерфейсов ТфОП (FXO, BRI, PRI)
- Тоны, слышимые пользователями IP-телефонов и/или ATA
- Формат идентификатора вызывающего абонента (CallerID), передаваемый и/или принимаемый аналоговыми интерфейсами
- Сигналы для аналоговых интерфейсов, подаваемые или определяемые Asterisk
- Формат меток времени/даты для голосовой почты
- Способ, которым вышеуказанные метки времени/даты объявляются системой Asterisk
- Шаблоны в диалплане (IP-телефонов, ATA и самой Asterisk, если вы используете образец диалплана)
- Способ указания аналоговому устройству об ожидании голосовой почты (MWI)
- Тоны, подаваемые абонентам Asterisk (они вступают в игру, когда пользователь находится “внутри “ системы; например, тоны, услышанные во время трансфера вызова)
Мы рассмотрим все в этом списке, приняв стратегию работы от внешнего края системы к самому ядру (самой Asterisk). Мы закончим с удобным контрольным списком того, что вам может понадобится изменить и где это сделать.
Хотя принципы, описанные в этой главе, позволят вам адаптировать установку Asterisk специально для вашего региона (или для вашего клиента), для обеспечения согласованности все наши примеры будут сосредоточены на том, как адаптировать Asterisk для одного региона: Соединенного Королевства.
Внешние устройства по отношению к серверу Asterisk
Существуют огромные различия между хорошим старомодным аналоговым телефоном и любым из большого количества IP-телефонов, и нам нужно подобрать одно из действительно фундаментальных различий, чтобы пролить свет на следующее объяснение, которое охватывает настройки, которые нам, возможно, придется изменить на устройствах, внешних по отношению к Asterisk, таких как IP-телефоны.
Вы когда-нибудь задумывались о том, что аналоговый телефон - это совершенно немое устройство (мы знаем, что базовая модель очень, очень дешевая), которое должно подключаться к интеллектуальной сети (ТфОП), тогда как IP-телефон (например, SIP или IAX2) - это очень умное устройство, которое подключается к немой сети (Интернет или любая обычная IP-сеть)? Рисунки 9-1 и 9-2 проиллюстрируют разницу.
Рисунок 9-1. Старые времена: немые устройства подключаются к умной сети
Рисунок 9-2. Ситуация на сегодняшний день: умные устройства подключаются через немую сеть
Можем ли мы взять два аналоговых телефона, подключить их непосредственно друг к другу и иметь функциональность, которую мы обычно связываем с обычным телефоном? Нет, конечно нет, потому что сеть предоставляет все: фактическое питание телефона, сигнал вызова (от местной станции или центрального офиса), информацию об идентификаторе вызывающего абонента (CallerID), сигнал вызова (от удаленной [ближайшего к телефону назначения] станции или ЦО), всю необходимую сигнализацию и так далее.
И наоборот, можем ли мы взять два IP-телефона, подключить их непосредственно друг к другу и получить некоторую разумную функциональность? Конечно можем, потому что весь интеллект находится внутри самих IP—телефонов - они обеспечивают тоны, которые мы слышим (сигнал вызова, звонок, занято) и запускают протокол, который выполняет всю необходимую сигнализацию (обычно SIP). Фактически, вы можете попробовать это для себя - большинство средних IP-телефонов имеют встроенный коммутатор Ethernet, поэтому вы можете подключить два IP-телефона непосредственно друг к другу с помощью обычного (прямого) кабеля Ethernet или просто подключить их через обычный коммутатор. Они должны иметь фиксированные IP-адреса в отсутствие DHCP-сервера, и вы сможете набрать IP-адрес другого телефона, просто используя клавишу * для точек в адресе.
Рисунок 9-2 указывает на тот факт, что на IP-телефоне мы несем ответственность за настройку всех тонов, которые предоставила бы сеть в былые времена. Это можно сделать одним (по крайней мере) из двух способов. Первый заключается в настройке тонов, предоставляемых IP-телефоном на собственном веб-интерфейсе устройства. Вы делаете это, просматривая IP-адрес телефона (IP-адрес обычно можно получить с помощью опции меню на телефоне), а затем выбрав соответствующие параметры. Например, на IP-телефоне Yealink тоны устанавливаются на странице веб-графического интерфейса Телефон под вкладкой Тоны (где вы найдете список различных типов тонов, которые можно изменить — в случае Yealink это набор, КПВ, занято, перегрузка, ожидание вызова, повторный вызов, запись, информация, заикание, сообщение и автоответ).
Другой способ, которым эта конфигурация может быть применена - это автоматическое предоставление телефону этих настроек. Полное объяснение механизма автопровижинга выходит за рамки этой книги, но как правило вы можете настроить тоны в соответствующих атрибутах необходимых элементов в XML-файле.
В то время как мы меняем настройки на IP-телефонах, есть еще две вещи, которые может потребоваться изменить, чтобы телефоны выглядели правильно и функционировали как часть системы.
Большинство телефонов отображают время в режиме ожидания, и, поскольку многие люди находят это особенно раздражающим, когда их телефоны показывают неправильное время, мы должны убедиться, что отображается правильное местное время. Должно быть довольно легко найти соответствующую страницу веб-интерфейса (или атрибутов XML) для указания сервера синхронизации времени. Вы также обнаружите что есть настройки для перехода на летнее время и другие важные вещи.
Последнее, что нужно изменить - это потенциальный showstopper, когда речь идет о телефонном звонке - диалплан. Мы говорим не о диалплане, который находится в /etc/asterisk/extensions.conf, а о диалплане телефона. Не все понимают что IP-телефоны также имеют схемы набора номеров, хотя эти диалпланы больше связаны с тем, какие строки набора разрешены, чем с тем, что делать с данным набором.
Общее правило, по-видимому, заключается в том, что если вы набираете при положенной трубке - встроенная схема набора номера проигнорируется, но если вы поднимаете трубку - в игру вступает диалплан телефона и может случиться так, что диалплан не позволит набрать необходимую строку. Хотя эта проблема может проявляться в отказе телефона передавать определенные типы номеров в Asterisk, она также может повлиять на любые коды функций, которые вы планируете использовать. Это может быть легко исправлено путем поиска номера модели телефона вместе с «UK dialplan» (или конкретным нужным вам регионом) или вы можете перейти на соответствующую страницу в веб-интерфейсе пользователя и там либо вручную настроить диалплан, либо выбрать страну из выпадающего списка (в зависимости от типа телефона, с которым вы работаете).
Предварительное обсуждение конфигурации IP-телефона также относится к любым аналоговым телефонным адаптерам (ATA), которые вы планируете использовать, в частности к тем, которые поддерживают интерфейс FXS. Кроме того, может потребоваться указать некоторые электрические характеристики телефонного интерфейса, такие как линейное напряжение и импеданс, а также формат идентификатора вызывающего абонента, который будет работать с локальными телефонами. Все, что отличается - это способ получения IP-адреса для веб-интерфейса - обычно это делается набором определенного кода на подключенном аналоговом телефоне, что приводит к тому, что IP-адрес произносится вызывающему абоненту.
Конечно, ATA также может иметь интерфейс FXO, который также должен быть настроен для правильного взаимодействия с аналоговой линией, предоставляемой в вашем регионе. Типы настроек, которые необходимо изменить, аналогичны интерфейсу FXS.
Что делать, если вы подключаете аналоговый телефон или линию к карте Digium? Мы рассмотрим это в следующий раз.
Подключение ТфОП, DAHDI, карт Digium и аналоговых телефонов
Прежде чем мы перейдем к конфигурации DAHDI и Asterisk, нам нужно физически подключиться к ТфОП. К сожалению, общемировых стандартов для подобных соединений не существует; на самом деле, даже в разных частях одной страны часто существуют различия.
Primary Rate Interfaces (PRI) обычно оканчиваются соединением RJ45 в настоящее время, хотя импеданс соединений может варьироваться. В некоторых странах (в частности, в Южной Америке) все еще можно найти PRI, обжатый двумя разъемами BNC: один для передачи и один для приема.
Проще говоря PRI, оконеченный RJ45, будет соединением ISDN, а если вы обнаружите, что соединение выполнено парой разъемов BNC (push-and-twist coaxial connectors), велика вероятность что вы имеете дело с более старым протоколом на основе CAS (например, MFCR2).
На Рисунке 9-3 показан адаптер, необходимый в том случае, если ваша телефонная компания поставила разъемы BNC (карты Sangoma/Digium требуют подключения RJ45). Он называется balun, поскольку преобразует из сбалансированного соединения (RJ45) в несбалансированное соединение (BNCs) в дополнение к изменению импеданса соединения.
Примечание Basic Rate Interfaces (BRI) распроастранены в континентальной Европе и почти всегда поставляются через соединение RJ45. |
Рисунок 9-3. Balun
Аналоговые соединения сильно различаются в зависимости от местоположения - вы должны знать, какой тип разъема используется в вашей местности. Важно помнить, что аналоговая линия - это только два провода, и они должны подключаться к двум средним контактам разъема RJ11, который входит в плату Digium, другой конец является локальным. На Рисунке 9-4 показан коннектор, используемый в Великобритании, где два провода подключены к контактам 2 и 5.
Рисунок 9-4. Штекер BT, используемый для аналоговых соединений ТфОП в Великобритании (обратите внимание, присутствуют только контакты 2–5)
Интерфейс аппаратного устройства Digium Asterisk (Digium Asterisk Hardware Device Interface) или DAHDI на самом деле охватывает несколько вещей. Он содержит драйверы ядра для плат адаптеров телефонии, которые работают в рамках DAHDI, а также утилиты автоматической настройки и инструменты тестирования. Эти части содержатся в двух отдельных пакетах (dahdi-linux и dahdi-tools), но мы также можем использовать один полный пакет, который называется dahdi-linux-complete. Все три пакета доступны на сайте Digium.
После того, как вы установили тип соединения PRI, предоставленного вам телекоммуникационным оператором, вам понадобятся некоторые дополнительные сведения для правильной настройки DAHDI и Asterisk (например, является ли соединение ISDN или протоколом на основе CAS). Опять же, вы найдете их в Главе 7.
Драйверы DAHDI
Соединения, в которых потребуется реальная локализация - это аналоговые интерфейсы. Для того, чтобы настроить телефонную систему на базе Asterisk так, чтобы она лучше всего работала в данной местности, сначала необходимо настроить некоторые низкоуровневые аспекты взаимодействия карты Digium с подключенным устройством или линией. Это делается через драйвер(ы) ядра DAHDI, в файле с именем /etc/dahdi/system.conf.
В следующих строках (взятых из примера конфигурации, который вы получаете с новой установкой DAHDI), вы найдете настройки loadzone
и defaultzone
. Настройка loadzone
позволяет выбрать набор(ы) тонов, которые карта будет генерировать (подавать на аналоговые телефоны) и распознавать (на подключенных аналоговых телефонных линиях):
# Tone Zone Data
# ^^^^^^^^^^^^^^
# Наконец, вы можете предварительно загрузить некоторые тональные
# зоны, чтобы предотвратить их перезапись другими пользователями (если
# вы разрешаете пользователям (не root), открывать интерфейсы /dev/dahdi/*).
# Кроме того, это означает, что они не должны быть загружены во время выполнения.
# Формат - "loadzone=<zone>", где zone представляет собой двухбуквенный код страны.
# Вы также можете указать зону по умолчанию в "defaultzone=<zone>",
# где zone - это двухбуквенный код страны.
# Актуальный список зон можно найти в файле zonedata.с
#
loadzone = us
#loadzone = us-old
#loadzone=gr
#loadzone=it
#loadzone=fr
#loadzone=de
#loadzone=uk
#loadzone=fi
#loadzone=jp
#loadzone=sp
#loadzone=no
#loadzone=hu
#loadzone=lt
#loadzone=pl
defaultzone=us
#
Подсказка В файле /etc/dahdi/system.conf используется символ решётка (#) для обозначения комментария вместо точки с запятой (;), как в файлах /etc/asterisk. </td> </tr> </table> Хотя можно загрузить несколько различных наборов тонов (вы можете увидеть все наборы в zonedata.c) и переключаться между ними, в большинстве случаев вам понадобится только: ```text loadzone=uk # загружаемый набор тонов defaultzone=uk # по умолчанию DAHDI использует этот набор ``` …или тоны, необходимые для Вашего региона. Если вы выполняете _dahdi\_genconf_ для автоматической (или она должна быть автомагическая?) настройки своих адаптеров DAHDI, то заметите, что сгенерированный _/etc/dahdi/system.conf_ объявит как `loadzone`, так и `defaultzone` как `us`. Несмотря на предупреждения не редактировать файл вручную, нормальная практика - изменить эти параметры на то, что Вам нужно. Если вам интересно как проверить почтовый ящик, связанный с каналом, к которому подключен аналоговый телефон, на наличие голосовых сообщений, то это делается заикающимся тоном. Формат этой заикнутой мелодии определяется выбранной комбинацией `loadzone/defaultzone`. В качестве быстрого отступления, аналоговые телефоны, у которых есть индикатор ожидания сообщения (например, светодиод или лампа, которая мигает, чтобы указать на новую голосовую почту), достигают этого, автоматически периодически отключаясь и слушая заикающийся тон. Вы можете увидеть это, посмотрев вывод командной строки Asterisk, чтобы увидеть как канал DAHDI становится активен (если у вас нет ничего лучше!). Вот и все на уровне DAHDI. Мы выбрали протокол(ы) для соединений PRI или BRI, тип сигнализации для аналоговых каналов (все рассмотрено в [Главе 7](/Definitive-Guide-5th-Edition/glava-07.html)) и тональные сигналы для аналоговых соединений, которые только что были обсуждены. Связь между Linux, DAHDI и Asterisk (и, следовательно, _/etc/dahdi/system.conf_ и _/etc/asterisk/chan\_dahdi.conf_) показана на Рисунке 9-5. ![Связь между Linux, DAHDI и Asterisk](/Definitive-Guide-5th-Edition/pics/pic9-5.png) _Рисунок 9-5. Связь между Linux, DAHDI и Asterisk_
|