我正在使用SMS Studio,确实具有与入站SMS消息的快速聊天机器人对话,并且希望在对话完成后将对话日志转发到电子邮件。我编写了一个函数,该函数使用SendGrid API来forward SMSes to email。它独立工作-即,如果我配置电话号码以在输入文本时立即运行该功能,它将通过电子邮件发送该单个SMS输入。
但是,我想将该功能添加到Twilio Studio流程的末尾,以便一旦结束,它将通过电子邮件将整个对话日志发送给我。一旦将功能附加到工作室流程的末尾,它就会停止工作,并且会收到故障通知。
这是函数中的代码:
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);
});
};`
这是调试器返回的错误,如果我将此功能作为Twilio工作室流程的最后一步:
错误-81017
Twilio函数响应错误
Studio流程附加的Twilio函数返回的响应中有错误。
可能的原因
您的功能在响应之前已超时
您的函数返回了错误响应
可能的解决方案
您的Function必须包含一个回调。
确保将Function回调callback(err,response)正确放置在您的Function代码中。
如果您使用的是JavaScript Promise,请确保在成功和catch块中都调用了回调。
您的函数响应有错误。
我很难弄清错误是什么。有人有提示吗?
谢谢!
答案 0 :(得分:2)
特威里奥的贾罗德。我实际上写了一个与此非常相似的应用程序。代码对我来说看起来不错。通常,当人们遇到这种性质的错误时,它就是来自SendGrid承诺。这里有两个提示:
希望有帮助!如果不愿意,请发送电子邮件至support@twilio.com并提出更多问题。