Twilio技术问题:如何从服务器向SMS会话发送消息?
解决Twilio Conversations中服务器向SMS会话发送消息的问题
核心问题原因
Twilio Conversations的规则已更新:群组MMS会话的消息作者必须是会话参与者,且直接将Twilio号码加入会话会触发绑定地址校验错误——因为Twilio号码的绑定关系和会话强关联,无法随意跨会话添加。
可行解决方案
1. 使用服务角色发送系统消息
无需将管理员或Twilio号码加入目标会话,直接以Twilio内置的服务角色身份发送消息,绕过参与者限制:
client.conversations.v1.conversations(pc.conversation).messages.create( body=msg, author="system", # 指定为系统服务角色 x_twilio_webhook_enabled="false" # 可选,避免触发不必要的webhook回调 )
这种方式发送的消息会被标记为系统消息,所有会话参与者都能接收,且不会触发绑定地址错误。
2. 自定义发送者显示名称(可选)
如果需要让用户看到“管理员”这类自定义发送者名称,可通过attributes字段设置:
client.conversations.v1.conversations(pc.conversation).messages.create( body=msg, author="system", attributes='{"display_name": "管理员"}', # 自定义显示名称 x_twilio_webhook_enabled="false" )
前端展示消息时,可解析attributes中的display_name字段来显示发送者标识。
旧代码失效的原因
Twilio在2023年前后调整了Conversations的群组MMS会话规则,收紧了非参与者发消息的权限,同时强化了号码绑定的校验逻辑,导致直接用Twilio号码作为author的旧实现不再兼容。
内容的提问来源于stack exchange,提问作者ukalumni
相关产品推荐
相关产品推荐

