Twilio Schedule Beta使用send_at发定时短信报TypeError错误
报错根因
TypeError: create() got an unexpected keyword argument 'send_at' 是本地安装的Twilio Python SDK版本过低导致的。定时消息属于Beta阶段能力,7.10.0版本之前的Twilio Python SDK没有为messages.create()方法定义send_at、schedule_type两个调度相关参数,调用时会直接抛出参数不识别错误。
除了SDK版本问题,参数格式错误、Beta权限未开通也会导致功能调用失败。
修复步骤
- 升级Twilio Python SDK到支持版本
执行以下命令升级本地SDK包:pip install --upgrade twilio
升级完成后执行pip show twilio确认版本号,版本≥7.10.0即可支持定时消息参数。 - 修正参数格式
send_at参数不支持传入无时区信息的原生datetime对象,必须传入UTC时区的ISO 8601格式时间字符串,且设定的发送时间需要满足:距离调用接口的当前时间不少于15分钟、不超过7天,否则接口会返回参数校验错误。 - 确认Beta权限开通
进入Twilio控制台的Messaging Service配置页,确认当前使用的消息服务已经开通定时消息Beta功能权限,部分账号需要手动提交Beta功能使用申请后才能调用调度接口。
修正后的可运行代码示例
from datetime import datetime, timezone from twilio.rest import Client # 替换为你自己的账号信息 account_sid = "[你的Account SID]" auth_token = "[你的Auth Token]" messaging_service_sid = "[你的Messaging Service SID]" client = Client(account_sid, auth_token) # 构造UTC时区的定时发送时间,注意满足15分钟~7天的时间范围要求 scheduled_send_time = datetime(2022, 6, 18, 20, 36, 27, tzinfo=timezone.utc) message = client.messages.create( messaging_service_sid=messaging_service_sid, body='This is a scheduled message', send_at=scheduled_send_time.isoformat(), schedule_type='fixed', # 如需接收发送状态回调可打开下方注释 # status_callback='https://你的回调地址', to='+15559698489' ) print(message.sid)
注意:定时消息必须绑定Messaging Service发送,调用接口时不要同时传入
from_参数指定独立发送号码,否则会绕过消息服务的调度逻辑导致功能失效。
内容的提问来源于stack exchange,提问作者mkozar101
相关产品推荐
相关产品推荐

