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

使用含变量的Twilio WhatsApp模板,如何获取消息文本并存储?

获取Twilio模板消息的最终文本方法

针对你用Twilio模板发送WhatsApp消息无法直接通过message.body获取文本的问题,有三种可行方案:

1. 预先生成填充后的消息文本

既然你已经掌握所有模板变量的值,直接按照模板的原始内容手动替换变量,生成最终消息文本后存储即可。这种方法无需额外API调用,简单高效。

示例代码:

# 替换为你实际的模板内容
template_content = "您好,{1},您的订单{2}已发货,预计{3}送达,联系电话{4},地址{5},备注{6}"
# 替换变量生成最终文本
final_message = template_content.format(
    content_variables['var_a'],
    content_variables['var_b'],
    content_variables['var_c'],
    content_variables['vac_d'],
    content_variables['vac_e'],
    content_variables['vac_f']
)

# 将final_message存入你的数据表
# ...

# 发送Twilio消息(原代码不变)
message = client.messages.create(
    content_sid='AAAAAAA',
    from_='BBBBBBB',
    content_variables=json.dumps(
        {'1': content_variables['var_a'],
         '2': content_variables['var_b'],
         '3': content_variables['var_c'],
         '4': content_variables['vac_d'],
         '5': content_variables['vac_e'],
         '6': content_variables['vac_f']}),
    to=incoming_data['From']
)

2. 通过Twilio Content API获取模板内容再替换

如果不想硬编码模板内容,可调用Twilio的Content API获取对应content_sid的模板详情,拿到原始模板文本后再替换变量。这种方法无需维护模板副本,模板更新时自动同步。

示例代码:

# 获取指定content_sid的模板详情
content = client.content.v1.contents('AAAAAAA').fetch()
# 提取模板的文本内容(根据Twilio返回的实际结构调整路径)
template_text = content.versions[0].content.body.text

# 替换变量生成最终文本
final_message = template_text.format(
    content_variables['var_a'],
    content_variables['var_b'],
    content_variables['var_c'],
    content_variables['vac_d'],
    content_variables['vac_e'],
    content_variables['vac_f']
)

# 存储final_message到数据表
# ...

# 发送Twilio消息
message = client.messages.create(
    content_sid='AAAAAAA',
    from_='BBBBBBB',
    content_variables=json.dumps(
        {'1': content_variables['var_a'],
         '2': content_variables['var_b'],
         '3': content_variables['var_c'],
         '4': content_variables['vac_d'],
         '5': content_variables['vac_e'],
         '6': content_variables['vac_f']}),
    to=incoming_data['From']
)

3. 发送后重新获取消息详情尝试获取填充文本

部分场景下,Twilio会在消息发送后返回填充完整的文本内容。你可以发送后重新调用API获取消息详情,尝试读取body字段。

示例代码:

# 发送消息
message = client.messages.create(
    content_sid='AAAAAAA',
    from_='BBBBBBB',
    content_variables=json.dumps(
        {'1': content_variables['var_a'],
         '2': content_variables['var_b'],
         '3': content_variables['var_c'],
         '4': content_variables['vac_d'],
         '5': content_variables['vac_e'],
         '6': content_variables['vac_f']}),
    to=incoming_data['From']
)

# 重新获取消息详情
retrieved_message = client.messages(message.sid).fetch()
final_message = retrieved_message.body

# 如果获取到文本则存储,否则 fallback 到前两种方法
if final_message:
    # 存入数据表
    pass
else:
    # 使用预先生成或Content API的方式生成文本
    pass

各方案对比

  • 预先生成:操作简单,无额外开销,但需同步维护模板内容副本。
  • Content API获取:无需维护模板,但多一次API调用,有请求成本。
  • 发送后获取:无需维护模板,但依赖Twilio的返回逻辑,可靠性不如前两种。

内容的提问来源于stack exchange,提问作者Marcus Laszlo Stromeyer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 19:15:30