问题标签 [pjsua2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
57 浏览

android - 通过在活动上调用finish()关闭应用程序后启动时崩溃

我正在开发基于 PJSUA2 的应用程序。应用程序工作正常,除非我关闭应用程序并尝试重新启动它,它崩溃并显示以下消息:

11-22 12:23:32.849 20041-20041/com.aa.aaaaA/libc:致命信号 6 (SIGABRT),tid 20041 (bbell.aaaa) 中的代码 -6,pid 20041 (bbell.aaaa) 11-22 12 :23:32.860 20041-20144/com.aa.aaaaI/System.out: 12:23:32.851 pjsua_core.c !.RX 495 字节响应消息 404/SUBSCRIBE/cseq=1727 (rdata0x94f3f014) 来自 UDP 10.13.30.27:5060 : SIP/2.0 404 未找到

我无法找出根本原因或解决方案。需要你的帮助。提前致谢。

0 投票
2 回答
5823 浏览

python - 如何为 python 安装 pjsua2 包?

我正在尝试使用 Python 创建软件电话。我发现这个链接描述了 pjsua2,但是没有任何明确的步骤来定义如何为 python 安装 pjsua2 包。

任何人都可以为我定义安装可在 python 中使用的 pjsua2 的明确步骤吗?

0 投票
1 回答
2379 浏览

python - PJSUA2 - Python - 如何处理回调和 createRecorder?

在通过 PJSIP 库站点中提供的 pygui 代码之后,我修改了下面的示例。我有两个问题

  1. 在每个回调函数中,最后我需要添加一个虚拟引发异常,否则它会行为不端。例如,如果我评论 onIncomingCall 的虚拟异常,来电将被断开并出现 500 错误。在 pyGUI 中,看起来 ttk.master.after() 起着至关重要的作用。当我在无头服务器中尝试它时(仅指 cli),不知道如何处理它?

  2. 当我尝试 createRecorder 时出现以下错误:

Traceback(最近一次调用最后):文件“pjsua2_cli_demo.py”,第 33 行,在 onCallState self.recorder.createRecorder('xxxxxxxxxxx/PJSUA2/example/pygui/file.wav'); 文件“xxxxxxxxxxx/.local/lib/python3.6/site-packages/pjsua2.py”,第 4110 行,在 createRecorder 中返回 _pjsua2.AudioMediaRecorder_createRecorder(self, file_name, enc_type, max_size, options) NotImplementedError: 错误的参数数量或类型对于重载函数“AudioMediaRecorder_createRecorder”。可能的 C/C++ 原型是: pj::AudioMediaRecorder::createRecorder(pj::string const &,unsigned int,pj_ssize_t,unsigned int) pj::AudioMediaRecorder::createRecorder(pj::string const &,unsigned int,pj_ssize_t) pj::AudioMediaRecorder::createRecorder(pj::string const &,unsigned int) pj::

实际修改代码:

0 投票
2 回答
509 浏览

android - 如何使用 Android pjsua2 拨打电话

我是 pjsua2 技术的初学者,我设法编译了 pjsip 技术,并使用了示例项目“pjsua2 android”。该应用程序连接到我的星号服务器,并且可以接听电话但不能拨打电话。

我创建了一个允许您拨打电话的功能,但它不起作用。

这是代码

0 投票
0 回答
314 浏览

java - java.lang.Exception:谁在打电话?通过 PJSUA 拨打电话时

我正在我的 android 应用程序中实现 PJSUA2 以进行 voip 呼叫。根据应用要求,有时我会尝试快速拨打电话,例如开始通话并在 1 秒内断开连接,然后再次尝试连接通话。在此期间,我的应用程序在连续呼叫和断开连接(大约 5-10 秒)后崩溃。我收到一个异常说:java.lang.Exception:谁在打电话?

我仅将 UDP 用于 VoIP 呼叫,并评论了 TCP 和 TSL 通道,因为它曾经在同一场景(连续呼叫)中提供不支持传输的异常。我将在下面发布我的传输设置。请看一看:

0 投票
2 回答
1876 浏览

python - 如何使用 Visual Studio 2015 构建 PJSUA2 (swig)

我尝试为 Python 编译 PJSUA2。我可以设法用 Visual Studio 2015 社区版编译源代码。

我的问题是,我现在如何安装 Python 模块?

该指南建议使用 make 和 make install。我也尝试安装 minwg,但由于项目是用 VS 编译的,所以它不起作用。

我也尝试过使用 minwg 进行编译,但由于未定义的要求,我永远无法成功。官方 PJSUA 指南也推荐使用 VS for Windows。

以下设置已应用于从源代码构建:

  • Swig 位置已添加到路径中
  • 已添加 JAVA_home 系统变量
  • Java 位置已添加到路径
  • 已创建空 pjlib/include/pj/config_site.h
  • VS 2015 社区开源(已安装所有建议的 VS 包和模块)
  • 将以下项目设置为不编译:
    • pjsua_cli_uwp_comp
    • pjsua_cli_wp8
    • pjsua_cli_wp8_comp
  • 设置 swig_java_pjsua2 来构建。
  • 将以下文件夹添加到 swig_java_pjsua2 VC++ 包含目录
    • c:\Program Files\Java\jdk-11.0.2\include
    • c:\Program Files\Java\jdk-11.0.2\include\win32
  • 构建解决方案
0 投票
1 回答
1099 浏览

raspberry-pi - Pjsip/pjsua 超时错误并解决从 Raspberry Pi 向 voip.ms 注册后拨打电话号码的错误

目标

我正在尝试拨打一个电话号码。我希望能够从树莓派拨打电话,也可以拨打我的 voip.ms 电话号码,并能够接听或自动接听并播放一些通用的 .wav 文件。

我目前对事物的理解

这也许应该标题为“我目前对事物的误解”。我是 sip 和 pjsip 的新手,我想我一定错过了我不理解的过程的某些部分。我的印象是,如果我在 voip.ms 上注册,当我拨打电话时,它会路由到 voip.ms,他们会查找号码/地址,然后回复我将开始的地址与之交流。

到目前为止我所做的

编译

据我所知,我已经在 Raspberry Pi 3B+ 上正确编译了 Pjsip。我可以在我的 c++ 应用程序中包含 pjsua2.hpp。我大致遵循了本教程

使用 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

配置如下所示:

sip.cfg

当我进入 cli 时,我会看到我的帐户列表:

Voip.ms 显示我已在他们的网站上注册。

问题

我正在尝试从我的 pi 拨打我的个人手机(我假设使用注册的 voip.ms 电话号码),然后从我的个人手机拨打我的 pi。在呼叫时,我通常会遇到408 Request Timeout错误或502 gethostbyname错误。

不同的目的地,不同的错误

根据我从 pi 调用的目的地,我大多数时候会遇到两个不同的错误之一

超时错误

我收到一条错误消息,

以下任何一项在哪里:

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

并且电话号码的格式如下:3035551234,尽管我尝试在前面加上 a1和 a+1只是为了检查。

查找错误

我收到一条错误消息,

以下任何一项在哪里:

  • 啜:
  • 啜:
  • 小口:abcd1234

可能的成功

我在调用时得到了看起来很成功的东西:

  • 啜饮:**12340@ideasip.com

它确认通话并有一堆消息,值得注意的包括:

同一网络

此外,如果我在同一网络上设置第二个 pjsip 客户端,我可以从 pi1 调用它并在 pi2 上接听电话。

来电

当我注册 voip.ms,然后尝试从我的个人手机拨打我的 voip.ms 电话号码时,通话失败,并在我的 iPhone 上显示一条消息,显示User Busy。这让我觉得我在注册时搞砸了,或者我错过了一些组件,比如订阅或与该 voip.ms 帐户的链接。

最后的想法

我不确定我在这里缺少什么。我已经阅读了大量的 pjsip 和 pjsua 文档,但我找不到任何我遗漏的东西。有没有人了解如何拨打电话号码并允许来电?这已经是扎实的工作了好几天了。

0 投票
1 回答
369 浏览

android - 当任何一侧超出网络覆盖范围时,Pjsip 呼叫不会断开连接

我可以拨打电话,如果任何一方无论是呼叫发起方还是接收方都超出了网络覆盖范围,那么此时没有语音数据包传输是可能的,事实上,当任何一方重新连接网络时,呼叫再次成功重新连接。

但现在我面临的最大问题是,当任何一方离开网络超过指定时间时,两个呼叫都应该自动断开,有没有可能处理这种情况的方法?先感谢您

0 投票
1 回答
598 浏览

android - 如何在 PJSUA2 中获取“来电的 SIP 标头”?

我正在开发一个使用 pjsip2.7 和 pjsua2 支持 SIP 的 android 应用程序。我需要为我的 sip 调用设置自定义标头,我已经完成了,并且我设置了 Asterisk 13 Server 以将我的标头转发给另一方。我可以在日志中看到我的自定义标头已收到,但我无法在接收器中使用此标头。我需要一种方法来获取我在标头中发送的这些参数。有什么办法吗?

0 投票
0 回答
967 浏览

android - 如何在 android 中使用 pjsip 启用 SRTP?

我在 android 的 VoIP 应用程序上设置 TLS + SRTP。到目前为止,我已经用 OpenSSL 1.0.2g 编译了 PJSIP 2.8。在没有 srtp 的情况下拨打电话可以正常工作,但是当我强制使用 SRTP 时,拨打电话不拨打。

我使用以下代码启用 SRTP:

TLS 工作正常,因为如果我将 secureSignaling 设置为 1(需要 TLS 传输)并将 srtpUse 禁用,我仍然可以拨打电话并且工作正常。

我用 Zoiper 检查了我的服务器,Zoiper 可以进行安全呼叫。所以,我确定问题出在我的 SRTP 配置上。

这是我在 Android App 上的配置:

TLS 传输:

和媒体配置:

在我的服务器(Asterisk 13.26)中,我有这些配置:

sip.conf:

有没有人同样的问题或知道解决这个问题的方法?

android 和星号的日志文件: https ://drive.google.com/file/d/18j98zp9FWJGRSvRdKy5k96VNbjUYaRc5/view?usp=sharing https://drive.google.com/file/d/1eAeX5Gd6phIvKDLCRjVyD6uZV_CP9h6p/view?usp=sharing