我是Twilio的新手。我正在尝试使用本教程将短信转发到电子邮件地址:
我确信我已经完成了它要做的所有事情,但每次都会收到错误11200 HTTP检索失败,并提供以下详细信息:
{ “消息”:“找不到模块'得'', “名字”:“错误”, “stack”:“错误:无法在Function.Module._resolveFilename(module.js:547:15)找到模块'得到'\ n Module.require中的Function.Module._load(module.js:474:25)\ n (module.js:596:17)\ n在Module.twilioRequire [根据要求] (/var/task/node_modules/enigma-lambda/src/dependency.js:28:21) 在Object处需要(internal / module.js:11:18)\ n。 (/var/task/handlers/ZFa37cc3db9fd8db0501c2e5fc92137969.js:1:75)\n
在Module._compile(module.js:652:30)\ n at 在Module.load上的Object.Module._extensions..js(module.js:663:10)\ n (module.js:565:32)\ n在tryModuleLoad(module.js:505:12)“}
我已经尽力确保我的功能与教程相同。我直接从the github page复制了它以确定。我不知道如何继续进行故障排除,它似乎告诉我找不到“得到”但它应该在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);
});
};
答案 0 :(得分:2)
经过一番研究后,默认情况下,Twilio依赖项中不再包含表示“got”的found some comments on GitHub。根据那里的说明,我去了Runtime Functions Config section of the Twilio console并添加了版本6.7.1,现在原始源代码可以使用了!
我更喜欢亚历克斯的解决方案,因为它“开箱即用”,我将其作为公认的答案。
答案 1 :(得分:1)
首先,带有got
的上述代码适用于我的Twilio和SendGrid帐户,我刚刚测试过,我不知道你为什么会遇到麻烦......也许会尝试创建一个Twilio子帐户并从那里运行。
其次,如果你仍然无法让got
工作,这里有一些代码,你可以试试,
而我和我们也进行了测试并且有效。它改为使用https
:
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();
};
祝你好运!
答案 2 :(得分:0)
通过确保在以下这些设置下将“ got”安装为依赖项,我能够使其工作: https://www.twilio.com/console/runtime/functions/configure