Twilio Client.calls.create()的twiml参数报错,该参数是否已废弃?
解决Twilio呼叫创建时
twiml参数报错的问题 你猜的没错,这里确实是参数兼容性的问题,结合你使用的环境,主要有两个关键点需要解决:
1. Python 2.7与最新Twilio SDK的兼容性冲突
首先要明确:最新版Twilio Python SDK已经完全放弃支持Python 2.7了(从v7.0.0版本开始就不再兼容)。你用Python 2.7强行安装最新版SDK,本身就会导致很多功能异常,包括参数不匹配的问题——这也是你收到create() got an unexpected keyword argument 'twiml'错误的核心原因之一。
2. twiml参数的版本差异
在2020年的教程里使用twiml参数是没问题的,但那时候的SDK版本还支持Python 2.7,而现在:
- 如果你坚持用Python 2.7,能安装的最高兼容SDK版本是v6.65.0,这个版本里没有
twiml参数,要直接传入TwiML内容,需要用body参数替代。 - 如果你升级到Python 3.x(强烈推荐,毕竟Python 2.7早已停止维护),最新版SDK里
twiml参数是正常可用的,和教程代码完全一致。
具体解决方案
方案一:升级到Python 3.x(推荐)
这是最稳妥的长期方案,升级后你可以直接使用教程里的代码,不需要做任何修改,而且能享受到Twilio SDK的最新功能和安全更新。
方案二:继续用Python 2.7,调整SDK版本和代码
- 先卸载当前的Twilio SDK,安装最后支持Python 2.7的版本:
pip uninstall twilio -y pip install twilio==6.65.0 - 修改代码,把
twiml参数替换为body:call = client.calls.create( body='<Response><Say>Ahoy, World!</Say></Response>', to='+YYYYYYYYY', from_='+XXXXXXXXX' )
这样修改后,你的代码就能正常运行,成功发起带自定义TwiML的呼叫了。
内容的提问来源于stack exchange,提问作者alexltz
相关产品推荐
相关产品推荐

