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

на главную

Жанры

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

В США и Канаде нормы и правила электросвязи довольно похожи (и удобны), поэтому на большинство междугородних номеров можно звонить, используя код страны 1, по разумной цене.

Однако многие даже не догадываются, что NANP используют 19 стран, подчас с очень разными правилами электросвязи. (Более подробную информацию об этом можно найти по адресу http://www.nanpa.com.)

Очень популярно мошенничество с использованием NANP, когда наивных американцев обманным путем заставляют звонить в страны Карибского бассейна по номерам, звонок по которым оплачивается поминутно, как междугородний; абоненты верят, что, если набрать 1-NPA-NXX-XXXX, звонок будет оплачиваться по стандартным национальным

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

Единственный способ предотвратить такого рода деятельность - блокировать определенные междугородние коды (например, 809) и снимать ограничения только в случае необходимости.

Обратите внимание, что ни один из данных шаблонов не станет обрабатывать междугородние звонки. Скоро мы рассмотрим этот вопрос. Попробуем другой шаблон:

_1NXXNXXXXXX

Данный шаблон немного сложнее. Он соответствует 1, за которой следует код города от 200 до 999, а затем - любой семизначный номер. В зоне действия NANP этот шаблон будет использоваться для сопоставления с любым междугородним номером [75] . Теперь еще более хитрый пример: _011.

75

Те, кто вырос в Северной Америке, возможно, думают, что 1, которую они набирают при звонках по межгороду, - это «международный код». Это неправильно. 1 - это международный код страны для всех стран, использующих NANP. Помните это, если вам когда-нибудь придется давать свой номер телефона кому-то из другой страны. Они могут не знать кода вашей страны и, таким образом, не смогут дозвониться вам, имея только код города и номер телефона. Полный номер телефона с кодом страны записывается так: +1 NPA NXX XXXX (где NPA - код города) - например +1 416 555 1212.

Если, увидев этот шаблон, вы лишь почесали затылок, посмотрите на него еще раз. Заметили точку в конце? Этот шаблон соответствует любому номеру, начинающемуся с 011 и имеющему по крайней мере еще одну цифру. В NANP это соответствует международному телефонному номеру. (Мы будем использовать эти шаблоны в следующем разделе для добавления в наш диалплан возможностей выполнения исходящих звонков.)

Использование переменной канала ${EXTEN}

Мы знаем, о чем вы думаете... Вы сидите и задаете себе вопрос: «Так что же делать, если я хочу использовать сопоставление с шаблонами, но мне надо знать, какие цифры набираются?» К счастью, у Asterisk есть ответ. При каждом звонке на добавочный номер Asterisk сохраняет набранный номер в переменной канала ${EXTEN}. Чтобы протестировать ее, можно использовать приложение SayDigits:

exten => _XXX,1,SayDigits(${EXTEN})

В этом примере приложение SayDigits будет воспроизводить для вас набранный вами трехзначный добавочный номер.

Часто переменную ${EXTEN} удобно использовать для удаления определенного количества цифр в начале добавочного номера. Это осуществляется с помощью синтаксиса ${EXTEN:x}, где x - разряд, с которого должна начинаться возвращаемая строка, считая слева направо. Например, если значение EXTEN - 95551212, ${EXTEN:1} равно 5551212. Рассмотрим другой пример:

exten => _XXX,1,SayDigits(${EXTEN:1})

В этом примере приложение SayDigits начнет воспроизведение со второй цифры, таким образом, будут воспроизведены только две последние цифры набранного добавочного номера.

Более сложные операции с номерами

Полный синтаксис переменной ${EXTEN} - ${EXTEN: x: у}, где x - начальное положение, а у - количество цифр, которое должно быть возвращено. Пусть задана

строка набора:

94169671111

Используя конструкцию ${EXTEN:x:y}, можно извлечь следующие цифровые строки:

${EXTEN:1:3} - будет возвращена строка 416. ${EXTEN:4:7} - будет возвращена строка 9671111. ${EXTEN:-4:4} - строка будет начинаться с четвертого символа с конца и включает четыре символа, что даст 1111. ${EXTEN:1} - будет возвращено все после первой цифры, 4169671111 (если количество цифр, которое должно быть возвращено, не задано, будет возвращена вся оставшаяся строка). Это очень мощная структура, но большинство из приведенных ее вариантов используются редко. Чаще всего вы будете применять ${EXTEN:1}, чтобы отбросить внешний код доступа.

Активация исходящих вызовов

Теперь, когда мы ознакомились с шаблонами, можно переходить к тому, как обеспечить абонентам возможность осуществлять исходящие звонки. Первое, что мы сделаем, - добавим переменную в контекст [globals], чтобы определить, какой канал будет использоваться для исходящих вызовов:

[globals] JOHN=Zap/1 JANE=SIP/Jane OUTBOUNDTRUNK=Zap/4

Далее добавим в диалплан контекст для исходящих вызовов. Возможно, сейчас вы задаетесь вопросом: «Зачем нужен отдельный контекст для исходящих звонков?» Это делается для того, чтобы иметь возможность управлять тем, какие абоненты имеют право делать исходящие звонки и какого типа могут быть эти звонки. Сначала создадим контекст для локальных вызовов. Не будем отступать от традиций и первой цифрой в наших шаблонах поставим 9, чтобы пользователи для звонка на внешний номер набирали 9: [outbound-local]

exten => _9NXXXXXX,1,Dial(${OUTBOUNDTRUNK}/${EXTEN:1}) exten => _9NXXXXXX,n,Congestion exten => _9NXXXXXX,n,Hangup

Обратите внимание, что цифра 9 на самом деле не обеспечивает выхода на внешнюю линию, как это происходит во многих традиционных системах офисных АТС. После набора цифры 9 в аналоговой линии сразу же пропадет тональный сигнал готовности линии. Если вам хочется, чтобы зуммер продолжался даже после набора цифры 9, добавьте следующую строку (сразу после описания контекста): ignorepat => 9

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

Повторим, что было сделано. Мы добавили глобальную переменную OUTBOUNDTRUNK, которая просто определяет канал, используемый для исходящих вызовов1. Также был введен контекст для локальных исходя-Это обеспечивает то преимущество, что, если однажды будет принято решение передавать вызовы по какому-то другому каналу, надо будет отредактировать имя канала, заданное как значение переменной OUTBOUNDTRUNK только в контексте [globals], а не менять вручную все ссылки на этот канал по всему диалплану.

щих вызовов. В приоритете 1 с помощью синтаксиса ${EXTEN:1} от набранного добавочного номера отбрасывается цифра 9 и делается попытка дозвониться на этот номер по каналу, указанному переменной OUTBOUNDTRUNK. Если удается дозвониться, абонент соединяется с исходящим каналом. Если вызов заканчивается неудачей (например, канал занят или невозможно набрать номер по какой-то другой причине), вызывается приложение Congestion (перегрузка), которое воспроизводит «короткие гудки» (тональный сигнал перегрузки линии), сообщая абоненту, что дозвониться не удалось.

Поделиться:
Популярные книги

Безумный Макс. Поручик Империи

Ланцов Михаил Алексеевич
1. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
7.64
рейтинг книги
Безумный Макс. Поручик Империи

Черный Маг Императора 10

Герда Александр
10. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Черный Маг Императора 10

Академия

Сай Ярослав
2. Медорфенов
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Академия

Шведский стол

Ланцов Михаил Алексеевич
3. Сын Петра
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Шведский стол

Болотник

Панченко Андрей Алексеевич
1. Болотник
Фантастика:
попаданцы
альтернативная история
6.50
рейтинг книги
Болотник

Свои чужие

Джокер Ольга
2. Не родные
Любовные романы:
современные любовные романы
6.71
рейтинг книги
Свои чужие

Законы Рода. Том 6

Flow Ascold
6. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 6

Кодекс Охотника. Книга XIII

Винокуров Юрий
13. Кодекс Охотника
Фантастика:
боевая фантастика
попаданцы
аниме
7.50
рейтинг книги
Кодекс Охотника. Книга XIII

Черный дембель. Часть 5

Федин Андрей Анатольевич
5. Черный дембель
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Черный дембель. Часть 5

Невеста на откуп

Белецкая Наталья
2. Невеста на откуп
Фантастика:
фэнтези
5.83
рейтинг книги
Невеста на откуп

Совершенный: охота

Vector
3. Совершенный
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Совершенный: охота

Никто и звать никак

Ром Полина
Фантастика:
фэнтези
7.18
рейтинг книги
Никто и звать никак

Третье правило дворянина

Герда Александр
3. Истинный дворянин
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Третье правило дворянина

Убивать чтобы жить 2

Бор Жорж
2. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 2