使用pjsua调用modify_account失败:提示需传入整数参数
搞定pjsua modify_account报"an integer is required"的问题
嘿,我一眼就揪出问题所在了——你调用modify_account时第一个参数传的是字符串'acc.info().uri',但这个方法根本不认字符串啊!它要的是整数类型的账户ID,或者你之前创建的那个Account对象本身。
先拆解下你的代码问题
你创建账户的时候,没把返回的Account对象存下来:
lib.create_account(pj.AccountConfig('127.0.0.1', '1234'))
然后你想当然地传了个字符串'acc.info().uri'当账户标识,pjsua直接懵圈,给你抛了“需要整数”的错误。
修正后的代码示例
把创建账户时返回的对象存到变量里,之后直接传这个对象(或者它的ID)给modify_account就搞定了:
lib = pj.Lib() lib.init() lib.create_transport(pj.TransportType.UDP, pj.TransportConfig(0)) # 关键一步:保存创建的账户对象 acc = lib.create_account(pj.AccountConfig('127.0.0.1', '1234')) mailbox = 5678 # 直接传入账户对象,简单省事 lib.modify_account(acc, pj.AccountConfig('127.0.0.1', '%d' % int(mailbox))) # 要是想用账户ID的话,也可以这么写:lib.modify_account(acc.info().id, ...)
额外补充两点说明
lib.create_account()执行后会返回一个Account实例,这个实例直接就能作为modify_account的第一个参数,完全不用绕弯子。- 如果你非要用ID标识账户,通过
acc.info().id就能拿到正经的整数类型ID,绝对符合方法的参数要求。 - 你之前传的
'acc.info().uri'就是个普通字符串,pjsua根本没法把它解析成有效的账户标识,不报错才怪呢。
内容的提问来源于stack exchange,提问作者Beto
相关产品推荐
相关产品推荐

