Как подружить Asterisk с китайским gsm-шлюзом GoIP4

Настройка GoIP
Вставляем 4 SIM-карты (без паролей), подключаем в порт «LAN» (DHCP) и смотрим в логах какой IP выдался Goip-у или в порт «PC» (шлюз имеет IP: 192.168.8.1).
Я выбрал первый вариант. Заходим в веб интерфейс GoIP, Логин/Пароль для авторизации на шлюзе admin/admin. Так же есть учетные записи с ограниченными правами user и sms.

Меняем часовую зону на свою и убираем галочку IVR.

Ставим статический ИП, так надежней:

Переходим к настройкам gsm каналов. В данном случае мы выбираем «Config by Line«.
Задаем основные параметры:
Phone Number = номер (берем с соответствующего екстеншена в sip.conf)
GateWay Prefix = 1 — для каждой линии свой 1,2,3,4, таким образом в GoIP идет выбор нужной вам линии при исходящих звонках.
Sip Proxy = IP Asterisk сервера
Sip Registrar Server = IP Asterisk сервера
Authentication ID = логин (берем с соответствующего екстеншена в sip.conf)
Password = пароль (берем с соответствующего екстеншена в sip.conf)

Переходим в Call Management, тут необходимо для каждой линии соответственно задать входящие «Call IN via GSM» и исходящие «Call OUT via GSM» параметры.
Dial Plan — ставим так же для каждой линии свой, например: 1:-1, 2:-2, 3:-3, 4:-4.
CID Forward Mode — выставляем значение «Use CID as SIP Caller ID» этот параметр отвечает за передачу Caller ID с GSM- в VoIP-сеть. Другими словами, передает входящий номер абонента GSM в VoiP.
Forwarding to VoIP Number — вписываем номер, который шлюз будет вызывать на Asterisk при входящих вызовах, у меня это «210» на котором находится голосовое меню.
CID Prefix — добавил «+», так как GOIP изначально передает номер без префикса.

Не забудьте поменять пароли в «Tools > Change Password» и навсяк сделать бекап конфигурации «Backup/Restore Configurations«.На вкладке «Status» можно посмотреть статус SIM-карт и уровень сигнала.

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

Настройка Asterisk
Добавляем транки в /usr/local/etc/asterisk/sip.conf:

[mts-1]
host=dynamic
;dialformat = ${EXTEN:1}
type=peer
context=from-mts980
disallow=all
allow=alaw
allow=ulaw
dtmfmode=rfc2833
username=mts-1
secret=пароль
qualify=yes
nat=no
deny=0.0.0.0/0.0.0.0
permit=192.168.2.0/255.255.255.0
canreinvite=no
insecure=port,invite

[mts-2]
host=dynamic
type=peer
context=from-mts153
disallow=all
allow=alaw
allow=ulaw
dtmfmode=rfc2833
username=mts-2
secret=пароль
qualify=yes
nat=no
deny=0.0.0.0/0.0.0.0
permit=192.168.2.0/255.255.255.0
canreinvite=no
insecure=port,invite

[ks-1]
host=dynamic
type=peer
context=from-ks917
disallow=all
allow=alaw
allow=ulaw
dtmfmode=rfc2833
username=ks-1
secret=пароль
qualify=yes
nat=no
deny=0.0.0.0/0.0.0.0
permit=192.168.2.0/255.255.255.0
canreinvite=no
insecure=port,invite
;insecure=very
;insecure=invite

[ks-2]
host=dynamic
type=peer
context=from-ks917out
disallow=all
allow=alaw
allow=ulaw
dtmfmode=rfc2833
username=ks-2
secret=пароль
qualify=yes
nat=no
deny=0.0.0.0/0.0.0.0
permit=192.168.2.0/255.255.255.0
canreinvite=no
insecure=port,invite

Перезагружаем Asterisk и смотрим в «sip show peers» транки должны зарегистрироваться на шлюзе.

voip*CLI> sip show peers
ks-1/ks-1                 192.168.1.200                             D              A  5060     OK (23 ms)
ks-2/ks-2                 192.168.1.200                             D              A  5060     OK (22 ms)
mts-1/mts-1               192.168.1.200                             D              A  5060     OK (18 ms)
mts-2/mts-2               192.168.1.200                             D              A  5060     OK (24 ms)

Настройка диалплана Asterisk

[root@voip /]# cat /usr/local/etc/asterisk/extensions.conf

Входящие с GSM, например:

[from-mts980]
exten => 210,1,GotoIfTime(8:00-19:00|mon-fri|*|*?wellcome,s,1)
exten => 210,2,GotoIfTime(19:00-8:00|mon-fri|*|*?not_work,s,1)
exten => 210,3,GotoIfTime(9:00-15:00|sat|*|*?wellcome,s,1)
exten => 210,4,GotoIfTime(15:00-9:00|sat|*|*?not_work,s,1)
exten => 210,5,GotoIfTime(*|sun|*|*?not_work,s,1)

Исходящие с VoIP сети, например:

exten => _09[1,2,3,6,7,8]XXXXXXX,1,Dial(SIP/ks-2/4${EXTEN},30)
exten => _09[1,2,3,6,7,8]XXXXXXX,2,GotoIf(${DIALSTATUS} = BUSY,3)
exten => _09[1,2,3,6,7,8]XXXXXXX,3,Dial(SIP/ks-1/3${EXTEN},30)
exten => _09[1,2,3,6,7,8]XXXXXXX,4,GotoIf(${DIALSTATUS} = BUSY,5)
exten => _09[1,2,3,6,7,8]XXXXXXX,5,Hangup

*выбор номера линии осуществляется префиксом «4» в данном случае.

Скачать мануал по GSM шлюзам GOIP на русском

Оригинал статьи: http://unix.ck.ua/content/kak-podruzhit-asterisk-s-kitaiskim-gsm-shlyuzom-goip4