Цель
Я пытаюсь позвонить на номер телефона.Я хотел бы иметь возможность позвонить с 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: ** 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 и не могу найти ничего, что мне не хватает.Кто-нибудь знает, как позвонить на номер телефона и разрешить входящие звонки?Это было довольно много дней сплошной работы.