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

на главную

Жанры

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

Параметр fromuser (от пользователя) влияет на то, как структурировано наше сообщение INVITE при отправке вызова поставщику сервисов.

Сопоставление имени пользователя, а не IP-адреса

Некоторые поставщики услуг для отправки своих вызовов могут использовать вместо протокола Session Initiation Protocol множество IP-адресов, требуя от вас создания отдельной учетной записи типа peer для каждого IP-адреса. Если известны не все IP-адреса, вероятно, придется сравнивать имена пользователей. В этом случае потребуется лишь немного изменить формат описания поставщика сервисов. Самое

большое изменение, на которое следует обратить внимание, - то, что вам понадобится задать [заголовок_поставщика_услуг] как имя пользователя, которому ваш поставщик сервисов собирается направлять вызовы. Также мы изменили тип peer (равноправный) на friend (дружественный), что с точки зрения Asterisk создает типы и user (пользователь), и peer, где тип user будет сравниваться раньше peer: [мой_уникальный_id] type=friend host=10.251.55.100 fromuser=мой_уникальный_id secreЛ=мой_секретный пароль context=incoming_calls dtmfmode=rfc2833 disallow=all allow=gsm allow=ulaw insecure=invite

Обратите внимание, что удалены параметры deny (отклонить) и permit (разрешить), поскольку IP-адреса, с которых будут поступать вызовы, могут быть неизвестны. Если вдруг эти адреса известны и вы по-прежнему хотите сравнивать их, параметры deny и permit для IP-адресов можно восстановить.

Если имя пользователя задано в параметре fromuser, при отправке вызова поставщику меняются поля From: (От:) и Contact: (Контакт:) сообщения INVITE. Этого может требовать сам поставщик, если он использует эти поля в процедуре аутентификации. То, где Asterisk меняет заголовок, можно увидеть в следующих двух фрагментах кода.

Без параметра fromuser:

Audio is at 66.135.99.122 port 18154

Adding codec 0x2 (gsm) to SDP

Adding codec 0x4 (ulaw) to SDP

Adding non-codec 0x1 (telephone-event) to SDP

Reliably Transmitting (no NAT) to 10.251.55.100:5060:

INVITE sip:15195915119@10.251.55.100 SIP/2.0

Via: SIP/2.0/UDP 66.135.99.122:5060;branch=z9hG4bK32469d35;rport

From: "asterisk" <sip:asterisk@66.135.99.122>;tag=as4975f3ff

To: <sip:15195915119@10.251.55.100>

Contact: <sip:asterisk@66.135.99.122>

Call-ID: 58e3dfb2584930cd77fe989c00986584@66.135.99.122

CSeq: 102 INVITE

User-Agent: Asterisk PBX

Max-Forwards: 70

Date: Fri, 20 Apr 2007 14:59:24 GMT

Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY Supported: replaces Content-Type: application/sdp Content-Length: 265

С параметром fromuser:

Audio is at 66.135.99.122 port 11700

Adding codec 0x2 (gsm) to SDP

Adding codec 0x4 (ulaw) to SDP

Adding non-codec 0x1 (telephone-event) to SDP

Reliably Transmitting (no NAT) to 10.251.55.100:5060:

INVITE sip:15195915119@10.251.55.100 SIP/2.0

Via: SIP/2.0/UDP 66.135.99.122:5060;branch=z9hG4bK635b0b1b;rport

From: "asterisk" <sip:мой_уникальный_id@66.135.99.122>;tag=as3186c1ba

To: <sip:15195915119@10.251.55.100>

Contact: <sip:мой_уникальный_id@66.135.99.122>

Call-ID: 0c7ad6156f92e70b1fecde903550a12f@66.135.99.122

CSeq: 102 INVITE

User-Agent: Asterisk PBX

Max-Forwards: 70

Date: Fri, 20 Apr 2007 15:00:30 GMT

Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY Supported: replaces Content-Type: application/sdp Content-Length: 265

Параметры deny и permit используются для отклонения всех входящих вызовов

к этому участнику сети от всех IP-адресов, кроме заданного параметром permit. Это просто мера безопасности, которая обеспечивает поступление к данному участнику сети трафика только с ожидаемого IP-адреса.

В конце видим выражение insecure=invite, которое может быть необходимо для вашего поставщика, потому что источник сообщения INVITE может находиться на платформе сервера, но передаваться через его прокси-сервер SIP. По сути, это означает, что в строке Contact (Контакт) (поле сообщения INVITE, которое вы проверяете при приеме вызова от своего поставщика) может быть совсем не тот IP-адрес, по которому находится участник сети. Это выражение указывает Asterisk игнорировать данное несоответствие и принимать приглашение в любом случае.

Возможно, понадобится задать и invite=invite,port, если адрес порта также не соответствует тому, что ожидает Asterisk.

Теперь в разделе [general] файла sip.conf требуется задать один дополнительный параметр: register. register (реестр) укажет поставщику сервисов, куда направлять адресованные нам вызовы. Так Asterisk говорит поставщику сервисов: «Эй! Если ты получил вызов ко мне, пошли его на IP-адрес 10.251.55.100». Параметр register имеет следующий вид:

register => имяпользователя:секрет@мой.поставщик_сервисов.Ш Теперь осталось только сконфигурировать простой диалплан для обработки входящих вызовов и отправки вызовов через поставщика сервисов. Мы собираемся внести коррективы в диалплан, который начали создавать в разделе «Настройка диалплана для выполнения тестовых вызовов» данной главы. Строки, выделенные курсивом, - это новые части, добавленные в диалплан. Все остальное взято без изменений из предыдущего раздела [68] .

68

Также предполагается, что сконфигурирован по крайней мере один добавочный номер SIP из предыдущего раздела.

[globals] [general] [default]

exten => s,1,Verbose(1|Unrouted call handler)

exten => s,n,Answer

exten => s,n,Wait(1)

exten => s,n,Playback(tt-weasels)

exten => s,n,Hangup

[incoming_calls]

exten => _X.,1.NoOp

exten => _X.,n,Dial(SIP/1000)

[outgoing_calls] exten => _X.,1,NoOp

exten => X.,n,Dial(SIP/мой поставщик сервисов/${EXTEN})

[internal]

exten => 1000,1,Verbose(1|Extension 1000)

exten => 1000,n,Dial(SIP/1000,30)

exten => 1000,n,Hangup

exten => 500,1,Verbose(1|Echo test application)

exten => 500,n,Echo

exten => 500,n,Hangup

[phones]

include => internal include => outgoing_calls

Соединение двух серверов Asterisk по протоколу SIP

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

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

Здравствуй, 1985-й

Иванов Дмитрий
2. Девяностые
Фантастика:
альтернативная история
5.25
рейтинг книги
Здравствуй, 1985-й

Идеальный мир для Лекаря 16

Сапфир Олег
16. Лекарь
Фантастика:
боевая фантастика
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 16

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

Винокуров Юрий
7. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
4.75
рейтинг книги
Кодекс Охотника. Книга VII

Назад в СССР: 1984

Гаусс Максим
1. Спасти ЧАЭС
Фантастика:
попаданцы
альтернативная история
4.80
рейтинг книги
Назад в СССР: 1984

Как я строил магическую империю

Зубов Константин
1. Как я строил магическую империю
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Как я строил магическую империю

Дядя самых честных правил 8

Горбов Александр Михайлович
8. Дядя самых честных правил
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Дядя самых честных правил 8

Попаданка в академии драконов 4

Свадьбина Любовь
4. Попаданка в академии драконов
Любовные романы:
любовно-фантастические романы
7.47
рейтинг книги
Попаданка в академии драконов 4

Стеллар. Трибут

Прокофьев Роман Юрьевич
2. Стеллар
Фантастика:
боевая фантастика
рпг
8.75
рейтинг книги
Стеллар. Трибут

6 Секретов мисс Недотроги

Суббота Светлана
2. Мисс Недотрога
Любовные романы:
любовно-фантастические романы
эро литература
7.34
рейтинг книги
6 Секретов мисс Недотроги

Лорд Системы 11

Токсик Саша
11. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Лорд Системы 11

Золотая осень 1977

Арх Максим
3. Регрессор в СССР
Фантастика:
альтернативная история
7.36
рейтинг книги
Золотая осень 1977

Я не князь. Книга XIII

Дрейк Сириус
13. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я не князь. Книга XIII

Моя (не) на одну ночь. Бесконтрактная любовь

Тоцка Тала
4. Шикарные Аверины
Любовные романы:
современные любовные романы
7.70
рейтинг книги
Моя (не) на одну ночь. Бесконтрактная любовь

Раб и солдат

Greko
1. Штык и кинжал
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Раб и солдат