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

AWS Lambda对接Meta WhatsApp Business API Webhook验证字符串解码问题

解决Meta WhatsApp Webhook验证时的转义引号问题

问题出在API Gateway对Lambda返回值的处理上:当你直接返回字符串event['hub.challenge']时,API Gateway会默认把它当作JSON内容序列化,导致最终响应被包裹在双引号里(也就是你看到的"\"1158201444\""),而Meta的Webhook验证需要的是纯文本格式的challenge值,不需要JSON包装。

修正方案

修改Lambda代码,统一返回符合API Gateway代理集成规范的响应结构,同时指定响应的Content-Type为text/plain,这样API Gateway会直接返回纯文本内容,不会添加多余的引号:

def lambda_handler(event, context):
    # 验证token匹配
    if event.get('hub.verify_token') == "some value":
        return {
            "statusCode": 200,
            "headers": {
                "Content-Type": "text/plain"
            },
            "body": event['hub.challenge']
        }
    # 验证失败返回400
    else:
        return {
            "statusCode": 400,
            "body": "failed"
        }

关键说明

  • 必须返回包含statusCode、headers和body的字典结构,这是API Gateway Lambda代理集成的要求。
  • 通过headers设置Content-Type: text/plain,告诉API Gateway返回纯文本,而非JSON格式,避免自动序列化带来的引号包裹。
  • 移除原来直接返回字符串的逻辑,统一使用规范的响应结构,确保验证通过和失败场景的输出格式一致。

额外检查

确认API Gateway的集成类型是Lambda代理集成,没有在集成请求/响应中配置额外的映射模板,避免对响应内容做额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:40:33