Asterisk и шлюзы Goip

Goip 4 : Firmware Version: GS-4.01-98 Module Version: M35FAR02A01_RSIM

Goip16: Firmware Version: GST1610-1.01-61 Module Version: G610_V0C.58.0D_T1B

Goip32: Firmware Version: GST1610-1.01-61 Module Version: M35FAR02A01_RSIM

GoIP User Manual

Проблемs: Модели 16 и 32 не умеют Save/Restore  configuration. Функцинал есть, и файл формируется (текстовый, читаемый) но восстановление из него ничего не изменяет. На модели 4 – не тестировалось

sip.conf

[gsm-tpl](!) ; template for gsm peers
host = dynamic
type = peer
port = 5060
bindport = 5060
qualify = 1000

[gsm-life](gsm-tpl)
context = from_gsm_life
username = gsm-life
secret = PASSWORD

[gsm-mts](gsm-tpl)
context = from_gsm_mts
username = gsm-mts
secret = PASSWORD

extensions.conf

# Значение 8888 - устанавливается в шлюзе в настройке Voip Call in 
[from_gsm_ks]
exten => 8888,1,Noop()
 same => n,Set(CALLERID(num)=${CALLERID(num):1}) ; обрезаем ведущий плюс
 same => n,macro(incoming)

Настройка Шлюза

Общая конфигурация
ВАЖНО: Указать Prefix!!!
goip4-2

Входящие звонки – Вариант 1
goip4-1

extensions.conf

# Значение 8888 - устанавливается в шлюзе в настройке Voip Call in 
[from_gsm_ks]
exten => 8888,1,Noop()
 same => n,macro(incoming)

Исходящие звонки
goip4-3
extensions.conf

# В команде DIAl добавляем указанную цифру 3 для выбора данного слотам (сим-карты)
[gsm_ks_line]
exten => _X.,1,Noop()
 same => n,macro(record)
 same => n,Dial(SIP/gsm-ks/3${EXTEN})

Проблемы

A. Входящие звонки приходят с любых транков (peer-ов).
Так как в gms-* стоит insecure=invite, а так же все они идут с одного IP и одного хоста, то разделить транки не получается.
Варианты:
– разделение портов – GoIp в текущей версии не умеет, или я пока не нашел.
– убрать insecure=invite – GoIp не может авторизировать, получаем такое:

chan_sip.c:17126 check_auth: username mismatch, have <9005>, digest has <9006>
chan_sip.c:26179 handle_request_invite: Failed to authenticate device ....

Решение проблемы A :

Проверено на версиях: 11.7.0, 13.14.1

Включить параметр match_auth_username=yes в sip.conf

[general]
match_auth_username=yes

[gsm-goip](!)
type=friend
secret=PASSWORD
; теперь отключаем insecure 
insecure=no

[slot1](gsm-goip)

[slot2](gsm-goip)
...

Выводы спустя 3 недели

Не имело смысла настраивать шлюз как отдельные линии.
Перешел на конфигурацию Single Server Mode :
goip-gsm-gate

Входящие в GOIP:

С конфигурацией входящих в Asterisk:

[from-gsm-gate]
exten => gsm-mts,1,Noop()
 same => n,Gosub(sub-incoming,s,1)

exten => gsm-ks,1,Noop()
 same => n,Gosub(sub-incoming,s,1)

exten => gsm-life,1,Noop()
 same => n,Gosub(sub-incoming,s,1)

Плюсы:
– В логе понятно на какую линию звонили!

UPDATE 10.10.2017

Goip поддерживает 4 группы, делим все сим карты по Оператору на группы:

Routing Prefix – то что вы пропишите в extension для выполнения звонка по этой группе.

В sip.conf:

[gsm-goip](!)
type=friend
host=dynamic
qualify=1000
canreinvite=no
deny=0.0.0.0/0.0.0.0
permit=10.0.10.0/255.255.255.0

[gsm1-life](gsm-goip)
context=income-gsm-life
username=gsm1-life
secret=PASSWORD

[gsm1-ks](gsm-goip)
context=income-gsm-ks
username=gsm1-ks
secret=PASSWORD

Исходящие звонки:

[gsm_ks_dial]
; Префиксы Группы 111
exten => _X.,1,Noop()
 same => n,Dial(SIP/gsm1-ks/111${EXTEN},120)

Входящие звонки:

Хоть мы выбрали по Группам, Входящие входят  по настройкам Каждой сим-карты индивидуально! Но именно в тот context который соответствует группе.

В поле Forwarding to VoIP Number пишем Реальный мобильный номер карты, или Префикс оператора, и т.п.:

[income-gsm-ks]
; входят как на 067***
exten => _X.,1,Noop()
 same => n,Gosub(sub-incoming-callcenter,${EXTEN},1)