4

我有一个生成一些文本的 lambda 函数。这是一个简单的 Twilio 应用程序

<Say>Welcome to your conference room!</Say>
<Dial>
   <Conference beep="true">waitingRoom</Conference>
</Dial>

当我使用邮递员发出 POST 请求时,它会准确输出。但我有两个问题:

  1. 标头返回到 application/json,我需要它作为 text/xml。
  2. 当我从 Twilio 发出 POST 请求时,我得到 502 Bad Gateway

我知道它必须对传入的参数映射做一些事情,并将来自 Lambda 的响应作为 text/xml 映射回 API Gateway。但我无法弄清楚如何做到这一点。

在此处输入图像描述在此处输入图像描述

4

3 回答 3

5

我使用以下模板映射基本上只是去掉引号并且它起作用了:


$input.path('$')

于 2015-08-24T00:08:05.930 回答
4

我很高兴不是唯一一个与 AWS Api Gateway 苦苦挣扎的人 :)

据我所知,AWS Api Gateway 主要是面向 JSON 的。如果您可以更改返回的响应的内容(使用 JSON),也许您可​​以解决您的问题:

{"say": "Welcome to your conference room!",
 "dial": [{
        "conference": [{
                "beep": "true",
                "name": "waitingRoom"
        }]
    }
]}

然后,您可以使用映射模板功能(在集成响应屏幕中)映射此内容,方法是添加一个内容类型设置为“application/json”的模板,并将一个映射模板设置为:

<Say>$input.json('say')</Say>
<Dial>
    <Conference beep="$input.json('dial.conference.beep')">$input.json('dial.conference.name')</Conference>
</Dial>

这对你有帮助还是我错过了什么?

于 2015-07-30T21:43:46.213 回答
0

要修改响应中的 Content-Type,您需要在 API Gateway 中配置 2 个区域:方法响应和集成响应。

在 Method Response 中,为 200 状态代码添加 Content-Type 响应标头。

在集成响应中,您打开 200 响应并将 Content-Type 的值设置为 text/xml。

这是我写的一篇关于返回 html 内容的文章的几个截图。您的情况听起来非常相似,因为您希望返回恰好包含 xml 并发送正确的 Content-Type 标头的字符串类型。

方法响应: 方法响应

集成响应: 整合响应

这是原始文章的链接:http: //kennbrodhagen.net/2016/01/31/how-to-return-html-from-aws-api-gateway-lambda/

于 2016-03-13T15:04:01.397 回答