Asterisk. Пример 2 — SIP и DONGLE

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

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

В первую очередь настроим вызовы между двумя SIP линиями, которые будем использовать для проверки, тестирования и изучения.

Disclamer

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

SIP

Файл sip.conf должен выглядеть так:

[general]
language = ru
bindport = 5060
callcounter = yes
limitonpeers = yes
dtmfmode = rfc2833
compensate = yes
defaultexpiry = 3600
disallow = all
allow = alaw

[LocalSip](!)
dtmfmode = rfc2833
canreinvite=no
host = dynamic
type = friend
port = 5060
qualify = yes
deny = 0.0.0.0/0.0.0.0
permit = 0.0.0.0/0.0.0.0
callcounter = yes
disallow = all
allow = alaw

[6000](LocalSip)
username=6000
secret=606060
callerid=Vladimir Mayakovskiy <6000>
context=from-sip-phone

[6001](LocalSip)
username=6001
secret=616161
callerid=Taras Shevchenko <6001>
context=from-sip-phone

Здесь были вынесены общие параметры в группу параметров LocalSip, а далее были настроены две SIP-линии, к которым были применены параметры группы. Контекст, правила которого будут обрабатывать вызовы — from-sip-phone.

В консоле Asterisk выполните команду reload, чтобы перечитать конфиги и подключите два SIP-softphone с приведенными в конфиге учетными данными к серверу. Убедитесь, что авторизация прошла успешно.

sip show peers

Позвонить Вы еще никуда не сможете, так как мы еще не настроили маршрутизацию.

Dongle

Теперь давайте настроим GSM модемы (Dongle). У нас подключены 2 модема. Первый с SIM-картой оператора Киевстар, второй с SIM-картой оператора Life. Как уже указывалось в основной статье по установке системы Asterisk, линии Dongle можно сконфигурировать различными способами:

  • указать только IMEI — в этом случае привязка линии будет осуществляться по IMEI модема (мобильного терминала). Вы можете менять SIM-карты или разъемы USB. Линия будет закреплена за модемом.
  • указать только IMSI — в этом случае привязка линии будет осуществляться по IMSI номеру SIM-карты. Вы можете заменить модем на другой, можете поменять разъем USB. Линия будет закреплена именно за SIM-картой.
  • жестко указать интерфейсы audio и data. В этом случае линия будет привязана к контроллеру USB (по факту к гнезду USB). Это очень неудобный способ и оставлен в новых версиях Dongle только для совместимости со старыми версиями и с некоторыми операционными системами, где обнаружение по IMEI и IMSI не работает.

Самым удобным является способ привязки SIM карты (по номеру IMSI). В этом случае замена порта или модема, в случае их выхода из строя, не приведет к необходимости перенастраивать систему. Можно сочетать любые из способов, но это только затруднит эксплуатацию в будущем. Не усложняйте.

Файл dongle.conf должен иметь следующее содержание (обратите внимание на секцию defaults — в данном примере указаны только важные параметры, а не точное содержимое. Не удаляйте все содержимое этого файла):

[general]
interval=15

[defaults]
; в этой секции закомментируйте exten= и оставляйте все остальные параметры как есть, кроме следующих параметров:
rxgain=0 ; - это усиление принимаемого аудиосигнала (динамика)
txgain=0 ; - это усиление передаваемого аудиосигнала (микрофона)
language=ru ; - желательно указывать для корректного речевого информирования
dtmf=relax ; - желательно выключать, когда есть вероятность повреждения формы тональных сигналов

[KYIVSTAR]
imsi=255031111111111
context=from-gsm

[LIFE]
imsi=255061111111111
context=from-gsm

В итоге получим две линии, идентифицируемые как KYIVSTAR и LIFE, вызовы с которых должны будут обрабатываться правилами маршрутизации в контекте from-gsm.

Параметры rxgain и txgain задают усиление. Указывается количество dB в виде целого положительного или отрицательного числа. 0 — усиление выключено. Включайте усиление только при явной необходимости, иначе будет страдать качество звука.

В итоге имеем две SIP-линии и два Dongle (GSM линии). Самое время начинать звонить между ними.

Extensions

Сделаем следующую схему: SIP-линии должны звонить друг другу. SIP-линии должны звонить через линию KIEVSTAR только на номера этого оператора, а все остальные вызовы должны уходить через линию LIFE. Все входящие вызовы, поступающие на модемы, должны тут же маршрутироваться на обе SIP-линии. Очереди использовать не будем, может быть напишу об этом отдельно.

За маршрутизацию отвечает подсистема extensions. Настройки очень простые и понятные, частично они были описаны в первом примере. Но на всякий случай прокомментирую. Файл extensions.conf очень маленький:

[globals]
[general]
autofallthrough=yes


; Этот контекст принимает и обрабатывает вызовы с SIP-линий
[from-sip-phone]
; SIP-линии звонят друг другу
exten => _6XXX,1,Dial(SIP/${EXTEN})

; исходящие вызовы на номера оператора KYIVSTAR
exten => _06[7,8]XXXXXXX,1,Dial(Dongle/KYIVSTAR/${EXTEN})
exten => _09[6-8]XXXXXXX,1,Dial(Dongle/KYIVSTAR/${EXTEN})
exten => _039XXXXXXX,1,Dial(Dongle/KYIVSTAR/${EXTEN})

; все остальные исходящие вызовы без разбора отправляем через GSM линию LIFE
exten => _X.,1,Dial(Dongle/LIFE/${EXTEN})


; этот контекст принимает и обрабатывает вызовы с GSM-линий
[from-gsm]
; простая реализация без очередей - будут звонить обе SIP-линии
exten => s,1,Dial(SIP/6000&SIP/6001)

Вот и все. Пробуйте позвонить.

Удачи!

Asterisk. Пример 2 — SIP и DONGLE: 8 комментариев

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

  2. Просто везде как то по разному объясняют реализацию перенаправление после звонков по сип номерам

    1. [from-gsm]
      exten => s,1,Dial(SIP/6000,10) ; 10 сек звонит 6000
      exten => s,n,Dial(SIP/6001,10) ; затем 10 сек звонит 6001
      exten => s,n,Dial(Dongle/MYSECONDCELL/+3801234567) ; затем вызов отправляется на Dongle с названием MYSECONDCELL на номер телефона +3801234567

  3. Привет Денис!

    Не подскажешь насколько правильно было выполнено перенаправление на сотовый после очередных звонков

    [from-gsm]
    ; простая реализация без очередей — будут звонить обе SIP-линии
    ;exten => s,1,Dial(SIP/6000&SIP/6001)
    exten => s,1,Dial(SIP/6000,10)
    exten => s,2,Dial(SIP/6001,10)
    exten => 6001,n,Dial(А вот тут я не понял что вписать/8сотовыйномер)
    exten => s,n,Hangup()

    Или это не правильная конструкция?

Добавить комментарий