Twilio将短信转发至电子邮件-找不到模块';得到';
我是新来的。我正在尝试使用本教程将SMS转发到电子邮件地址: 我确信我已经完成了它所说的一切,但每次我都会收到一个错误11200 HTTP检索失败,详细信息如下: { “消息”:“找不到模块'got'”, “名称”:“错误”, “堆栈”:“错误:在Function.module中找不到模块'got'。\u resolveFilename(module.js:547:15)\n在 Function.Module.\u在Module.require处加载(Module.js:474:25)\n (module.js:596:17)\n位于module.twilioRequire[根据需要] (/var/task/node_modules/enigma lambda/src/dependency.js:28:21)\n在 在对象处需要(internal/module.js:11:18)\n。 (/var/task/handlers/ZFa37cc3db9fd8db0501c2e5fc92137969.js:1:75)\nTwilio将短信转发至电子邮件-找不到模块';得到';,twilio,twilio-functions,Twilio,Twilio Functions,我是新来的。我正在尝试使用本教程将SMS转发到电子邮件地址: 我确信我已经完成了它所说的一切,但每次我都会收到一个错误11200 HTTP检索失败,详细信息如下: { “消息”:“找不到模块'got'”, “名称”:“错误”, “堆栈”:“错误:在Function.module中找不到模块'got'。\u resolveFilename(module.js:547:15)\n在 Function.Module.\u在Module.require处加载(Module.js:474:25)\n (
在模块处编译(Module.js:652:30)\n在 Object.Module.\u extensions..js(Module.js:663:10)\n位于Module.load (module.js:565:32)\n在tryModuleLoad(module.js:505:12)“} 我已经尽力确保我编写的函数与教程相同。我确实是直接从我的电脑上复制的。我不知道如何进行故障排除,它似乎告诉我找不到“got”,但它应该在Twilio函数中可用。有什么想法吗?谢谢 编辑:代码如下:
const got = require('got');
exports.handler = function(context, event, callback) {
const requestBody = {
personalizations: [{ to: [{ email: context.TO_EMAIL_ADDRESS }] }],
from: { email: context.FROM_EMAIL_ADDRESS },
subject: `New SMS message from: ${event.From}`,
content: [
{
type: 'text/plain',
value: event.Body
}
]
};
got
.post('https://api.sendgrid.com/v3/mail/send', {
headers: {
Authorization: `Bearer ${context.SENDGRID_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify(requestBody)
})
.then(response => {
let twiml = new Twilio.twiml.MessagingResponse();
callback(null, twiml);
})
.catch(err => {
callback(err);
});
};
首先,上面带有
get
的代码适用于我的Twilio和SendGrid帐户,我刚刚测试过,我不知道你为什么会遇到问题…,可能尝试创建Twilio子帐户并从那里运行
第二,如果您仍然无法让
get
工作,这里有一些代码,您可以尝试,
我很抱歉,我们也测试过了,效果很好。它使用的是https
:
祝你好运 经过进一步研究,我发现Twilio依赖项中默认不再包含“got”。根据那里的说明,我去了,并添加了版本6.7.1,现在原来的源代码工作
不过,我更喜欢Alex的解决方案,因为它是“开箱即用”的,我将它作为公认的答案保留下来。我能够通过确保“get”作为依赖项安装在以下设置下来实现这一点:
您是否有
const-got=require('got')
beforeexports.handler=函数(…
??@AlexBaban是的,谢谢。我已经编辑了我的问题,以包括我正在使用的代码。我今天再次检查了所有内容,以确保没有遗漏任何内容,但仍然是关于找不到“get”的相同错误。但是您发布的代码第一次运行得非常完美!谢谢您的帮助。使用这种方法,我得到了“没有记录此事件的HTTP请求”,SMS未转发到电子邮件。我必须缺少一个简单的设置步骤,但我不知道缺少什么。我有我的SendGrid API密钥(它被配置为一个环境变量,我使用${context.SendGrid_API_key}访问它@Bugbddy请在Hello上查看评论,我写了你在问题开始时链接的博客文章,我现在就去更新。我知道这件事有一段时间了,所以我很抱歉没有看到。更新了博客文章和你找到评论的GitHub repo(那也是我的,对不起!).@philnash代码的日期为2017年7月5日,但仍然不起作用。这是我第一次尝试使用Twilio,我对文档不感兴趣。嗨@cja,该代码对您来说有什么不起作用?您是否如中所述将get
作为依赖项添加到您的中?
const https = require('https');
exports.handler = function (context, event, callback) {
let postData = JSON.stringify({
personalizations: [{
to: [{
email: 'somebody@gmail.com'
}]
}],
from: {
email: 'somebody@gmail.com'
},
subject: `New SMS message from: ${event.From}`,
content: [{
type: 'text/plain',
value: event.Body
}]
});
let postOptions = {
host: 'api.sendgrid.com',
port: '443',
path: '/v3/mail/send',
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
'Content-Length': Buffer.byteLength(postData),
}
};
let req = https.request(postOptions, function (res) {
// some code to handle the async response if needed
let twiml = new Twilio.twiml.MessagingResponse();
callback(null, twiml);
});
req.write(postData);
req.end();
};