问题标签 [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.
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 未找到
我无法找出根本原因或解决方案。需要你的帮助。提前致谢。
python - 如何为 python 安装 pjsua2 包?
我正在尝试使用 Python 创建软件电话。我发现这个链接描述了 pjsua2,但是没有任何明确的步骤来定义如何为 python 安装 pjsua2 包。
任何人都可以为我定义安装可在 python 中使用的 pjsua2 的明确步骤吗?
python - PJSUA2 - Python - 如何处理回调和 createRecorder?
在通过 PJSIP 库站点中提供的 pygui 代码之后,我修改了下面的示例。我有两个问题
在每个回调函数中,最后我需要添加一个虚拟引发异常,否则它会行为不端。例如,如果我评论 onIncomingCall 的虚拟异常,来电将被断开并出现 500 错误。在 pyGUI 中,看起来 ttk.master.after() 起着至关重要的作用。当我在无头服务器中尝试它时(仅指 cli),不知道如何处理它?
当我尝试 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::
实际修改代码:
android - 如何使用 Android pjsua2 拨打电话
我是 pjsua2 技术的初学者,我设法编译了 pjsip 技术,并使用了示例项目“pjsua2 android”。该应用程序连接到我的星号服务器,并且可以接听电话但不能拨打电话。
我创建了一个允许您拨打电话的功能,但它不起作用。
这是代码
java - java.lang.Exception:谁在打电话?通过 PJSUA 拨打电话时
我正在我的 android 应用程序中实现 PJSUA2 以进行 voip 呼叫。根据应用要求,有时我会尝试快速拨打电话,例如开始通话并在 1 秒内断开连接,然后再次尝试连接通话。在此期间,我的应用程序在连续呼叫和断开连接(大约 5-10 秒)后崩溃。我收到一个异常说:java.lang.Exception:谁在打电话?
我仅将 UDP 用于 VoIP 呼叫,并评论了 TCP 和 TSL 通道,因为它曾经在同一场景(连续呼叫)中提供不支持传输的异常。我将在下面发布我的传输设置。请看一看:
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
- 构建解决方案
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 文档,但我找不到任何我遗漏的东西。有没有人了解如何拨打电话号码并允许来电?这已经是扎实的工作了好几天了。
android - 当任何一侧超出网络覆盖范围时,Pjsip 呼叫不会断开连接
我可以拨打电话,如果任何一方无论是呼叫发起方还是接收方都超出了网络覆盖范围,那么此时没有语音数据包传输是可能的,事实上,当任何一方重新连接网络时,呼叫再次成功重新连接。
但现在我面临的最大问题是,当任何一方离开网络超过指定时间时,两个呼叫都应该自动断开,有没有可能处理这种情况的方法?先感谢您
android - 如何在 PJSUA2 中获取“来电的 SIP 标头”?
我正在开发一个使用 pjsip2.7 和 pjsua2 支持 SIP 的 android 应用程序。我需要为我的 sip 调用设置自定义标头,我已经完成了,并且我设置了 Asterisk 13 Server 以将我的标头转发给另一方。我可以在日志中看到我的自定义标头已收到,但我无法在接收器中使用此标头。我需要一种方法来获取我在标头中发送的这些参数。有什么办法吗?
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