AWS Lambda上的Microsoft bot(botbuilder-aws-lambda)错误

时间:2017-08-19 11:54:01

标签: node.js aws-lambda botframework serverless-framework

我开发了一个使用botframework模拟器工作的Microsoft bot,我想在AWS Lambda上托管它,并且使用以下代码,当我在lambda上执行它时,会导致错误。

const builder = require('botbuilder');
const lambda = require('botbuilder-aws-lambda');
var connector = new builder.ChatConnector({
   appId: 'My App ID',
   appPassword: 'PassWord ID' 
});
exports.handler = lambda(connector); 

var bot = new builder.UniversalBot(connector, function (session) {
    session.send("You said: %s", session.message.text);
 });

以下是错误:

"errorMessage": "RequestId: 2d91dffa-84d3-11e7-870e-0151204c40e6 Process exited before completing request"

详细日志文件显示以下内容:

2017-08-19T11:40:20.889Z    2d91dffa-84d3-11e7-870e-0151204c40e6    SyntaxError: Unexpected token u in JSON at position 0
at Object.parse (native)
at handler (/var/task/node_modules/botbuilder-aws-lambda/lib/index.js:5:24)

  "errorMessage": "RequestId: 2d91dffa-84d3-11e7-870e-0151204c40e6 Process exited before completing request"

1 个答案:

答案 0 :(得分:0)

我不确定你的问题是什么,但我想我会与Twilio和AWS Lambda分享我的一些学习经验。不确定这是否是您已经知道的:

  1. API网关 - 为了通过Lambda公开HTTP端点,您需要配置一个API网关指向AWS Lambda。

  2. Lambda请求 - Lambda将收到的唯一有效负载是JSON有效负载。 Twilio只会生成FORM-URL-Encoded格式。您必须配置API网关以将Form-URL-Endcoded转换为JSON。

  3. Lambda回复 - JSON in,JSON out。要将JSON的回复转换为TwiXML,您必须将消息从JSON转换为TwilXML

  4. AWS Lambda,IMO,对Azure Functions没有任何帮助。帮自己一个忙,尝试Azure功能 - 它没有AWS Lambda的任何限制,也不必经过像API Gateway这样的翻译层。此外,可能是最好的功能,您可以在本地运行它,而无需创建自己的框架。为什么AWS不会优先考虑本地开发环境超出我的范围 - 除了可能首先进入市场。

    HTH