LINUX.ORG.RU
решено ФорумAdmin

Не работает прием SMS у SMS-центра на Asterisk

 , ,


1

2

Собственно, решил настроить АТС'ку на Asterisk'е. Работают звонки и факсы, но не работает прием/отправка SMS. Нужна работа SMS хотя бы во внутренней сети, т.е. например отправка с номера 1002 на 1003. Что есть: аналоговый шлюз D-Link DVG-7062S (Firmware: 1.02.38.28-b8749), DECT телефон – Siemens Gigaset SL910A. У телефона даже есть mini-USB порт, вот что пишет если его подключить к ноутбуку (VID:PID 1e85:0001):

[388192.250135] usb 4-1.1: USB disconnect, device number 47
[388194.749663] usb 4-1.1: new high-speed USB device number 48 using ehci-pci
[388194.850864] usb 4-1.1: New USB device found, idVendor=1e85, idProduct=0001
[388194.850872] usb 4-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[388194.850875] usb 4-1.1: Product: Gigaset Generic CDCACM Device
[388194.850878] usb 4-1.1: Manufacturer: Linux 2.6.35.13-gc-V01.034 with fsl-usb2-udc
[388194.895115] cdc_acm 4-1.1:1.0: ttyACM0: USB ACM device
[388194.895606] usbcore: registered new interface driver cdc_acm
[388194.895610] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters

Есть Asterisk v.11.11.0~dfsg-2ubuntu1 на Ubuntu 14.04 Server и вот конфиги Asterisk:

/etc/asterisk/extensions.conf


[globals]

[general]

autofallthrough=yes

[default]

[incoming_calls]


[outgoing_calls]


[internal]

exten => 1001,1,Dial(SIP/1001,30)
exten => 1001,n,Hangup()
exten => 1002,1,Dial(SIP/1002,30)
exten => 1002,n,Hangup()
exten => 1003,1,Dial(SIP/1003,30)
exten => 1003,n,Hangup()
exten => 1004,1,Dial(SIP/1004,30)
exten => 1004,n,Hangup()
exten => 1005,1,Dial(SIP/1005,30)
exten => 1005,n,Hangup()
exten => 0999,1,NoOp(${CALLERID})
exten => 0999,n,Dial(SIP/1002,45)
exten => 0999,n,Hangup()
exten => 1010,1,NoOp(SMS ${CALLERID(num)})
exten => 1010,n,Answer()
exten => 1010,n,SMS(1010,as)
exten => 1010,n,Hangup()
exten => _X.,1,NoOp()
exten => _X.,n,Dial(SIP/1000/${EXTEN})

[phones]
include => internal
include => outgoing_calls
include => incoming_calls

/etc/asterisk/extensions.conf


[global]

context=default
allowoverlap=no
bindaddr=172.22.0.2
bindport=5060
;The following settings restrict Asterisk to localhost for Kamailio integration
permit=172.22.0.0/255.255.0.0
insecure=invite

[0999]

username=0999
secret=Pass1
type=friend
regexten=0999
host=dynamic
nat=no
disallow=all
allow=ulaw
allow=alaw
context=incoming_calls
insecure=invite

[1000]

username=1000
secret=Pass2
type=friend
regexten=1000
host=dynamic
nat=no
disallow=all
allow=ulaw
allow=alaw
context=outgoing_calls

[1001]

username=1001
secret=Pass3
type=friend
regexten=1001
host=dynamic
nat=no
disallow=all
allow=ulaw
allow=alaw
context=internal
insecure=invite

[1002]

username=1002
secret=Pass4
type=friend
regexten=1002
host=dynamic
nat=no
disallow=all
allow=ulaw
allow=alaw
context=internal
insecure=invite

[1003]

username=1003
secret=Pass5
type=friend
regexten=1003
host=dynamic
nat=no
disallow=all
allow=ulaw
allow=alaw
context=internal
insecure=invite

[1004]

username=1004
secret=Pass6
type=friend
regexten=1004
host=dynamic
nat=no
disallow=all
allow=ulaw
allow=alaw
context=internal
insecure=invite

[1005]

username=1005
secret=Pass7
type=friend
regexten=1005
host=dynamic
nat=no
disallow=all
allow=ulaw
allow=alaw
context=internal
insecure=invite

[1010]

username=1010
secret=Pass8
type=friend
regexten=1010
host=dynamic
nat=no
disallow=all
allow=ulaw
allow=alaw
context=internal

Далее я отправляю SMS на номер 1003 (указав SMSC с номером 1010 в настройках телефона) с телом Test-SMS и вижу в логах:


alexey@base-gateway:~$ sudo asterisk -rvvvvv
[sudo] password for alexey: 
Asterisk 11.11.0~dfsg-2ubuntu1, Copyright (C) 1999 - 2013 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 11.11.0~dfsg-2ubuntu1 currently running on base-gateway (pid = 8919)
  == Using SIP RTP CoS mark 5
    -- Executing [1010@internal:1] NoOp("SIP/1002-0000001a", "SMS 1002") in new stack
    -- Executing [1010@internal:2] Answer("SIP/1002-0000001a", "") in new stack
       > 0x7f02cc004ee0 -- Probation passed - setting RTP source address to 172.22.8.2:9010
    -- Executing [1010@internal:3] SMS("SIP/1002-0000001a", "1010,as") in new stack
 sms argc 2 queue <1010> opts <as> addr <> body <>
 initial delay 300ms
    -- SMS TX 93 00
[Sep  7 22:02:05] NOTICE[10699][C-0000000d]: app_sms.c:1725 sms_process: No data, hanging up
[Sep  7 22:02:05] NOTICE[10699][C-0000000d]: app_sms.c:2038 sms_exec: channel hangup
  == Spawn extension (internal, 1010, 3) exited non-zero on 'SIP/1002-0000001a'
  == Using SIP RTP CoS mark 5
    -- Executing [1010@internal:1] NoOp("SIP/1002-0000001b", "SMS 1002") in new stack
    -- Executing [1010@internal:2] Answer("SIP/1002-0000001b", "") in new stack
       > 0x7f02cc004ee0 -- Probation passed - setting RTP source address to 172.22.8.2:9010
    -- Executing [1010@internal:3] SMS("SIP/1002-0000001b", "1010,as") in new stack
 sms argc 2 queue <1010> opts <as> addr <> body <>
 initial delay 300ms
    -- SMS TX 93 00
[Sep  7 22:02:58] NOTICE[10700][C-0000000e]: app_sms.c:1725 sms_process: No data, hanging up
[Sep  7 22:02:58] NOTICE[10700][C-0000000e]: app_sms.c:2038 sms_exec: channel hangup
  == Spawn extension (internal, 1010, 3) exited non-zero on 'SIP/1002-0000001b'
  == Using SIP RTP CoS mark 5
    -- Executing [1010@internal:1] NoOp("SIP/1002-0000001c", "SMS 1002") in new stack
    -- Executing [1010@internal:2] Answer("SIP/1002-0000001c", "") in new stack
       > 0x7f02cc004ee0 -- Probation passed - setting RTP source address to 172.22.8.2:9010
    -- Executing [1010@internal:3] SMS("SIP/1002-0000001c", "1010,as") in new stack
 sms argc 2 queue <1010> opts <as> addr <> body <>
 initial delay 300ms
    -- SMS TX 93 00
[Sep  7 22:03:52] NOTICE[10701][C-0000000f]: app_sms.c:1725 sms_process: No data, hanging up
[Sep  7 22:03:52] NOTICE[10701][C-0000000f]: app_sms.c:2038 sms_exec: channel hangup
  == Spawn extension (internal, 1010, 3) exited non-zero on 'SIP/1002-0000001c'
base-gateway*CLI> 
 

Да и SMS не появляется в папке /var/spool/asterisk/sms/mttx.

alexey@base-gateway:~$ sudo ls /var/spool/asterisk/sms/mttx
alexey@base-gateway:~$ sudo ls /var/spool/asterisk/outgoing

Как я понял передавать SMS по наземным аналоговым линиям можно и есть протокол ETSI ES 201 912. И вот он http://www.etsi.org/deliver/etsi_es/201900_201999/201912/01.01.01_50/es_201912v010101m.pdf

Внимание вопрос, а вообще можно отправить SMS с DECT-телефона (который Siemens Gigaset SL910 с номером 1002), чтобы она хотя бы появилась в SMS-центре (у которого номер 1010)? Вот тут как-то работает http://habrahabr.ru/post/172345/

★★★★★

Последнее исправление: Root-msk (всего исправлений: 3)

не знаю помогу тебе или нет. но для меня в астериске только два способа отправки sms через

chan_dongle - для модемов huawei демон smsd - для отстальных модемов.

но оба используют структуру команд АТ.

попробуй через screen, minicom зайти на модем и через AT команды отправить смс.

Nurmukh ★★★
()
Ответ на: комментарий от Nurmukh

не знаю помогу тебе или нет. но для меня в астериске только два способа отправки sms через

chan_dongle - для модемов huawei демон smsd - для отстальных модемов.

но оба используют структуру команд АТ.

попробуй через screen, minicom зайти на модем и через AT команды отправить смс.

Да тут вообще не то. Тут надо по обычному DECT-телефону, который соединен с шлюзом по медному проводу передавать SMS.

Root-msk ★★★★★
() автор топика

Да, много написано и самое главное все по делу. Настроил методом тыка. И получился вот такой extensions.diff


--- extensions.conf	2015-09-08 18:39:35.381638857 +0300
+++ extensions.conf	2015-09-08 18:41:09.717637289 +0300
@@ -29,7 +29,9 @@
 exten => 0999,n,Hangup()
 exten => 1010,1,NoOp(SMS ${CALLERID(num)})
 exten => 1010,n,Answer()
+exten => 1010,n,Wait(2)
 exten => 1010,n,SMS(1010,as)
+exten => 1010,n,Wait(1)
 exten => 1010,n,Hangup()
 exten => _X.,1,NoOp()
 exten => _X.,n,Dial(SIP/1000/${EXTEN})

Теперь файл /etc/asterisk/extensions.conf выглядит так:


[globals]

[general]

autofallthrough=yes

[default]

[incoming_calls]


[outgoing_calls]


[internal]

exten => 1001,1,Dial(SIP/1001,30)
exten => 1001,n,Hangup()
exten => 1002,1,Dial(SIP/1002,30)
exten => 1002,n,Hangup()
exten => 1003,1,Dial(SIP/1003,30)
exten => 1003,n,Hangup()
exten => 1004,1,Dial(SIP/1004,30)
exten => 1004,n,Hangup()
exten => 1005,1,Dial(SIP/1005,30)
exten => 1005,n,Hangup()
exten => 0999,1,NoOp(${CALLERID})
exten => 0999,n,Dial(SIP/1002,45)
exten => 0999,n,Hangup()
exten => 1010,1,NoOp(SMS ${CALLERID(num)})
exten => 1010,n,Answer()
exten => 1010,n,Wait(2)
exten => 1010,n,SMS(1010,as)
exten => 1010,n,Wait(1)
exten => 1010,n,Hangup()
exten => _X.,1,NoOp()
exten => _X.,n,Dial(SIP/1000/${EXTEN})

[phones]
include => internal
include => outgoing_calls
include => incoming_calls

После чего все OK


alexey@base-gateway:~$ sudo asterisk -rvvvvv
Asterisk 11.11.0~dfsg-2ubuntu1, Copyright (C) 1999 - 2013 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 11.11.0~dfsg-2ubuntu1 currently running on base-gateway (pid = 11218)
  == Using SIP RTP CoS mark 5
    -- Executing [1010@internal:1] NoOp("SIP/1002-00000001", "SMS 1002") in new stack
    -- Executing [1010@internal:2] Answer("SIP/1002-00000001", "") in new stack
       > 0x7f38a0006ca0 -- Probation passed - setting RTP source address to 172.22.8.2:9010
    -- Executing [1010@internal:3] Wait("SIP/1002-00000001", "2") in new stack
    -- Executing [1010@internal:4] SMS("SIP/1002-00000001", "1010,as") in new stack
 sms argc 2 queue <1010> opts <as> addr <> body <>
 initial delay 300ms
    -- SMS TX 93 00
    -- SMS RX 91 10 01 03 04 81 01 30 00 00 08 D4 F2 9C DE 9A 36 A7 E6
[Sep  8 09:37:00] NOTICE[11278][C-00000001]: app_sms.c:1089 sms_writefile: Received to /var/spool/asterisk/sms/morx/1010.2015-09-08T09:37:00-1
    -- SMS TX 95 02 00 00
    -- SMS RX 94 00 6C
[Sep  8 09:37:00] NOTICE[11278][C-00000001]: app_sms.c:2038 sms_exec: channel hangup
    -- Executing [1010@internal:5] Wait("SIP/1002-00000001", "1") in new stack
  == Spawn extension (internal, 1010, 5) exited non-zero on 'SIP/1002-00000001'
base-gateway*CLI> exit
Asterisk cleanly ending (0).
Executing last minute cleanups
alexey@base-gateway:~$ sudo cat /var/spool/asterisk/sms/morx/1010.2015-09-08T09:37:00-1
oa=1002
da=1003
ud=Test-SMS
scts=2015-09-08T09:37:00
dcs=0
mr=3

Зачем нужен Wait(2) и Wait(1) я так и не понял. Да, тоже не понял, почему телефон добавляет 0 в номере SMSC. Пришлось прописать вместо 1010, просто 101.

Root-msk ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.