【问题标题】:AWS Lambda response not in TwiML formatAWS Lambda 响应不是 TwiML 格式
【发布时间】: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 发送请求时得到的响应。 &lt;?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 中的 &lt;?xml ... ?&gt; XML 声明之前检查可见或不可见字符。有关详细信息,请参阅重复链接。
  • @Alan 我用我在 Postman 中得到的回复更新了这个问题。看起来
  • @kjhughes 我查看了这两个链接,但它们似乎都不起作用。这个问题可以重新打开吗?正如您在上面的lambda_handler() 中看到的那样,在
  • 链接不是为了“工作”;他们的目的是通知。事实上,他们告诉你的是@Alan 的有用建议,即仔细检查正在创建的实际 XML 字符串:你确实在 XML 声明之前有字符。

标签: python-3.x xml amazon-web-services twilio twilio-twiml


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-11-28
    • 2018-03-22
    • 2021-09-19
    • 2017-09-28
    • 2018-06-03
    • 2021-01-08
    • 2018-02-28
    相关资源
    最近更新 更多