首页 > 解决方案 > AWS Lambda 响应不是 TwiML 格式

问题描述

我一直在关注本教程,以设置一个 lambda 函数来回复来自 Twilio webhook 的传入文本。该函数似乎工作正常并接收文本数据,但是当它将 TwiML 传递回 Twilio 时,会出现某种格式问题。我在 Twilio 错误日志中收到 12200 - 架构验证警告,但我终生无法找到 TwiML 的问题。消息说:

WARN "Content is not allowed in prolog."在第 1 行,第 1 列。

我已经按照教程中所述的正确设置设置了 API 网关。集成请求映射模板设置为application/x-www-form-urlencoded,集成响应和方法响应模板设置为application/xml

我的 lambda 函数是:

def lambda_handler(event, context):
    return '<?xml version="1.0" encoding="UTF-8"?><Response><Message><Body>Sorry, the command is invalid.</Body></Message></Response>'

这是我从 Postman 发送请求时得到的响应。前面有一个引号和一个换行符,<?xml这似乎是问题所在,但正如您在lambda_handler()上面看到的,我不相信我会返回任何引号或\n.

"
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<Response>
    <Message>
        <Body>Sorry, the command  is invalid.</Body>
    </Message>
</Response>"

任何有关在 python 中返回 XML 或设置 Lambda API 网关的帮助将不胜感激,因为这似乎就是问题所在。

标签: python-3.xxmlamazon-web-servicestwiliotwilio-twiml

解决方案


事实证明,这毕竟是 API 网关的问题。我已经正确设置了它,但没有正确部署它,所以我所做的所有更改都没有得到实施。确保您的 API Gateway 已部署,以便您的映射模板真正生效!


推荐阅读