Перейти к содержанию

sips

Модераторы
  • Постов

    212
  • Зарегистрирован

  • Посещение

  • Победитель дней

    6

sips стал победителем дня 17 августа

sips имел наиболее популярный контент!

Оборудование

  • Устройства
    KN-XXXX, K+DECT, Linear

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

Достижения sips

Поставщик контента

Поставщик контента (4/6)

141

Репутация

2

Ответы сообщества

  1. Для исходящего звонка в терминале в первом окне наберите команду "ATDXXXXXXXXXXX;" где XXXXXXXXXXX - номер вызываемомго абонента
  2. Вы можете во время разговора захватить звук на аудиоинтерфейса UAC модема и записать его в файл, а затем скачать файл на компьютер и воспроизвести. Если голос оппонента будет с прерываниями и похрипываниями, как и в трубке IP-телефона, то звук искажает модем. Если звук будет без прерываний, то звук искажает Asterisk. Как записать звук: 1) выполнить команду «quectel show device state quectel0» в консоли Asterisk и выяснить, какой порт модема использует Asterisk. В примере ниже используется /dev/ttyUSB1: Netcraze-3950*CLI> quectel show device state quectel0 -------------- Status ------------- Device : quectel0 State : Free Audio UAC : hw:CARD=Asrmicro Data : /dev/ttyUSB1 2) выйти из консоли Asterisk 3) остановить cron командой «/opt/etc/init.d/S10cron stop» 3) остановить Asterisk командой «/opt/etc/init.d/S31asterisk stop» 4) установить пакеты командами «opkg install alsa-utils» и «opkg install picocom» 5) открыть последовательный порт модема, который использовал Asterisk командой «picocom -b 115200 /dev/ttyUSB1», вместо /dev/ttyUSB1 нужно указать актуальный порт. Когда порт успешно открыт, в терминале постоянно повторяются нотификации +CNETCINONINFO. 6) проверить, отвечает ли модем на команды: ввести команду «AT» в терминале и проверить наличие ответа «OK» 7) подключиться к роутеру по SSH повторно, чтобы появилось второе окно 😎 позвонить со смартфона на номер активной SIM-карты роутера и дождаться длинных гудков 9) во втором окне стартовать запись звука командой «arecord -Dhw:CARD=0 -c 1 -f S16_LE -r 16000 /storage/inaudio.wav» 10) в первом окне ответить на вызов командой «ATA» в терминале 11) на стороне смартфона убедиться в том, что вызов был отвечен и начался разговор, затем говорить в микрофон в течение нескольких секунд 12) завершить звонок на смартфоне или на роутере командой «ATH» в первом окне 12) остановить запись звука нажав CTRL+C во втором окне 13) чтобы закрыть терминал picocom и отключить порт модема, в первом окне нажмите CTRL+A, затем CTRL+X 14) убедиться в том, что на накопителе /storage появился файл «inaudio.wav», скачать его на компьютер и воспроизвести. Для большей достоверности результата запись звука лучше выполнить несколько раз. По завершению исследований запустите Asterisk и cron командами «/opt/etc/init.d/S31asterisk start» и «/opt/etc/init.d/S10cron start».
  3. Нет, не надо. /opt/etc/asterisk/scripts/chan_quectel.so копируется в папку /opt/lib/asterisk/modules/ при настройке VoLTE.
  4. Перезапишите на роутере /opt/lib/asterisk/modules/chan_quectel.so прилагаемым файлом и перезапустите asterisk. Если после этого сбой повторится, пришлите, лог из консоли asterisk -rvvvv. Можно включить вывод сообщений SIP командой «pjsip set logger on» в консоли Asterisk и посмотреть вывод во время звонка. Когда соединение будет установлено и начнется разговор, см. ответ 200 OK на запрос INVITE, который будет примерно следующим: <--- Transmitting SIP response (978 bytes) to TLS:192.168.1.102:42040 ---> SIP/2.0 200 OK Via: SIP/2.0/TLS 192.168.1.102:55002;rport=42040;received=192.168.1.102;branch=z9hG4bK01ZqpOgGU6uG Call-ID: OEEPi1Ci1nXG0lL+BrQt From: <sips:1000@netcraze-3950>;tag=z9XfYwVg9AdC To: "callee" <sips:+7XXXXXXXXX@netcraze-3950>;tag=c1dc1810-c0ec-4fc0-b35e-de15176ff4d2 CSeq: 419 INVITE Server: Asterisk PBX 23.1.0 Allow: OPTIONS, REGISTER, SUBSCRIBE, NOTIFY, PUBLISH, INVITE, ACK, BYE, CANCEL, UPDATE, PRACK, INFO, REFER, MESSAGE Contact: <sips:192.168.1.1:5061;transport=TLS> Supported: 100rel, timer, replaces, norefersub Session-Expires: 300;refresher=uac Require: timer Content-Type: application/sdp Content-Length: 320 v=0 o=- 1525411207 1525411209 IN IP4 192.168.1.1 s=Asterisk c=IN IP4 192.168.1.1 t=0 0 m=audio 10076 RTP/SAVP 0 101 a=crypto:1 AES_CM_128_HMAC_SHA1_32 inline:JfrT5aTEDz56yMyjMMaKxx4yRkZhyxAlFk5QROg3 a=rtpmap:0 PCMU/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16 a=ptime:20 a=maxptime:140 a=sendrecv Следующие поля в SDP означают, что для данной сесси использовалось шифрование аудиоданных: m=audio 10076 RTP/SAVP 0 101 a=crypto:1 AES_CM_128_HMAC_SHA1_32 inline:JfrT5aTEDz56yMyjMMaKxx4yRkZhyxAlFk5QROg3 chan_quectel.so
  5. Судя по логам, asterisk ждал, когда ndm подключится к модему, а ndm не подключался по неизвестной причине. Asterisk подключается к модему только после того, как ndm подключится к нему. Чтобы звонки по номерам в международном формате работали можно сделать слдующее: 1) в конфигурации /opt/etc/asterisk/extensions.conf замените контекст «mobile-outgoing» на следующее: [mobile-outgoing] exten => _x.,1,NoOp() same => n,Set(OUTGOING_MOBILE_NUM=${EXTEN}) same => n,Goto(handle-mobile-outgoing,s,1) exten => _+x.,1,NoOp() same => n,Set(OUTGOING_MOBILE_NUM=${EXTEN}) same => n,Goto(handle-mobile-outgoing,s,1) 2) Добавьте новый контекст «handle-mobile-outgoing» в конфигурацию /opt/etc/asterisk/extensions.conf: [handle-mobile-outgoing] exten => s,1,NoOp() same => n,Set(MODEM_STATE=${SHELL(asterisk -rx "quectel show device state quectel0" | grep "State" | cut -d : -f 2 | sed 's/^ //')}) same => n,Set(IS_READY=${REGEX("Free" ${MODEM_STATE})}) same => n,GotoIf($[${IS_READY} = 1]?dialing:unavailable) same => n(dialing),Set(VOLUME(TX)=0) same => n,Set(VOLUME(RX)=0) ;same => n,MixMonitor(/tmp/mnt/USBDISK/asterisk/records/${CALLERID(num)}-${OUTGOING_MOBILE_NUM}_${STRFTIME(${EPOCH},/opt/share/zoneinfo/Europe/Moscow,%y%m%d-%H%M)}.wav,b) ;<------ Call recording same => n,Progress() same => n,Dial(Quectel/quectel0/${OUTGOING_MOBILE_NUM},30,R) same => n,Hangup() same => n(unavailable),NoOp(LTE Modem is not ready! Status: ${MODEM_STATE}) same => n,Playback(calling&vm-isunavail&please-try-call-later) same => n,Wait(1) same => n,Hangup() В контексте [mobile-outgoing] первый экстеншен выполняется при звонке по любому номеру. Второй экстеншен выполняется при исходящем звонке по любому номеру, который начинается с «+». Оба вызывают обработчик исходящих звонков [handle-mobile-outgoing]. Правильно
  6. Насколько я понял из собственных тестов, SIpnetic проверяет сертификат сервера только когда используется SIPS. SIPS нужно включить, если нужна валидация сертификата сервера. Если SIPS включено и нет регистрации, то советую проверить соответствие доменного имени указанного в сертификате Asterisk доменному имени указанному в настройках учетной записи Sipnetic, попробовать заново пересоздать сертификаты и установить новый сертификат CA на телефон, удалив при этом старый. На Sipnetic нужно выключить учетную запись, подтвердить выключение галочкой сверху на экране, выйти из Sipnetic через меню приложения, запустить его снова, включить учетную запись и подтвердить включение галочкой сверху. Иначе изменения не принимаются. Если PhonerLite не настрен для проверки сертифката сервера и сертификат CA не установлен на стороне PhonerLite, то PhonerLite будет подключаться по TLS к любому серверу, адрес которого получит от DNS.
  7. Прилагаю исправленный скрипт "create_ca_ast_cert", который создает шифрованный приватный ключ CA, самоподписанный сертификат CA и сертификат для Asterisk подписанный CA. Сертификат CA созданный этим скриптом мне удалось установить на Android 15 и использовать для проверки подлинности сертификата Asterisk при подключении софтфона Sipnetic 1.1.7 по TLS. Чтобы создать сертификаты и активировать транспорт TLS на Asterisk: 1) Удалить (или переместить в другую папку) все файлы в папке /opt/etc/asterisk/keys/, если они там есть, должна остаться только папка со скриптами /opt/etc/asterisk/keys/scripts 2) Перезаписать скрипт /opt/etc/asterisk/keys/script/create_ca_ast_cert прилагаемым скриптом. 3) Запустить скрипт /opt/etc/asterisk/keys/script/create_ca_ast_cert и следовать инструкциям на экране: ввести пароль для шифрования приватного ключа CA, ввести данные для создания сертификатов CA и Asterisk. Для сертифката Asterisk в поле Common Name ввести системное имя роутера, доменное имя CrazeDNS или другое, которое затем будет указано в настройках IP-телефона. См. скриншот с примером выполнения скрипта. По завершению работы скрипта будет создан сертификат CA /opt/etc/asterisk/key/ca.crt и сертификат Asterisk /opt/etc/asterisk/key/asterisk.crt. 4) Перезапустить Asterisk командой «core restart now» в командной строке Asterisk. Зайти снова в командную строку Asterisk, выполнить команду «pjsip show transports» и убедиться в том, что транспорт TLS отображается как в данном примере: Netcraze-1727*CLI> pjsip show transports Transport: <TransportId........> <Type> <cos> <tos> <BindAddress....................> ========================================================================================== Transport: transport-tcp tcp 0 0 0.0.0.0:5060 Transport: transport-tls tls 0 0 0.0.0.0:5061 Transport: transport-udp udp 0 0 0.0.0.0:5060 Для подключения Sipnetic по TLS c проверкой подлинности сертификата Asterisk: 5) Установить на Android-смартфон приложение Sipnetic. 6) Настроить в приложении учетную запись для подключения к Asterisk с транспортом UDP и убедиться, что регистрация и звонки выполняются успешно. При настройке в поле «Домен» нужно ввести не IP-адрес роутера, а доменное имя, которое было указано в поле CN сертифката Asterisk. 7) Для перехода на транспорт TLS в настройках учетной записи Sipnetic выполнить и применить следующие настройки: Настройки транспорта>Транспорт по умолчанию: TLS Настройки транспорта>Использовать только транспорт по умолчанию: вкл Безопасность>Безопасный транспорт Использовать протокол SIPS: да Безопасность>Использовать SIPS для всех исходящих звонков: да Безопасность>Использовать SIPS для всех входящих звонков: да Затем выключить учетную запись и закрыть Sipnetic. 😎 Открыть Sipnetic снова и убедиться в том, что учетная запись больше не регистрируется, т. к. проверка подлинности сертификата не работает. 9) Скачать сертификат CA /opt/etc/asterisk/key/ca.crt с роутера на Android-смартфон в папку /Download. 10) Установить сертификат ca.crt в пользовательское хранилище сертификатов смартфона: Настройки>Отпечатки, данные лица и защита устройства > Конфиденциальность > Дополнительные настройки безопасности > Шифрование и учетные данные > Установка сертификатов > Сертификат центра сертификации > Все равно установить, ввести PIN-код, выбрать сертификат /Download/ca.crt, должно появиться подтверждение «Сертификат ЦС установлен». 11) Выключить учетную запись в Sipnetic, перезапустить Sipnetic, включить учетную запись и убедиться в том, что регистрация учетной записи выполнена успешно. Проверка подлинности сертификата работает. Если после этого пересоздать сертификаты скриптом "create_ca_ast_cert" и перезапустить Asterisk, то регистрация учетной записи Sipnetic должна перестать работать до тех пор, пока новый сертификат CA не будет установлен на смартфон. create_ca_ast_cert
  8. 1) На данный момент тестирование Quectel RG500U-EB (XX-4110) в процессе. Успешно протестированы команды для проверки статуса и активации UAC, IMS и репортов о смене состояния звонка. Осталось проверить обмен аудиоданными с модемом во время звонка и, если работает, то начнется отладка драйвера модема Quectel RG500U-EB для Asterisk. 2) XX-2313 будет отличаться от XX-2312 только на уровне корпуса - внешними антеннами Wi-Fi. Все внутренности одинаковы с XX-2312. На данный момент видится, что поддержка VoLTE для XX-2313 будет сделана. 3) См. /opt/etc/asterisk/quectel.conf [defaults] ... rxgain=-7 ; RX gain, range: from -36 to 12 dB txgain=-15 ; TX gain, range: from -36 to 12 dB Значения -7 и -15 подобраны для Keenetic Linear. Для своего телефона можете попробовать подобрать подходящие значения в указанных пределах. 4) Если нужно отправить входящий звонок VoLTE на несколько телефонов, см. /opt/etc/asterisk/extensions.conf: ;=============== Incoming mobile calls =============== [mobile-incoming] exten => s,1,NoOp() ... same => n,Dial(PJSIP/mobile&PJSIP/1000,30) exten => _+x.,1,NoOp() ... same => n,Dial(PJSIP/mobile&PJSIP/1000,30) По умолчанию входящий вызов отправляется на mobile и 1000. Например, если нужно отправить на 1000, 1001 и 1002, а на mobile не отправлять, то нужно внести следующие изменения: [mobile-incoming] exten => s,1,NoOp() ... same => n,Dial(PJSIP/1000&PJSIP/1001&PJSIP/1002,30) exten => _+x.,1,NoOp() ... same => n,Dial(PJSIP/1000&PJSIP/1001&PJSIP/1002,30) При входящем звонке телефоны 1000, 1001 и 1002 будут звонить. Соединение будет установлено с тем, кто первый ответит. После внесения изменений нужно перезагрузить dialplan или перезагрузить ядро Asterisk.
  9. Если телефонная станция Netcraze не установлена, то при установке Asterisk линия mobile не создается. Подключите IP-телефон к линии 1000, чтобы звонить и принимать звонки через LTE. После успешной регистрации IP-телефона вывод команды «pjsip show contacts» выглядит следующим образом: Netcraze-3950*CLI> pjsip show contacts Contact: <Aor/ContactUri..............................> <Hash....> <Status> <RTT(ms)..> ========================================================= Contact: 1000/sip:1000@192.168.1.102:38561 68d48e4fd2 Avail 39.538 Objects found: 1 В качестве IP-телефона можно использовать приложение Linphone. Чтобы IP-телефон принимал входящие звонки рекомендую добавить опцию "qualify_frequency" для линии 1000 в конфигурации /opt/etc/asterisk/pjsip.conf. См. пример ниже. [1000] type=aor remove_existing=yes max_contacts = 3 mailboxes=1000 qualify_frequency=15
  10. При разговоре происходит следующее преобразование аудиоданных: IP-телефон <ulaw, 8 kHz 8 bit> Asterisk <pcm, 16 kHz 16 bit> A7908E <codec> сеть LTE Кодеки в сети LTE используются разные. Звук, который слышите вы и ваш собеседник зависит от того, какой кодек используется при разговоре. Выбрать кодек для LTE и настроить аудио интерфейс UAC на стороне модема невозможно. Если ваш IP-телефон поддерживает широкополосный кодек G.722, то можете установить его командой «opkg install asterisk-codec-g722», выбрать g722 вместо ulaw в конфигурации /opt/etc/asterisk/pjsip.conf и тогда возможно вы услышите более качественный звук. Здесь можно посмотреть, какие кодеки доступны для Asterisk: https://bin.entware.net/aarch64-k3.10/
  11. Добавить звонки VoLTE на роутере KN-2311 нет технической возможности. Что касается XX-4110, в модеме этого роутера есть вся функциональность необходимая для VoLTE. На начало следующего месяца запланировано тестирование VoLTE на NC-4110. Если тестирование покажет, что VoLTE работает, то будет подготовлен инсталлятор Asterisk с поддержкой VoLTE для XX-4110.
  12. В этой версии исправлены известные ошибки VoLTE, включая подключение к занятому виртуальному порту модема, зависшие звонки на невалидные номера (MegaFon) и сбой настройки VoLTE, когда активен SIM2 и др. Добавлен механизм повторного чтения парметров модема, которые не удалось считать при инициализации и поддержка Early Media при исходящих звонках. Отлажено переподключение модема после сканирования эфира. asterisk-installer-20260717.tar.gz
  13. Если эта версия не заработает, то на следующей неделе попробуем отладить через удаленное подключение, как вы предлагаете. chan_quectel.so
  14. Принудительно прерывать звонок командой +CHUP через 20 секунд dialing было плохой идеей. Если будут звучать голосовые сообщения Early Media и они будут неожиданно прерваны, то это не понравится многим пользователям. Кроме того, не понятно, как в вашем случае это вообще работало и почему перестало работать. Команда +CHUP должна завершить звонок и после нее модем должен прислать репорт +CLCC подтверждающий завершение. В вашем случае на команду +CHUP модем отвечает ERROR и репорт не присылает. Данную задачу нужно решать иначе и решение видится следующим: когда после звонка на невалидный номер вы кладете трубку, драйвер отправляет +CHUP, получает в ответ ERROR, ждет репорт о завершении звонка, но репорта нет и звонок зависает. Чтобы звонок не зависал, нужно при получении ERROR завершить звонок не дожидаясь репорта. В этой версии при получении ERROR в ответ на +CHUP обработчик команд должен принудительно удалить звонок и отключить аудиоустройство также, как и при получении репорта о завершении звонка. Прошу проверить и сообщить, как это работает. Когда положите трубку, в консоли должны появиться сообщения следующего вида: “Error sending hangup for call idx:*” “Forcibly ending call idx:*” После них выполняется код завершающий звонок и отключающий аудиоустройство. chan_quectel.so
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.