Бюджетное решение Asterisk <-> GSM [часть 2]
Модераторы: Admins, Модераторы
lshw спасёт отцов русской демократии.
Свежак chan_dongle тут https://github.com/bg111/asterisk-chan-dongle/
Смена IMEI Huawei E1550 E173 E1752 K3765 http://www.e1550.mobi/ от $0,3042 за IMEI
Смена IMEI Huawei E1550 E173 E1752 K3765 http://www.e1550.mobi/ от $0,3042 за IMEI
Как отключить dongl
Установил dongl все работает , но за ненадобностью надо как то его отключить подскажите неопытному
как выключить модуль. чтобы логи не засорял попытками найти usb устройство.
как выключить модуль. чтобы логи не засорял попытками найти usb устройство.
Да спасибо!![url=http://asteriskforum.ru/viewtopic.php?p=83171#83171][img]http://asteriskforum.ru/images/quotebackarrow.gif[/img][/url] april22 @ Ср Июн 29, 2016 06:59 писал(а):module unload chan_dongle
так пойдет ?
Added after 1 hours 18 minutes:
Подскажите чего сделать чтобы после перезагрузки модуль не включался ?[url=http://asteriskforum.ru/viewtopic.php?p=83171#83171][img]http://asteriskforum.ru/images/quotebackarrow.gif[/img][/url] april22 @ Ср Июн 29, 2016 06:59 писал(а):module unload chan_dongle
так пойдет ?
мож файл chan_dongle.so удалить, а?
Свежак chan_dongle тут https://github.com/bg111/asterisk-chan-dongle/
Смена IMEI Huawei E1550 E173 E1752 K3765 http://www.e1550.mobi/ от $0,3042 за IMEI
Смена IMEI Huawei E1550 E173 E1752 K3765 http://www.e1550.mobi/ от $0,3042 за IMEI
-
- Сообщения: 1
- Зарегистрирован: 03 авг 2016, 07:29
подскажите, есть ли рабочее решение для chan_dongle для отправки через: dongle sms dongle0 +7900000000 текст сообщения из ста пятидесяти символов
неограниченные по длине составные СМС из русских символов.
Нужно отправлять русские СМС длинной 150-200 символов. Как я понимаю нужно редактировать pdu.c. В программировании не силен, но отблагодарю (не бесплатно) если поделитесь рабочим решением. Тему регулярно просматриваю. Спасибо. aleksey собака sysoev точка net.
неограниченные по длине составные СМС из русских символов.
Нужно отправлять русские СМС длинной 150-200 символов. Как я понимаю нужно редактировать pdu.c. В программировании не силен, но отблагодарю (не бесплатно) если поделитесь рабочим решением. Тему регулярно просматриваю. Спасибо. aleksey собака sysoev точка net.
PDU шлите, в чём проблема то?
Дохрена либ на всех языках программирования по сборке-разборке PDU
chan_dongle это канальный драйвер.
Вы же не предъявляете претензии драйверу вашего диска, что он файлы MKV не умеет проигрывать?
Дохрена либ на всех языках программирования по сборке-разборке PDU
chan_dongle это канальный драйвер.
Вы же не предъявляете претензии драйверу вашего диска, что он файлы MKV не умеет проигрывать?
Свежак chan_dongle тут https://github.com/bg111/asterisk-chan-dongle/
Смена IMEI Huawei E1550 E173 E1752 K3765 http://www.e1550.mobi/ от $0,3042 за IMEI
Смена IMEI Huawei E1550 E173 E1752 K3765 http://www.e1550.mobi/ от $0,3042 за IMEI
Application DongleSendSMS делает только постановку команды на отправку SMS в очередь.
При этом синхронно, до возврата из функции проверяется только наличие аргументов,
проверка номер получателя что содержит только цифры и опционально начинается с +,
и то, что команды успешно добавлены в очередь.
Если какая то проверка прошла не удачно функция ругается в лог уровнем ERROR, а в ядро астериска возвращает не 0.
Что там астериск с этим значением делает я не в курсе, предполагаю что хорошего
Вообще же если Application возвращает -1 то астериск прекращает выполнение диалплана, а канал убивает.
Но это не результат даже отправки СМС, не говоря уже о его получении.
Контролировать успешность _отправки_ можно либо в логе/консоли через сообщение, либо в manager - отправляется
результат исполнения модемом команд по отправке СМС.
Притом идентификатор СМС в очереди условно-уникальный.
Это значит если у вас в очереди одновременно 3 СМС - все будут иметь разные идентификаторы.
А вот если вы сначала послали одно СМС, получили результат, а потом послали другое - идентификаторы могут иметь одинаковое числовое значение.
При этом синхронно, до возврата из функции проверяется только наличие аргументов,
проверка номер получателя что содержит только цифры и опционально начинается с +,
и то, что команды успешно добавлены в очередь.
Если какая то проверка прошла не удачно функция ругается в лог уровнем ERROR, а в ядро астериска возвращает не 0.
Что там астериск с этим значением делает я не в курсе, предполагаю что хорошего

Вообще же если Application возвращает -1 то астериск прекращает выполнение диалплана, а канал убивает.
Но это не результат даже отправки СМС, не говоря уже о его получении.
Контролировать успешность _отправки_ можно либо в логе/консоли через сообщение, либо в manager - отправляется
результат исполнения модемом команд по отправке СМС.
Притом идентификатор СМС в очереди условно-уникальный.
Это значит если у вас в очереди одновременно 3 СМС - все будут иметь разные идентификаторы.
А вот если вы сначала послали одно СМС, получили результат, а потом послали другое - идентификаторы могут иметь одинаковое числовое значение.
Свежак chan_dongle тут https://github.com/bg111/asterisk-chan-dongle/
Смена IMEI Huawei E1550 E173 E1752 K3765 http://www.e1550.mobi/ от $0,3042 за IMEI
Смена IMEI Huawei E1550 E173 E1752 K3765 http://www.e1550.mobi/ от $0,3042 за IMEI
Как написано в моём Нике - я НУБ. (если можно, давайте ответ с конкретными командами шела\консоли)
Использую сборку для личных целей (пересылка смс на email + складываю в txt для архива) - остальное(звонки) ХОББИ.
Для будущих искателей - повышу цитируемость (описанием своей проблемы) - спрятал под спойлер, а то гугл не находит...
[spoiler]Asterisk 13.9.1 (на FreeBSD 10.3 которая установлена как виртуалка внутри VMWARE)
Установлен chan_dongle: Huawei 3G Dongle Channel Driver, Version 1.1, Revision 34 (но видать не "оригинальный", так как выше (уважаемый за труд) bg1 дал критическую оценку "этой сборке chan_dongle под Asterisk 13")
Настроил план набора (диалплан), который находится в extension.conf таким образом, чтобы приходящий на один модем (GSM2) звонок, без поднятия трубки сразу совершал исходящий звонок через другой модем (GSM1). По сути - такая переадресация звонка идет. Трубку с входящего звонка модема не хочу поднимать сразу - хочется чтобы соединение происходило в момент поднятия трубки конечным абонентом (мною).
Выглядит это в extension.conf как-то так:
Такая конструкция работает отлично если совершаю звонок с SIP, (получается SIP->GSM), но не работает для GSM->GSM (GSM2GSM).
возникает следующая ошибка:
Самое удивительное - в первый раз вызов таки проходит! Правда очень специфично.
Опишу по этапам:
1) Сегмент Phone0->GSM2 - слышен сигнал вызова абонента
2) Астериск пишет в консоли, что начинает вызывать Phone2 с GSM1 (и сразу ошибки - описаны выше)
3) Произвожу отбой на Phone0, а GSM1 всё равно продолжает вызывать Phone2.
4) Произвожу отбой на Phone2 - Asterisk "вешается" причем наглухо. Из консоли (CLI) не реагирует на команду "core restart now", а "dongle show devices" - показывает пустую шапку (вообще без модемов).
После такой неудачной попытки - астериск можно перезапустить только снаружи (service asterisk onestop => service asterisk onestart).
Но успешных вызовов больше не получается: только ошибка описанная выше (для вызывающего Phone0 - сигнал занято)
Делал поисковые запросы "Unable to find a codec translation path: (none|slin) -> (none)" - но там ничего, полезного не выводится, так как по большей части описываются проблемы с SIP (гугл сразу предлагает "asterisk g729 codec") - короче часа 3 времени потрачено на чтение попыток решения неревалентной проблемы.
Правильный запрос "asterisk gsm chan_dongle пробрасывать" привел меня в http://www.asteriskforum.ru/viewtopic.php?p=51502. вот с 80 страницы сюда и добрался.
[/spoiler]
Очень надеюсь на ответ latv или VladV у которых получилось решить данную проблему. (а может ещё кто решил, но не отписывался)
Использую сборку для личных целей (пересылка смс на email + складываю в txt для архива) - остальное(звонки) ХОББИ.
Спасибо за труд, вот если бы понять как его "применить" (с указанием, откуда брать исходники).
Для будущих искателей - повышу цитируемость (описанием своей проблемы) - спрятал под спойлер, а то гугл не находит...
[spoiler]Asterisk 13.9.1 (на FreeBSD 10.3 которая установлена как виртуалка внутри VMWARE)
Установлен chan_dongle: Huawei 3G Dongle Channel Driver, Version 1.1, Revision 34 (но видать не "оригинальный", так как выше (уважаемый за труд) bg1 дал критическую оценку "этой сборке chan_dongle под Asterisk 13")
Настроил план набора (диалплан), который находится в extension.conf таким образом, чтобы приходящий на один модем (GSM2) звонок, без поднятия трубки сразу совершал исходящий звонок через другой модем (GSM1). По сути - такая переадресация звонка идет. Трубку с входящего звонка модема не хочу поднимать сразу - хочется чтобы соединение происходило в момент поднятия трубки конечным абонентом (мною).
Выглядит это в extension.conf как-то так:
Код: Выделить всё
[dongle_inGSM2]
exten => _38.,n,Verbose(in _38 case == ${EXTEN} === from ${CALLERID(NUM)} ); -- для идентификации в консоли, что звонок идет по правильной ветке диалплана
exten => _38.,n,Dial(DONGLE/GSM1/+380012345678);
exten => h,n,Hangup();
возникает следующая ошибка:
Код: Выделить всё
in _38 case == 380933333333 === from +38091ООООООО
-- Executing [380933333333@dongle_inGSM2:4] Dial("Dongle/GSM2-0100000000", "DONGLE/GSM1/+380012345678") in new stack
-- Called DONGLE/GSM1/+380012345678
[02:27:30] ERROR[100622][C-00000002]: translate.c:1314 ast_translator_best_choice: Cannot determine best translation path since one capability supports no formats
[02:27:30] WARNING[100622][C-00000002]: channel.c:5478 set_format: Unable to find a codec translation path: (none|slin) -> (none)
[02:27:30] WARNING[100622][C-00000002]: channel.c:6401 ast_channel_make_compatible_helper: Unable to set read format on channel Dongle/GSM1-0100000000 to none
Опишу по этапам:
1) Сегмент Phone0->GSM2 - слышен сигнал вызова абонента
2) Астериск пишет в консоли, что начинает вызывать Phone2 с GSM1 (и сразу ошибки - описаны выше)
3) Произвожу отбой на Phone0, а GSM1 всё равно продолжает вызывать Phone2.
4) Произвожу отбой на Phone2 - Asterisk "вешается" причем наглухо. Из консоли (CLI) не реагирует на команду "core restart now", а "dongle show devices" - показывает пустую шапку (вообще без модемов).
После такой неудачной попытки - астериск можно перезапустить только снаружи (service asterisk onestop => service asterisk onestart).
Но успешных вызовов больше не получается: только ошибка описанная выше (для вызывающего Phone0 - сигнал занято)
Делал поисковые запросы "Unable to find a codec translation path: (none|slin) -> (none)" - но там ничего, полезного не выводится, так как по большей части описываются проблемы с SIP (гугл сразу предлагает "asterisk g729 codec") - короче часа 3 времени потрачено на чтение попыток решения неревалентной проблемы.
Правильный запрос "asterisk gsm chan_dongle пробрасывать" привел меня в http://www.asteriskforum.ru/viewtopic.php?p=51502. вот с 80 страницы сюда и добрался.
[/spoiler]
Очень надеюсь на ответ latv или VladV у которых получилось решить данную проблему. (а может ещё кто решил, но не отписывался)
я не выпускал chan_dongle для астериска выше чем 1.8, чем вы там пользуетесь я без понятия
Свежак chan_dongle тут https://github.com/bg111/asterisk-chan-dongle/
Смена IMEI Huawei E1550 E173 E1752 K3765 http://www.e1550.mobi/ от $0,3042 за IMEI
Смена IMEI Huawei E1550 E173 E1752 K3765 http://www.e1550.mobi/ от $0,3042 за IMEI
bg1, я знаю (читал выше) об этом и написал во втором абзаце под спойлером.
Я Вам другой вопрос приготовил: интернет полон вопросов-ответов как отправить "длинную СМС", но мало кто описывает принятие "длинной СМС" (составной) донглом.
Мы с Вами понимаем, что "Длинные СМС" это всего лишь несколько обособленных СМС, которые идут друг за дружкой.
Вот пример полученной "составной СМС" Бережно складированной в ТХТ (порядок сохранен):
Из примера ясно, что сначала принимается "серединка", потом "начало", а в конце "хвостик".
Так же видно, что никаких маркеров в тексте самой СМС нет, значит есть некое служебное поле, которое ни в переменную ${CALLERID(num)} ни в переменную ${BASE64_DECODE(${SMS_BASE64})} не помещается. При этом любая программа управляющая модемом (что с дровами идёт) спокойно собирает СМС любой длинны.
КАК?
Ну и к паре, второй вопрос: AC4#9#A3C23#9B=${CALLERID(num)} - как его превратить в то, что видим на экране телефона?

Я Вам другой вопрос приготовил: интернет полон вопросов-ответов как отправить "длинную СМС", но мало кто описывает принятие "длинной СМС" (составной) донглом.
Мы с Вами понимаем, что "Длинные СМС" это всего лишь несколько обособленных СМС, которые идут друг за дружкой.
Вот пример полученной "составной СМС" Бережно складированной в ТХТ (порядок сохранен):
Код: Выделить всё
11:44:49 - GSM2 - AC4#9#A3C23#9B: дарунок дзвінком на номер *450# (безкоштовно). Деталі: www.lifecell
11:44:49 - GSM2 - AC4#9#A3C23#9B: lifecell дарує Вам місяць безкоштовного Інтернету! Активуйте Ваш по
11:44:49 - GSM2 - AC4#9#A3C23#9B: .com.ua/free1gb та за номером 505
Так же видно, что никаких маркеров в тексте самой СМС нет, значит есть некое служебное поле, которое ни в переменную ${CALLERID(num)} ни в переменную ${BASE64_DECODE(${SMS_BASE64})} не помещается. При этом любая программа управляющая модемом (что с дровами идёт) спокойно собирает СМС любой длинны.
КАК?
Ну и к паре, второй вопрос: AC4#9#A3C23#9B=${CALLERID(num)} - как его превратить в то, что видим на экране телефона?
Ну как применяют патчи?
заходишь в нужную папку с софтом, который собираешься патчить, кладешь туда патч, и говоришь:
patch < my.patch
в зависимости от того, как сделан патч, может потребоваться ключик -p
patch -p 1 < my.patch
читайте man patch
заходишь в нужную папку с софтом, который собираешься патчить, кладешь туда патч, и говоришь:
patch < my.patch
в зависимости от того, как сделан патч, может потребоваться ключик -p
patch -p 1 < my.patch
читайте man patch
http://ss7.powerpbx.ru/ - рассказываю новичкам про SS7
Как читайте в мануалах и спеках. Вы взрослый человек, гуглите, расжовывать смысла не вижу.
Свежак chan_dongle тут https://github.com/bg111/asterisk-chan-dongle/
Смена IMEI Huawei E1550 E173 E1752 K3765 http://www.e1550.mobi/ от $0,3042 за IMEI
Смена IMEI Huawei E1550 E173 E1752 K3765 http://www.e1550.mobi/ от $0,3042 за IMEI
готов согласиться, в обмен на ссылку на конкретный "ман" и это загадочное слово "спеки"...[url=http://asteriskforum.ru/viewtopic.php?p=83561#83561][img]http://asteriskforum.ru/images/quotebackarrow.gif[/img][/url] bg1 @ Пт Сен 23, 2016 15:17 писал(а):Как читайте в мануалах и спеках. Вы взрослый человек, гуглите, расжовывать смысла не вижу.
Заранее спасибо.


(я ведь правильно понимаю речь идёт о Вашем канальном драйвере на модем chan_dongle для версий 1.8? http://wiki.e1550.mobi/ вроде как прикрыли(спёрли)....)
"Правильно гуглить" легко, когда знаешь, что искать. Когда в данном направлении опыт не накоплен - это как ложкой в море рыбу ловить: рано или поздно словишь, но обычно очень не скоро....
PS Спасибо latv, пойду почитаю про patch.
никто ничего не спирал и не прикрывал.
человек на университетском сервере держал вики и перестал держать.
я wiki не рулил.
кому то присылали копию контента вики.
с вас 10 баксов
https://en.wikipedia.org/wiki/Concatenated_SMS
и ещё 20
ETSI Specification: GSM 03.40 Version 5.3.0: July 1996
http://www.etsi.org/deliver/etsi_gts/03 ... 50300p.pdf
человек на университетском сервере держал вики и перестал держать.
я wiki не рулил.
кому то присылали копию контента вики.
с вас 10 баксов
https://en.wikipedia.org/wiki/Concatenated_SMS
и ещё 20
ETSI Specification: GSM 03.40 Version 5.3.0: July 1996
http://www.etsi.org/deliver/etsi_gts/03 ... 50300p.pdf
Свежак chan_dongle тут https://github.com/bg111/asterisk-chan-dongle/
Смена IMEI Huawei E1550 E173 E1752 K3765 http://www.e1550.mobi/ от $0,3042 за IMEI
Смена IMEI Huawei E1550 E173 E1752 K3765 http://www.e1550.mobi/ от $0,3042 за IMEI
bg1,
Спасибо за расширение моего кругозора, похоже я вопрос задал не точно: КАК с помощью chan_dongle получить эти заветные UDH (User Data Header \\ пользовательский заголовок для данных конкретной смс).
Чтобы получить из UDH: Field 4 (CSMS reference number - номер позволяющий идентифицировать данную составную СМС) и Field 6 (part's number in the sequence - номер смс внутри состава)
Причем, как понимаю, нужно это делать на лету, чтобы потом сшивать пришедшие в разных СМС переменные${BASE64_DECODE(${SMS_BASE64})} в одну, простой конкатенацией (пока знания не позволяют мне предположить, как это сделать внутри диалплана, так как он однопоточен - зато понимаю, как это снаружи сделать, допустим через вызов cron или в СУБД...)
(для последующих искателей подробностей всё здесь: https://en.wikipedia.org/wiki/Concatenated_SMS)
Пользу от второй ссылки (в контексте исходного вопроса) к сожалению не осознал.
Спасибо за расширение моего кругозора, похоже я вопрос задал не точно: КАК с помощью chan_dongle получить эти заветные UDH (User Data Header \\ пользовательский заголовок для данных конкретной смс).
Чтобы получить из UDH: Field 4 (CSMS reference number - номер позволяющий идентифицировать данную составную СМС) и Field 6 (part's number in the sequence - номер смс внутри состава)
Причем, как понимаю, нужно это делать на лету, чтобы потом сшивать пришедшие в разных СМС переменные${BASE64_DECODE(${SMS_BASE64})} в одну, простой конкатенацией (пока знания не позволяют мне предположить, как это сделать внутри диалплана, так как он однопоточен - зато понимаю, как это снаружи сделать, допустим через вызов cron или в СУБД...)
(для последующих искателей подробностей всё здесь: https://en.wikipedia.org/wiki/Concatenated_SMS)
Пользу от второй ссылки (в контексте исходного вопроса) к сожалению не осознал.

.
Для тех, кто соберется вручную "читать с модема СМС" через chan_dongle рекомендую почитать про соответствующие АТ-команды
Читать все СМС в модеме для режима простого текстового сообщения (Text Mode SMS):
Или в PDU формате по одному с помощью CMGR:
в этом случае 0(ноль) определяет порядковый номер смс в памяти. И модем выдаёт содержимое смс в PDU формате (при этом у меня chan_dongle думает, что пришла новая смс и превращая её в читаемый вид складывает в хранилище заново приводя к нормальному виду)
Для тех, кто соберется вручную "читать с модема СМС" через chan_dongle рекомендую почитать про соответствующие АТ-команды
Читать все СМС в модеме для режима простого текстового сообщения (Text Mode SMS):
Код: Выделить всё
CLI> dongle cmd GSM1 AT+CMGL="ALL"
Код: Выделить всё
CLI> dongle cmd GSM1 AT+CMGR=0
КАК хотите.
Вам молоток дали, за вас им ещё и стучать надо?
Ну тогда может и зарплату за вас получить
Вам молоток дали, за вас им ещё и стучать надо?
Ну тогда может и зарплату за вас получить

Свежак chan_dongle тут https://github.com/bg111/asterisk-chan-dongle/
Смена IMEI Huawei E1550 E173 E1752 K3765 http://www.e1550.mobi/ от $0,3042 за IMEI
Смена IMEI Huawei E1550 E173 E1752 K3765 http://www.e1550.mobi/ от $0,3042 за IMEI
Начинаю сам находить ответ на свой вопрос.
Искал в новом месте размещения wiki по chan_dongle (сколько разных редакций этого же материала перечитал, надеюсь здесь самый актуальный)
Там есть переменная CMGR (предполагаю в диалплане её вставлять нужно как ${CMGR} )
после чего разворачивать, (как ещё не придумал), так как bg1 - отказал "помощнику" во внедрении данного (готового) инструмента (хозяин-барин).
Added after 7 minutes:
А пока - просто играюсь с замечательным конструктором. (и помогаю всем кто будет после меня этим интересоваться развёрнутыми ответами на свои же вопросы)
Искал в новом месте размещения wiki по chan_dongle (сколько разных редакций этого же материала перечитал, надеюсь здесь самый актуальный)
Там есть переменная CMGR (предполагаю в диалплане её вставлять нужно как ${CMGR} )
после чего разворачивать, (как ещё не придумал), так как bg1 - отказал "помощнику" во внедрении данного (готового) инструмента (хозяин-барин).
Added after 7 minutes:
Напомню: я данный вопрос рассматриваю как хобби, и только для себя. ЗП получаю совсем за другой род занятий. Если вдруг (решу=получится) в будущем заработать на этих знаниях, с первой же зарплаты буду писать Вам, bg1, письмо с вопросом "куда перевести Вам деньги?"[url=http://asteriskforum.ru/viewtopic.php?p=83571#83571][img]http://asteriskforum.ru/images/quotebackarrow.gif[/img][/url] bg1 @ Вс Сен 25, 2016 20:37 писал(а):КАК хотите.
Вам молоток дали, за вас им ещё и стучать надо?
Ну тогда может и зарплату за вас получить
А пока - просто играюсь с замечательным конструктором. (и помогаю всем кто будет после меня этим интересоваться развёрнутыми ответами на свои же вопросы)