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

如何使用Twilio实现WhatsApp动态内容列表消息(兼容Twilio Studio)

实现WhatsApp动态列表消息(Twilio Studio集成方案)

核心思路

利用Twilio Functions生成动态列表内容,再通过Twilio Studio的HTTP请求+发送消息部件完成交互,完全适配用户发起对话后的无审核场景。

步骤1:创建Twilio Function生成动态列表Payload

Twilio Functions可直接从你的数据源(数据库/内部API)拉取服务商预约数据,并构造符合WhatsApp要求的列表消息结构:

  1. 登录Twilio控制台,进入「Functions & Assets」→「Create Function」,选择「Blank」模板。
  2. 替换函数代码为以下示例(根据你的数据源调整):
exports.handler = async function(context, event, callback) {
  // 1. 从你的数据源获取服务商数据(替换为实际逻辑)
  const serviceProviders = await fetchYourServiceProviders();
  
  // 2. 构造WhatsApp列表消息的Sections
  const sections = serviceProviders.map(provider => ({
    title: `服务商专区`,
    rows: [{
      id: provider.id, // 用户选择后会返回此ID,用于后续预约逻辑
      title: `ID: ${provider.id} - ${provider.name}`,
      description: `可预约时段: ${provider.availableTime}`
    }]
  }));

  // 3. 构造完整的列表消息Payload
  const messagePayload = {
    messaging_product: "whatsapp",
    recipient_type: "individual",
    to: event.userNumber, // 从Studio传递的用户号码
    type: "interactive",
    interactive: {
      type: "list",
      header: {
        type: "text",
        text: "选择服务商预约"
      },
      body: {
        text: "请从下方列表选择你要预约的服务商ID"
      },
      footer: {
        text: "点击选项完成预约"
      },
      action: {
        button: "选择服务商",
        sections: sections
      }
    }
  };

  callback(null, messagePayload);
};

// 模拟数据获取函数,替换为你的实际逻辑
async function fetchYourServiceProviders() {
  return [
    { id: "SP001", name: "张师傅", availableTime: "9:00-18:00" },
    { id: "SP002", name: "李师傅", availableTime: "10:00-19:00" }
  ];
}
  1. 保存函数,记录函数的访问URL(如https://your-function-domain.twil.io/get-provider-list)。

步骤2:配置Twilio Studio流程

  1. 打开你的Studio Flow,在用户触发对话的节点后添加「HTTP Request」小部件:
    • 请求方法选择GET或POST(对应Function的处理逻辑)
    • 请求URL填入刚才的Function地址
    • 添加参数userNumber,值设为{{trigger.message.From}}(自动获取用户的WhatsApp号码)
  2. 添加「Send Message」小部件,连接HTTP请求的「Success」分支:
    • 消息类型选择「JSON」
    • 消息内容填入{{widgets.http_request_1.body}}(直接复用HTTP请求返回的列表消息Payload)
  3. 处理用户选择后的逻辑:用户点击列表选项时,Twilio会将选中的row.id(服务商ID)通过trigger.Message.Body或widgets.send_message_1.InteractiveResponse传递到Studio,可添加「Split Based On...」小部件,根据ID分支到对应的预约确认流程。

关键注意事项

  • 确保Twilio Function的「Access Control」设置为「Allow all Twilio accounts to call this Function」,否则Studio无法调用。
  • 列表消息的每个row.id需唯一,便于后续识别用户选择的服务商。
  • 注意WhatsApp列表消息的限制:每个section最多10行,最多支持10个section。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:15:55