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

如何在Twilio WhatsApp中实现Lex V2执行进度更新?

可行方案:异步Lambda执行+Twilio主动推送进度

核心思路

放弃让Lex V2/Twilio等待Lambda同步执行的模式,改用「即时响应+异步处理+主动推送」的架构:

  1. Lex触发Lambda后立即返回初始回复给用户,避免超时
  2. Lambda启动后台异步任务处理耗时逻辑
  3. 异步任务每隔5秒调用Twilio API主动发送"please wait..."提示,直到任务完成
  4. 任务结束后,再主动推送最终结果给用户

具体实现步骤

1. 配置Lex V2的即时响应

在目标意图的配置中,设置触发后的即时回复内容,比如:

正在处理您的请求,请稍候...

确保用户能立刻收到反馈,同时Lambda开始执行后续逻辑。

2. 拆分Lambda为同步响应+异步处理两部分

  • 主Lambda函数:接收Lex的触发请求后,直接返回成功响应给Lex,同时启动异步处理流程(可通过调用另一个Lambda、AWS Step Functions或SQS队列实现),并传入用户的Twilio WhatsApp号码(从Lex的会话/请求属性中提取,比如requestAttributes['UserPhoneNumber'])
  • 异步处理Lambda:负责执行耗时业务逻辑,同时启动定时推送机制,直到任务完成后终止推送并发送结果。

3. 实现定时推送进度的代码示例(Python)

from twilio.rest import Client
import threading

# Twilio配置信息
TWILIO_ACCOUNT_SID = '你的Twilio账号SID'
TWILIO_AUTH_TOKEN = '你的Twilio授权Token'
TWILIO_WHATSAPP_NUMBER = 'whatsapp:+14155238886'  # Twilio官方测试号或你的自定义号

client = Client(TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN)
progress_timer = None

def send_wait_prompt(user_whatsapp_num):
    global progress_timer
    # 发送等待提示
    client.messages.create(
        body='please wait...',
        from_=TWILIO_WHATSAPP_NUMBER,
        to=f'whatsapp:{user_whatsapp_num}'
    )
    # 5秒后再次触发推送,直到任务完成
    progress_timer = threading.Timer(5.0, send_wait_prompt, args=[user_whatsapp_num])
    progress_timer.start()

def handle_long_task(user_num):
    # 启动进度推送定时器
    send_wait_prompt(user_num)
    
    try:
        # 执行你的耗时业务逻辑,比如调用外部API、数据处理等
        your_long_running_business_logic()
    finally:
        # 任务完成,取消定时器
        if progress_timer:
            progress_timer.cancel()
        # 发送最终结果
        client.messages.create(
            body='任务已完成!结果:XXX',
            from_=TWILIO_WHATSAPP_NUMBER,
            to=f'whatsapp:{user_num}'
        )

if __name__ == '__main__':
    # 从Lex传递的参数中获取用户号码
    target_user_num = '用户的WhatsApp号码'
    handle_long_task(target_user_num)

4. 关键注意事项

  • 确保异步Lambda能访问公网,以调用Twilio API
  • 正确从Lex的请求数据中提取用户的WhatsPhone号码(字段名需根据Lex与Twilio的集成配置确认)
  • 异常处理:如果耗时逻辑报错,要及时取消定时器并推送错误提示给用户
  • 遵守Twilio的消息频率限制,5秒间隔属于安全范围,避免短时间内发送大量消息导致限流

为什么不采用Lex Streaming API?

Lex Streaming API主要用于实时语音/文本的流式交互,而Twilio WhatsApp的消息基于HTTP异步推送,两者适配成本极高——Twilio不支持与Lex建立持续流式连接,反而「主动推送」的方式更直接、易落地。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 11:47:07