Ошибки тайм-аута Pjsip / pjsua и их устранение при вызове телефонных номеров после регистрации в voip.ms от Raspberry Pi - PullRequest
1 голос
/ 11 марта 2019

Цель

Я пытаюсь позвонить на номер телефона.Я хотел бы иметь возможность позвонить с Raspberry Pi, а также позвонить на мой номер телефона voip.ms и иметь возможность ответить или автоматически ответить и воспроизвести какой-нибудь общий файл .wav.

Мое текущее понимание вещей

Возможно, это следует озаглавить "Мое текущее недопонимание вещей".Я новичок в sip и pjsip, и я думаю, что мне не хватает какой-то части процесса, который я не понимаю.У меня сложилось впечатление, что, если я зарегистрируюсь в voip.ms, когда я звоню, он будет перенаправлять на voip.ms, и они будут искать номер / адрес, а затем отвечать адресом, который я затем начну.для связи.

Что я сделал до сих пор

Скомпилировано

Я правильно скомпилировал Pjsip на Raspberry Pi 3B +, насколько я могу судить.Я могу включить pjsua2.hpp в мои приложения на C ++.Я примерно следовал этому руководству

Протестированная компиляция с бинарным файлом pjsua && demo.cpp

У меня возникают идентичные проблемы с запуском модифицированного pjsua2_demo.cpp и бинарного файлавключен в сборку pjsip.Для простоты я спрошу о бинарном файле, расположенном (для меня) по адресу <project-path>/pjproject-2.8/pjsip-apps/bin/pjsua-armv7l-unknown-linux-gnueabihf.

Успешно зарегистрирован на voip.ms

У меня есть учетная запись и номер телефона с Voip.ms и могут быть зарегистрированы в voip.ms, выполнив следующий скрипт:

call_and_auto_answer.sh

./pjsua2-cpp/pjproject-2.8/pjsip-apps/bin/pjsua-armv7l-unknown-linux-gnueabihf \
    --play-file ~/CantinaBand60.wav \
    --local-port=5060 \
    --auto-answer 200 \
    --auto-play \
    --auto-loop \
    --max-calls 5 \
    --config-file ./sip.cfg

Где выглядит конфигурация:

sip.cfg

#
# Logging options:
#
--log-level 5
--app-log-level 4

#
# Account 0:
#
--id sip:<my-subaccount-username>@sip.voip.ms
--registrar sip:<server-location>.voip.ms
--reg-timeout 300
--realm *
--username <my-subaccount-username>
--password <my-subaccount-password>
--use-timer 1

#
# Network settings:
#
--local-port 5060

#
# Media settings:
#
--srtp-keying 0
--auto-play
--auto-loop
--play-file /home/pi/CantinaBand60.wav
--snd-auto-close 1
#using default --clock-rate 16000
#using default --quality 8
#using default --ec-tail 200
#using default --ilbc-mode 30
--rtp-port 4000

#
# User agent:
#
--auto-answer 200
--max-calls 5

#
# SIP extensions:
#
--use-timer 1

Когда я вхожу в cli, я вижу для своего списка учетных записей:

Account list:
  [ 0] <sip:192.168.1.49:5060>: does not register
       Online status: Online
  [ 1] <sip:192.168.1.49:5060;transport=TCP>: does not register
       Online status: Online
 *[ 2] sip:<my-subaccount-username>@sip.voip.ms: 200/OK (expires=285)
       Online status: Online
Buddy list:
 -none-

Voip.ms показывает, что я зарегистрировалсяна их веб-сайте.

Проблема

Я пытаюсь позвонить на свой личный сотовый телефон с моего пи (я предполагаю, используя зарегистрированный номер телефона voip.ms), и позвонить своему пи с моеголичный сотовый телефон.Во время вызова я обычно получаю либо 408 Request Timeout ошибок, либо 502 gethostbyname ошибок.

Разные направления, разные ошибки

В зависимости от пункта назначения для моего звонка от pi, я получаю одиниз двух разных ошибок большую часть времени

Ошибка тайм-аута

Я получаю сообщение об ошибке,

18:19:19.757    pjsua_app.c  ....Call 4 is DISCONNECTED [reason=408 (Request Timeout)]
18:19:19.757 pjsua_app_comm  ....
  [DISCONNCTD] To: <destination-sip-address>

где любое из следующего:

  • sip:
  • sip:
  • sip: thetestcall@sip2sip.info
  • sip: thetestcall@iptel.org sip: 201@ideasip.com

и номера телефонов отформатированы так: 3035551234, хотя я пытался добавить 1 и +1 просто для проверки.

Ошибка поиска

Я получаю сообщение об ошибке,

19:09:45.435  sip_resolve.c  ....Failed to resolve '<destination-sip-address>'. Err=70018 (gethostbyname() has returned error (PJ_ERESOLVE))
19:09:45.435   tsx0x18520dc  ....Failed to send Request msg INVITE/cseq=10722 (tdta0x185012c)! err=70018 (gethostbyname() has returned error (PJ_ERESOLVE))
19:09:45.435    pjsua_app.c  .......Call 4 is DISCONNECTED [reason=502 (gethostbyname() has returned error (PJ_ERESOLVE))]
19:09:45.435 pjsua_app_comm  .......
  [DISCONNCTD] To: sip:<destination-sip-address>

, где любое из следующего:

  • sip:
  • sip:
  • sip: abcd1234

Возможные успехи

Я получаю то, что похоже на успех при вызове:

  • sip: ** 12340@ideasip.com

Он подтверждает вызов и имеет несколько сообщений, в том числе:

19:16:17.550   pjsua_core.c  ....TX 1300 bytes Request msg INVITE/cseq=13899 (tdta0x15c263c) to UDP 208.97.25.11:5060:
...
19:16:17.551    pjsua_app.c  .......Call 4 state changed to CALLING
...
>>> 19:16:17.606   pjsua_core.c  .RX 575 bytes Response msg 100/INVITE/cseq=13899 (rdata0x6d7008a4) from UDP 208.97.25.11:5060:
...
19:16:17.609   pjsua_core.c  .RX 946 bytes Response msg 200/INVITE/cseq=13899 (rdata0x6d7008a4) from UDP 208.97.25.11:5060:
...
19:16:17.609    pjsua_app.c  .....Call 4 state changed to CONNECTING
...
19:16:17.610    pjsua_app.c  .....Call 4 state changed to CONFIRMED
...
19:16:17.676   pjsua_core.c  .RX 594 bytes Response msg 100/INVITE/cseq=13900 (rdata0x6d7008a4) from UDP 208.97.25.11:5060:
...
19:16:17.678   conference.c  ......Port 5 (sip:**12340@ideasip.com) transmitting to port 5 (sip:**12340@ideasip.com)
...
19:16:17.678   conference.c  ......Port 1 (/home/pi/CantinaBand60.wav) transmitting to port 5 (sip:**12340@ideasip.com)
...
19:16:36.931    pjsua_app.c  ......Call 4 is DISCONNECTED [reason=200 (Normal call clearing)]

Та же сеть

Кроме того, если я установлю второй клиент pjsip в той же сети, я могу позвонить ему с pi1 и ответить на вызов по pi2.

Входящие вызовы

Когда я регистрируюсь с помощью voip.ms, а затем попробуйте позвонить по номеру моего телефона voip.ms с моего личного сотового телефона, на моем iPhone произойдет сбой вызова с сообщением User Busy.Это заставляет меня думать, что я что-то напутал с регистрацией, или что мне не хватает какого-то компонента, такого как подписка или ссылка на эту учетную запись voip.ms.

Заключительные мысли

IЯ не уверен, что мне здесь не хватает.Я прочитал тонну документов pjsip и pjsua и не могу найти ничего, что мне не хватает.Кто-нибудь знает, как позвонить на номер телефона и разрешить входящие звонки?Это было довольно много дней сплошной работы.

1 Ответ

0 голосов
/ 23 марта 2019

Итак, я разобрался с ответом на мой вопрос. Вот тощий:

регистрация Voip.ms

Моя регистрация с voip.ms не была правильно настроена. Сотрудник дал мне учетные данные, но при дальнейшей проверке конечной точки sip я обнаружил, что номер DiD, купленный для учетной записи, не связан с субсчетом, созданным моим сотрудником для меня. Итак, в зависимости от оператора телефонной связи получателя, мне выдавались разные ошибки. Кроме того, когда я тестировал входящие вызовы и получал сообщение об ошибке User Busy, это было связано с тем, что зарегистрированная мной учетная запись не была связана с номером телефона.

Чтобы исправить это, в voip.ms я связал номер DiD с моим субсчетом, а затем перешел к информации о моем субсчете и установил номер callerId, равный моему номеру DiD, хотя я думаю, что вы можете переопределить это значение с помощью pjsip.

Исходящие sip звонки

Во-вторых, для вызова номера телефона исходящие вызовы должны иметь следующий формат:

sip:<phoneNumber>@<endpoint>

Так что для меня это выглядело очень похоже на:

sip:5551234567@newyork.voip.ms

...