【发布时间】:2021-04-26 07:30:25
【问题描述】:
我一直在关注这个tutorial,以便设置一个 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 网关的帮助将不胜感激,因为这似乎就是问题所在。
【问题讨论】:
-
使用 Postman postman.com 之类的工具查看结果有何感想?输出是否符合预期?
-
在 any XML 中的
<?xml ... ?>XML 声明之前检查可见或不可见字符。有关详细信息,请参阅重复链接。 -
@Alan 我用我在 Postman 中得到的回复更新了这个问题。看起来
-
@kjhughes 我查看了这两个链接,但它们似乎都不起作用。这个问题可以重新打开吗?正如您在上面的
lambda_handler()中看到的那样,在 -
链接不是为了“工作”;他们的目的是通知。事实上,他们告诉你的是@Alan 的有用建议,即仔细检查正在创建的实际 XML 字符串:你确实在 XML 声明之前有字符。
标签: python-3.x xml amazon-web-services twilio twilio-twiml