Dongle0 error sending sms message

Появилась интересная задача, которая заключается в том что нужно подключить GSM-модем USB HUAWEI E1550 к Asterisk 13 работающий на Debian 8 Jessie. Настроить возможность принимать/отправлять SMS, принимать/звонить с номера находящегося в GSM-модеме.

Появилась интересная задача, которая заключается в том что нужно подключить GSM-модем USB HUAWEI E1550 к Asterisk 13 работающий на Debian 8 Jessie. Настроить возможность принимать/отправлять SMS, принимать/звонить с номера находящегося в GSM-модеме.

Рекомендуется чтобы GSM-модем HUAWEI E1550 работал на прошивке версии: 11.608.12.00.143, а так же чтобы работал только в режиме «только модем».

На момент написания статьи используемая версия Asterisk — 13.25.0, который развернут на Debian 8 Jessie (как развернуть Asterisk 13 на Debian 8 Jessie, можно по этой статье)

Настройка системы и GSM-модема

Обновляем систему до актуального состояния:

aptget update && aptget upgrade y

Устанавливаем необходимые пакеты для работы с USB GSM шлюзом:

aptget install usbmodeswitch minicom

usb-modeswitch необходима для автоматического переключения устройства из режима, minicom необходима для подключения к последовательным портам (COM).

Подключаем GSM-модем HUAWEI E1550, проверяем появились ли устройства ttyUSB*:

ls al /dev | grep ttyUSB

crwrw 1 root dialout 188, 0 фев 27 11:34 ttyUSB0

crwrw 1 root dialout 188, 1 фев 27 11:33 ttyUSB1

crwrw 1 root dialout 188, 2 фев 27 12:37 ttyUSB2

Теперь необходимо перевести GSM-модем HUAWEI E1550 в режим работы «только модем».

В случае если GSM-модем HUAWEI E1550, уже находится в режиме работы «только модем», то пропускайте данный пункт и переходите к установке модуля chan_dongle.

Запускаем утилиту для подключения к последовательным портам (COM):

Выбираем пункт «Настройка последовательного порта»:

            +[конфигурация]+

            | Каталоги и файлы                   |

            | Протоколы                          |

            | Настройка последовательного порта  |

            | Модем и дозвон                     |

            | Экран и клавиатура                 |

            | Сохранить настройки как dfl        |

            | Сохранить настройки как...         |

            | Выход                              |

            | Выход из Minicom                   |

            ++

Нажимаем «A» для выбора имени устройства COM порта, вводим название устройства «/dev/ttyUSB0»

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

    ++

    | A Последовательный порт          : /dev/ttyUSB0                     |

    | B Размещение lockфайла          : /var/lock                        |

    | C Программа при выходе           :                                  |

    | D Программа при запуске          :                                  |

    | E Скорость/Чётность/Биты         : 115200 8N1                       |

    | F Аппаратное управление потоком  : Да                               |

    | G Программное управление потоком : Нет                              |

    |                                                                       |

    |    Какую настройку изменить?                                          |

    ++

            | Экран и клавиатура                 |

            | Сохранить настройки как dfl        |

            | Сохранить настройки как...         |

            | Выход                              |

            | Выход из Minicom                   |

            ++

Нажимаем 2 раза ENTER и выбираем «Сохранить настройки как…»

            +[конфигурация]+

            | Каталоги и файлы                   |

            | Протоколы                          |

            | Настройка последовательного порта  |

            | Модем и дозвон                     |

            | Экран и клавиатура                 |

            | Сохранить настройки как dfl        |

            | Сохранить настройки как...         |

            | Выход                              |

            | Выход из Minicom                   |

            ++

Вводим название профиля, нажимаем ENTER и выбираем пункт «Выход из Minicom»

Подключаемся к сохраненному профилю (я сохранил профиль как e1550):

В терминале, вводим команду AT, нажимаем ENTER, должен вернутся результат —  «ОК«.

Обратите внимание, что символы, которые вводим, могут не отображаться на экране! Однако, после ввода команды и нажатия Enter, GSM-модем должен отобразить результат.

После успешного выполнения команды AT, выполним команду, которая переключит режим работы GSM-модем, в режим работы «только модем»:

Доступные режимы работы GSM-модема HUAWEI E1550:

AT^U2DIAG=0 (режим только модем)
AT^U2DIAG=1 (режим модем + CD-ROM)
AT^U2DIAG=255 (режим модем + CD-ROM + Card Reader)
AT^U2DIAG=256 (режим модем + Card Reader)

Полезные AT-команды:

ATI — Информация о устройстве
AT+CIMI — IMSI модема
AT+CGSN — IMEI модема

Для выхода из программы нажмите Ctrl+A, затем нажмите Q и подтвердите выход нажатием Enter.

Установка модуля chan_dongle

Скачиваем исходник модуля chan_dongle под Asterisk 13 и разархивируем его:

cd /opt

wget https://github.com/olegkrv/asteriskchandongle/archive/asterisk13.zip

unzip asterisk13.zip

cd asteriskchandongleasterisk13

Выполняем сборку модуля, компиляцию и установку модуля:

aclocal && autoconf && automake a

./configure

make

make install

Не обращаем внимание на строчку «automake: error: no ‘Makefile.am’ found for any configure output» — это не является ошибкой

Копируем конфигурационный файл dongle.conf в каталог asterisk и назначаем ему нужные права:

cp etc/dongle.conf /etc/asterisk/

chown asterisk:asterisk /etc/asterisk/dongle.conf

Чтобы при подключении GSM-модема, Asterisk имел доступ к нему, необходимо устройству назначать владельца asterisk и группу dialout. Создаем файл (nano /etc/udev/rules.d/92-dongle.rules) со следующим содержимым:

KERNEL==«ttyUSB*», MODE=«0666», OWNER=«asterisk», GROUP=«dialout»

Перезапустим службу udev и asterisk:

service udev restart

service asterisk restart

Для проверки, переподключим GSM-модем к системе и проверим назначенные права на него:

ls al /dev | grep ttyUSB

crwrwrw 1 asterisk dialout 188, 0 фев 27 11:34 ttyUSB0

crwrwrw 1 asterisk dialout 188, 1 фев 27 11:33 ttyUSB1

crwrwrw 1 asterisk dialout 188, 2 фев 27 13:09 ttyUSB2

Настройка обработки SMS, USSD, Входящих/Исходящих вызовов

В файле конфигурации (/etc/asterisk/dongle.conf) опишем параметры подключенного устройства HUAWEI E1550.

Для примера скорректируем имеющуюся секцию [dongle0]:

[dongle0]

audio=/dev/ttyUSB1 ; tty порт для audio соединений;

data=/dev/ttyUSB2 ; tty порт для AT команд;

context=fromdongle ; используемый контекст

language=ru ; используемый язык

;imei=123456789012345

;imsi=123456789012345

Параметры imei, imsi должны автоматом подхватится при соединении asterisk c GSM-модемом. Если не этого не произошло, то можно в ручную их указать, в строках imei, imsi.

В консоли asterisk, перечитываем конфигурацию chan_dongle и проверяем состояние устройства. Если все было сделано правильно, то подключение к GSM-модему будет осуществлено и устройство будет отображаться в консоли asterisk:

asterisk rv

dongle reload now

dongle show devices

ID      Group State RSSI Mode Submode Provider Name Model  Firmware         IMEI     IMSI    Number

dongle0 0     Free  18   5    4       MTSRUS       E1550  11.608.12.00.143 3588***  2500*** Unknown

Теперь когда соединение с GSM-модемом установлено, настроим dialplan обработки SMS, USSD, входящих и исходящих вызовов. В файле конфигурации (/etc/asterisk/extensions.conf) добавляем следующее:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

[dongleincomingsms]

exten => sms,1,Noop(Incoming SMS from ${CALLERID(num)} ${BASE64_DECODE(${SMS_BASE64})})

exten => sms,n,System(echo ‘${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} — ${DONGLENAME} — ${CALLERID(num)}: ${BASE64_DECODE(${SMS_BASE64})}’ >> /var/log/asterisk/sms.txt)

exten => sms,n,Hangup()

[dongleincomingussd]

exten => ussd,1,Noop(Incoming USSD: ${BASE64_DECODE(${USSD_BASE64})})

exten => ussd,n,System(echo ‘${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} — ${DONGLENAME}: ${BASE64_DECODE(${USSD_BASE64})}’ >> /var/log/asterisk/ussd.txt)

exten => ussd,n,Hangup()

[dongleincomingcall]

exten => +7915*****13,1,Answer()

exten => +7915*****13,n,Playback(demoechotest)

exten => +7915*****13,n,Echo

exten => +7915*****13,n,Playback(demoechodone)

exten => +7915*****13,n,Hangup()

[dongleoutgoingcall]

exten = _X.,1,Dial(Dongle/dongle0/${EXTEN},,t)

exten = _X.,n,Hangup()

[fromdongle]

include => dongleincomingsms

include => dongleincomingussd

include => dongleincomingcall

include => dongleoutgoingcall

При поступлении SMS и USSD запросов, данные их будут сохранятся в тестовые файлы (/var/log/asterisk/sms.txt), (/var/log/asterisk/ussd.txt). При входящем звонке на номер который находится на GSM-модеме, будет запущен «ЭХО тест», при исходящем будет вызван набранный номер. 

Для наглядности работы модуля chan_dongle, приведу выводы из консоли asterisk.

Получение SMS:

[dongle0] <strong>Got SMS from +7985*****73: ‘ТЕСТОВОЕ СООБЩЕНИЕ’</strong>

Executing [sms@fromdongle:1] NoOp(«Local/sms@from-dongle-00000002;1», «Incoming SMS from +7985*****73 ТЕСТОВОЕ СООБЩЕНИЕ») in new stack

Executing [sms@fromdongle:2] System(«Local/sms@from-dongle-00000002;1», «echo ‘2019-02-27 11:24:31 — e1550 — +7985*****73: ТЕСТОВОЕ СООБЩЕНИЕ’ >> /var/log/asterisk/sms.txt») in new stack

Executing [sms@fromdongle:3] Hangup(«Local/sms@from-dongle-00000002;1», «») in new stack

== Spawn extension (fromdongle, sms, 3) exited nonzero on ‘Local/sms@from-dongle-00000002;1’

Пример отправки SMS:

dongle sms dongle0 +7917*****00 HELLO! THIS IS TEST MESSAGE!

[dongle0] SMS queued for send with id 0x7fc348000a90

[dongle0] Successfully sent SMS message 0x7fc348000a90

[Feb 27 11:30:22] NOTICE[852]: at_response.c:257 at_response_ok: [dongle0] Successfully sent SMS message 0x7fc348000a90

Пример отправки USSD запроса:

dongle ussd dongle0 *100#

[dongle0] USSD queued for send with id 0x2e44cc0

[dongle0] Successfully sent USSD 0x2e44cc0

[Feb 27 11:37:13] NOTICE[852]: at_response.c:267 at_response_ok: [e1550] Successfully sent USSD 0x2e44cc0

[dongle0] Got USSD type 0 ‘USSD Notify’: ‘Баланс:5676,62р ‘

Executing [ussd@fromdongle:1] NoOp(«Local/ussd@from-dongle-00000004;1», «Incoming USSD: Баланс:5676,62р «) in new stack

Executing [ussd@fromdongle:2] System(«Local/ussd@from-dongle-00000004;1», «echo ‘2019-02-27 11:37:15 — e1550: Баланс:5676,62р ‘ >> /var/log/asterisk/ussd.txt») in new stack

Executing [ussd@fromdongle:3] Hangup(«Local/ussd@from-dongle-00000004;1», «») in new stack

== Spawn extension (fromdongle, ussd, 3) exited nonzero on ‘Local/ussd@from-dongle-00000004;1’

Очистка SMS из памяти SIM и GSM-модема

Периодически рекомендуется очищать SMS из память SIM и GSM-модема.

Для очистки памяти SIM в консоли asterisk, вводим команды:

dongle cmd <dongle_name> AT+CPMS=«SM«,«SM«,«SM«

dongle cmd <dongle_name> AT+CMGD=1,4

Для очистки памяти GSM-модема в консоли asterisk, вводим команды:

dongle cmd <dongle_name> AT+CPMS=«ME«,«ME«,«ME«

dongle cmd <dongle_name> AT+CMGD=1,4

Понравилась или оказалась полезной статья, поблагодари автора

 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОБЛАГОДАРИ АВТОРА

Загрузка…

June 19 2015, 10:09

Category:

  • IT
  • Cancel

В статья будет расмотрен веб интерфейс для массовой рассылки смс с помощью USB GSM модемов прикрученных к asterisk.
Как собрать и настроить USB модема с asteriks уже куча мануалов — ищите без меня
Напоминаю что исходный код переехал теперь на новый адрес https://github.com/bg111/asterisk-chan-dongle
Описание как прикрутить веб интерфейс тут — http://www.pcbackup.it/asterisk-chan_dongle-huawei-graphical-interface-to-sms-massive-sending/
От туда же можете скачать и программу на итальянском языке или на русском — ссылка — https://yadi.sk/d/ukZ3dxzohLdm2
Я только распишу тоже самое по русски.
Для начала предположим что у вас FreePBX или Elastix — и все настройки из apacha и php у вас уже работают
Скачиваете программу и распологаете в каталоге /var/www/html/pcbackup/
Проверяете открывается ли веб интерфейс пройдя по адресу http://адрес_сервера/pcbackup

Если открылось — то всё отлично, приступаем к настройке
Прежде всего надо определиться как мы наименовали модемы в asterisk
asterisk -rx ‘dongle show devices’

dongle show devices

ID           Group State      RSSI Mode Submode Provider Name  Model      Firmware          IMEI             IMSI             Number

dongle0      0     Free       22   0    0       MegaFon RUS    E173       11.126.16.17.209  861961019532697  250023007904029  Unknown
Видим для примера имя dongle0 через который модем будем отправлять СМС — имя берется и ваших настроек dongle.conf
========================================================================
теперь пробуем отправить тестовую СМС через наш
dongle0
asterisk -rx ‘dongle sms dongle0 +79xxxyyyzzz Это тестовая СМС’
Если СМС пришла — всё отлично — двигаемся дальше
если ще модем назывется beeline то отправка выглядит вот так

asterisk -rx ‘dongle sms beeline +79xxxyyyzzz Это тестовая СМС’

========================================================================
Теперь нам надо отредактировать исходники программы чтобы внести названия модемов
и исправить код страны
nano /var/www/html/pcbackup/elabora.php
ищем два места
первый

$output = shell_exec(«$command «dongle sms dongle0 $csv_array[$i] $messaggio » «);
и второй
$output = shell_exec(«$command «dongle sms dongle0 +39$csv_array[$i] $messaggio » «);

========================================================================
У автора задумка следующая — если телефон начинается на + то отправляется через первый вызов
(если номер на + и следующие две цифры в диапозоне от 0 до 9 и последующие 9 цифрт тоже в диапозоне от 0 до 9 тогда …)
вот этот кусок $pattern = «^(+)([0-9]{2})([0-9]{9,})$^»;
если номер на который отправляем без + отправляем через второй вызов
Тут все зависит от ваших запросов — если у вас два модема можете разнести по разным модема — отдавая номер с плюсом или без него
Если же у вас один модем — просто правите эти два места до вида
первый (правите dongle0 — до вашего названия модема (на пример beeline))

$output = shell_exec(«$command «dongle sms beeline $csv_array[$i] $messaggio » «);
и второй ( правите имя модема и меняете код страны ( с +39 до просто + ))
$output = shell_exec(«$command «dongle sms beeline +$csv_array[$i] $messaggio » «);
========================================================================
Следующий этап это выставления правильных прав на каталог загрузки списка телефонов
chmod 777 /var/www/html/pcbackup/upload
Если у вас FreePBX или Elastix там необходимо еще сменить и владельца каталога до asterisk:asterisk

chown -R asterisk:asterisk /var/www/html/pcbackup
========================================================================
Подготавливаем файл для загруки списка телефонов, можете хоть в блокноте хоть в excel (выгрузка в формате csv разделитель запятая)
формат: номера телефонов через запятую
79120000001,
79120000002,
Загружаем список через выбор файла в программу вводим текст для отправки и нажимаем отправку
Если всё сделано успешно — начнут приходить СМС

Не используйте кавычьки и пробелы в DongleSendSMS, была аналогичная проблема.

same => n,DongleSendSMS(dongle0,+7921хххх,test01,1440,yes)

Так же в том примере в DongleSendSMS прилетает номер получателя в виде sip:+7921хххх, что нам неподходит.

Вот рабочая конструкция

exten => _+380XXXXXXXXX,1,NoOp(SMS send to dongle)
same => n,NoOp(To ${MESSAGE(to)})
same => n,NoOp(From ${MESSAGE(from)})
same => n,NoOp(Body ${MESSAGE(body)})
same => n,Set(SMSTEMP=${CUT(MESSAGE(to),@,1)})
same => n,Set(SMSTO=${CUT(SMSTEMP,:,2)})
same => n,DongleSendSMS(Vodafone,${SMSTO},${MESSAGE(body)},1440,yes)
;same => n,System(asterisk -rx «dongle sms Vodafone ${SMSTO} ${MESSAGE(body)}») если не работает DongleSendSMS можно отправлять через System
same => n,Hangup()

Asterisk 13.11.2

  • Comment

I have successfully set up raspbx and can make and receive calls via
Chan_dongle . I am reciving text and voicmeils to email.

Unfortunately I an away from the modem so I do not know the model number but lsusb reports this modem as
Bus 001 Device 004: ID 12d1:1433 Huawei Technologies Co., Ltd.

I have two problems not related to voice calls

Problem 1 SMS
When I try send an SMS no matter how I format the number I get
[2015-10-26 01:43:24] ERROR[1682]: at_response.c:499 at_response_error:
[dongle0] Error sending SMS message 0xb64014b0

Problem 2 USSD
When I try to send USSD I get
[dongle0] Successfully sent USSD 0xb64964f8
[2015-10-25 23:14:18] NOTICE[4627]: at_response.c:267 at_response_ok:
[dongle0] Successfully sent USSD 0xb64964f8
[dongle0] Got USSD type 0 ‘USSD Notify’: ‘Aplicacion desconocida’
— Executing [ussd@from-trunk-dongle:1]
Set(«Local/ussd@from-trunk-dongle-00000003;1», «CALLERID(name)=ussd») in
new stack
— Executing [ussd@from-trunk-dongle:2]
Goto(«Local/ussd@from-trunk-dongle-00000003;1», «from-trunk,ussd,1») in new
stack
— Goto (from-trunk,ussd,1)
— Executing [ussd@from-trunk:1]
Set(«Local/ussd@from-trunk-dongle-00000003;1», «FROM_DID=ussd») in new
stack
— Executing [ussd@from-trunk:2]
NoOp(«Local/ussd@from-trunk-dongle-00000003;1», «Received an unknown call
with DID set to ussd») in new stack
— Executing [ussd@from-trunk:3]
Goto(«Local/ussd@from-trunk-dongle-00000003;1», «s,a2») in new stack
— Goto (from-trunk,s,2)
— Executing [s@from-trunk:2]
Answer(«Local/ussd@from-trunk-dongle-00000003;1», «») in new stack
[2015-10-25 23:14:20] WARNING[10670][C-00000014]: chan_sip.c:22131
func_header_read: This function can only be used on SIP channels.
— Executing [s@from-trunk:3]
Log(«Local/ussd@from-trunk-dongle-00000003;1»,
«WARNING,Friendly Scanner from «) in new stack
[2015-10-25 23:14:20] WARNING[10670][C-00000014]: Ext. s:3 @ from-trunk:
Friendly Scanner from
— Executing [s@from-trunk:4]
Wait(«Local/ussd@from-trunk-dongle-00000003;1», «2») in new stack
[2015-10-25 23:14:22] WARNING[10670][C-00000014]: channel.c:1309
ast_queue_frame: Exceptionally long voice queue length queuing to
Local/ussd@from-trunk-dongle-00000003;2
— Executing [s@from-trunk:5]
Playback(«Local/ussd@from-trunk-dongle-00000003;1», «ss-noservice») in new
stack
— Local/ussd@from-trunk-dongle-00000003;1 Playing
‘ss-noservice.slin’ (language ‘en’)
[2015-10-25 23:14:24] WARNING[10670][C-00000014]: channel.c:1309
ast_queue_frame: Exceptionally long voice queue length queuing to
Local/ussd@from-trunk-dongle-00000003;2
[2015-10-25 23:14:25] WARNING[10670][C-00000014]: channel.c:1309
ast_queue_frame: Exceptionally long voice queue length queuing to
Local/ussd@from-trunk-dongle-00000003;2
[2015-10-25 23:14:26] WARNING[10670][C-00000014]: channel.c:1309
ast_queue_frame: Exceptionally long voice queue length queuing to
Local/ussd@from-trunk-dongle-00000003;2
[2015-10-25 23:14:27] WARNING[10670][C-00000014]: channel.c:1309
ast_queue_frame: Exceptionally long voice queue length queuing to
Local/ussd@from-trunk-dongle-00000003;2
— Executing [s@from-trunk:6]
SayAlpha(«Local/ussd@from-trunk-dongle-00000003;1», «ussd») in new stack
— Local/ussd@from-trunk-dongle-00000003;1 Playing ‘letters/u.slin’
(language ‘en’)
— Local/ussd@from-trunk-dongle-00000003;1 Playing ‘letters/s.slin’
(language ‘en’)
[2015-10-25 23:14:29] WARNING[10670][C-00000014]: channel.c:1309
ast_queue_frame: Exceptionally long voice queue length queuing to
Local/ussd@from-trunk-dongle-00000003;2
— Local/ussd@from-trunk-dongle-00000003;1 Playing ‘letters/s.slin’
(language ‘en’)
— Local/ussd@from-trunk-dongle-00000003;1 Playing ‘letters/d.slin’
(language ‘en’)
[2015-10-25 23:14:30] WARNING[10670][C-00000014]: channel.c:1309
ast_queue_frame: Exceptionally long voice queue length queuing to
Local/ussd@from-trunk-dongle-00000003;2
— Executing [s@from-trunk:7]
Hangup(«Local/ussd@from-trunk-dongle-00000003;1», «») in new stack
== Spawn extension (from-trunk, s, 7) exited non-zero on
‘Local/ussd@from-trunk-dongle-00000003;1’
— Executing [h@from-trunk:1]
Macro(«Local/ussd@from-trunk-dongle-00000003;1», «hangupcall,») in new stack
— Executing [s@macro-hangupcall:1]
ExecIf(«Local/ussd@from-trunk-dongle-00000003;1»,
«0?Set(CDR(recordingfile)=.)») in new stack
— Executing [s@macro-hangupcall:2]
GotoIf(«Local/ussd@from-trunk-dongle-00000003;1», «1?theend») in new stack
— Goto (macro-hangupcall,s,4)
— Executing [s@macro-hangupcall:4]
Hangup(«Local/ussd@from-trunk-dongle-00000003;1», «») in new stack
== Spawn extension (macro-hangupcall, s, 4) exited non-zero on
‘Local/ussd@from-trunk-dongle-00000003;1’ in macro ‘hangupcall’
== Spawn extension (from-trunk, h, 1) exited non-zero on
‘Local/ussd@from-trunk-dongle-00000003;1’

 

Last edit: MarkosJal 2015-10-26

Всем привет.

Юзаю стандартный 3g модем Huawei E1550/E1750. Это больше МАНУАЛ, но так же прошу помочь расширить функционал! 2 человека очень обрадовались когда я им скинул рабочий когфиг, решил поделиться миром!

И так, у меня стоит 13 Asterisk, FreePBX 13,Chan_dongle. Встала задача получать и отправлять смс прямо из сипфона.

Получалка и отправлялка смс через Chan_dongle в Sip клиент.

Работает в Zoiper, Microsip, PortGo. Больше не проверял… Когда смс приходит на донгл, ее перекидывает на сип сразу под номером с которого она пришла. Соответственно можно на нее ответить или написать новую.

999 это номер sip который может получать и слать SMS с модема.

dongle0 — имя модема с которого получать и слать смс если модемов много, то получать со всех, а отправлять только с одного (dongle0)

#нет отложенной отправки смс (если сип 999 в сети, смс получит, а если нет — то нет, нооооо в лог пишет при любом раскладе)

если используется FREEPBX — в админке:Settings>>>Asterisk SIP Settings, вкладка Chan SIP settings, внизу есть поля для заполнения (Other SIP Settings). А если чистый астериск, то пихать сюда /etc/asterisk/sip.conf

вот параметры:


accept_outofcall_message=yes
outofcall_message_context=messages
auth_message_requests=no
textsupport=yes

/etc/asterisk/extensions_custom.conf

[from-trunk-dongle]
exten => sms,1,Set(MESSAGE(body)=${BASE64_DECODE(${SMS_BASE64})})
exten => sms,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DONGLENAME} - ${CALLERID(num)}: ${BASE64_DECODE(${SMS_BASE64})})' >> /var/log/asterisk/sms.txt)
exten => sms,n,Set(MESSAGE(from)="${CALLERID(num)}" <${CALLERID(num)}>)
exten => sms,n,Set(CALLERID(name)=${CALLERID(num)})
exten => sms,n,Verbose(1,${MESSAGE(from)})
exten => sms,n,MessageSend(sip:999,${MESSAGE(from)})
exten => sms,n,Hangup()

exten => _.,1,Set(CALLERID(name)=${CALLERID(num)})
exten => _.,n,Goto(from-trunk,${DONGLEIMEI},1)

exten => ussd,1,Verbose(Incoming USSD: ${BASE64_DECODE(${USSD_BASE64})})
exten => ussd,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DONGLENAME}: ${BASE64_DECODE(${USSD_BASE64})}' >> /var/log/asterisk/ussd.txt)
exten => ussd,n,Hangup()

[messages]
include => send-sms
exten => _XXX,1,MessageSend(sip:${EXTEN},"${CALLERID(name)}"${MESSAGE(from)})

[send-sms]
exten => _.,1,NoOp(SMS send to dongle)
same => n,NoOp(To ${MESSAGE(to)})
same => n,NoOp(From ${MESSAGE(from)})
same => n,NoOp(Body ${MESSAGE(body)})
same => n,Set(SMSTO=${EXTEN})
same => n,DongleSendSMS(dongle0,${SMSTO},"${MESSAGE(body)}",1440,yes)
same => n,Hangup()

Вопрос, а что делать если модемов 5, юзеров 15 и только 5 из них должны отправлять смс с конкретного транка, а остальные должны общаться междус обой по [messages]?

Как сделать проверку в стиле:
 

if extension = 999 and numberTO-not(555,444,6666666,999999,777777,999999,77774,44,44444)goto [send-sms]

А в [send-sms] проверку:

if extension = 999 goto same => n,DongleSendSMS(dongle0,${SMSTO},"${MESSAGE(body)}",1440,yes)
elseif extension = 444 goto same => n,DongleSendSMS(dongle1,${SMSTO},"${MESSAGE(body)}",1440,yes)
 
итд

Понравилась статья? Поделить с друзьями:
  • Dongle ошибка драйвера windows 10
  • Dongle driver error
  • Dongle bluetooth ошибка драйвера
  • Dongin thermo ошибка cer
  • Dongin thermo dm 500c коды ошибок