You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django+Twilio架构问题:如何展示收发短信并识别回复对应的发起用户

解决方案参考

轻量实现方案(无需使用Twilio Conversations,改造成本最低)

你当前遇到的入站短信无法关联发送会话的问题,不需要依赖Twilio侧的会话ID即可解决,核心逻辑基于Twilio入站请求固定携带的两个参数实现:

  • From:发送回复的外部联系人手机号
  • To:你之前发送短信时使用的Twilio平台号码

你只需在Django项目中新增一张会话关联表,核心字段如下:

  • 发起会话的应用内用户ID
  • 外部联系人手机号(对应入站请求的From参数)
  • 发送短信使用的Twilio号码(对应入站请求的To参数)
  • 会话创建时间、状态等扩展字段

业务流程改造如下:

  1. 应用内用户发起给外部联系人的短信时,先查询是否存在「用户ID+联系人手机号+Twilio发信号码」对应的已激活会话,无则新建,有则复用
  2. 入站webhook收到Twilio回调时,直接用request.POST.get('From')和request.POST.get('To')匹配会话关联表,即可快速定位到对应的发起用户,完成消息转发和内容存储

注意:如果业务存在「多个应用内用户使用同一个Twilio号码向同一个外部联系人发短信」的场景,可通过给每个独立会话分配唯一的Twilio发信号码的方式避免匹配冲突。

Twilio Conversations实现方案(适合后续有消息能力扩展需求的场景)

Twilio Conversations完全可以解决你的问题,且无需自行维护会话关联逻辑,Twilio侧会统一处理会话生命周期和多渠道消息适配,实现步骤如下:

  1. 应用内用户发起短信时,调用Conversations接口创建/复用会话,在会话的attributes元数据字段中存储发起会话的应用内用户ID,同时给会话添加两个参与者:目标联系人手机号、用于发信的Twilio短信号码
  2. 发送短信时直接调用Conversations的消息发送接口,Twilio会自动将消息转为短信发送给外部联系人
  3. 入站webhook配置为接收Conversations的入站消息事件,事件会直接携带对应会话ID,你只需从会话的attributes中取出预存的发起用户ID,即可完成消息转发和内容存储

该方案的优势是后续如果要扩展WhatsApp、富媒体消息、已读状态、群聊等能力,不需要改造核心会话逻辑,Twilio侧已经完成了多渠道的能力统一。

选型建议

  • 若当前只有短信需求,不想改动现有发送逻辑,优先选择轻量方案,开发周期通常仅需1-2天
  • 若后续有扩展多渠道消息的规划,或需要Twilio帮你处理消息归档、会话生命周期管理等能力,优先选择Conversations方案,长期维护成本更低

内容的提问来源于stack exchange,提问作者giaggi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 09:36:06