我无法通过 PJSUA2 python 脚本接听电话。我已经尽可能简化了我的脚本来复制下面的问题。这个简化的脚本主要来源于 PJSUA2 文档 helloworld example 和 receive requests doc。每当我运行它并拨打关联设备的号码时,呼叫都会立即失败,并显示 603 拒绝。
import pjsua2 as pj
import time
class MyAccount(pj.Account):
def onRegState(self, prm):
print("***OnRegState: " + prm.reason)
def onIncomingCall(self, iprm):
call = MyCall(self, iprm.callId)
prm = pj.CallOpParam()
prm.statusCode = 200
call.answer(prm)
class MyCall(pj.Call):
def __init__(self, account, call_id):
pj.Call.__init__(self, account, call_id)
def pjsua2_test():
# Create and initialize the library
ep_cfg = pj.EpConfig()
ep = pj.Endpoint()
ep.libCreate()
ep.libInit(ep_cfg)
ep.audDevManager().setNullDev()
# Create SIP transport. Error handling sample is shown
sipTpConfig = pj.TransportConfig()
sipTpConfig.port = 5060
ep.transportCreate(pj.PJSIP_TRANSPORT_UDP, sipTpConfig)
# Start the library
ep.libStart()
# Account configuration
acfg = pj.AccountConfig()
acfg.idUri = "sip:[email protected]";
acfg.regConfig.registrarUri = "sip:sip.pjsip.org";
cred = pj.AuthCredInfo("digest", "*", "test", 0, "pwtest");
acfg.sipConfig.authCreds.append( cred );
acfg.sipConfig.authCreds.append(cred)
# Create the account
acc = MyAccount()
acc.create(acfg)
return ep, acc # Return the endpoint to keep it alive
if __name__ == "__main__":
ep, acc = pjsua2_test()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
print("Exiting...")
finally:
ep.libDestroy()
我读过以前的类似问题,它们似乎都围绕 GC、声卡问题或 NAT 问题。正如你所看到的,我正在保留我的 pjsua 对象,所以我不相信这是 GC。我正在使用 setNullDev(),所以我不认为这是声卡问题。我已将其安装到 Vultr 中,他们直接附加了 IPv4 ip,这样我就可以放心它不是 NAT。但是,我仍然无法接听电话。
如果感兴趣,我使用其 Ubuntu 22.04 映像和以下脚本部署到 Vultr 上:
apt-get update && apt-get install -y build-essential libssl-dev libasound2-dev wget python3 python3-dev automake autoconf libtool libpcre2-dev bison && apt install -y python3-setuptools && cd /usr/src && wget https://github.com/swig/swig/archive/refs/tags/v4.2.1.tar.gz && tar -xvf v4.2.1.tar.gz && cd swig-4.2.1 && ./autogen.sh && ./configure && make && make install && cd /usr/src && wget https://github.com/pjsip/pjproject/archive/refs/tags/2.14.1.tar.gz && tar -xvf 2.14.1.tar.gz && cd pjproject* && ./configure CFLAGS="-fPIC" && make dep && make && make install && cd /usr/src/pjproject*/pjsip-apps/src/swig/python && make && make install && python3 setup.py install
我非常感谢你们能够提供的任何帮助,提前谢谢你们!
这里有运气吗?我也遇到了同样的问题。