我开发了一个使用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"
答案 0 :(得分:0)
我不确定你的问题是什么,但我想我会与Twilio和AWS Lambda分享我的一些学习经验。不确定这是否是您已经知道的:
API网关 - 为了通过Lambda公开HTTP端点,您需要配置一个API网关指向AWS Lambda。
Lambda请求 - Lambda将收到的唯一有效负载是JSON有效负载。 Twilio只会生成FORM-URL-Encoded格式。您必须配置API网关以将Form-URL-Endcoded转换为JSON。
Lambda回复 - JSON in,JSON out。要将JSON的回复转换为TwiXML,您必须将消息从JSON转换为TwilXML
AWS Lambda,IMO,对Azure Functions没有任何帮助。帮自己一个忙,尝试Azure功能 - 它没有AWS Lambda的任何限制,也不必经过像API Gateway这样的翻译层。此外,可能是最好的功能,您可以在本地运行它,而无需创建自己的框架。为什么AWS不会优先考虑本地开发环境超出我的范围 - 除了可能首先进入市场。
HTH