twilio - Twilio Studio:将 SMS 对话日志转发到电子邮件
问题描述
我正在使用 SMS Studio 进行与入站 SMS 消息的快速聊天机器人对话,并希望在完成后将对话日志转发到电子邮件。我编写了一个使用 SendGrid API 将 SMSes转发到 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 Studio 流程中的最后一步:
错误 - 81017
Twilio 函数响应
错误 从附加到 Studio 流的 Twilio 函数返回的响应中存在错误。
可能的原因
您的函数在响应之前超时
您的函数返回错误响应
可能的解决方案
您的函数必须包含回调。
确保将函数回调 callback(err, response) 正确放置在函数代码中。
如果您使用 JavaScript 承诺,请确保在成功和捕获块中都调用回调。
您的函数响应错误。
我很难弄清楚错误是什么。有没有人有任何提示?
谢谢!
解决方案
来自 Twilio 的 Jarod。我实际上写了一个与此非常相似的应用程序。代码对我来说看起来不错。通常,当人们遇到这种性质的错误时,它来自 SendGrid 承诺。这里有两个提示:
- 如果您在测试时让函数保持打开状态,您实际上可以记录错误并查看函数的响应。日志将在底部。这些通常有更多信息。
- 检查您使用的出站电子邮件地址是否已在您的 SendGrid 帐户Whitelabel 中列入白名单 - Sendgrid
- 确保已将环境变量添加到 Functions 配置中。Twilio 功能配置 - 控制台
希望有帮助!如果没有更多问题,请随时发送电子邮件至 support@twilio.com。
推荐阅读
- apache-spark - org.apache.spark.sql.AnalysisException:未定义函数:'coalesce'
- javascript - 为什么在 html 元素之前显示警报
- r - 如何将函数应用于列的每个单元格?
- docker - Minikube Kubernetes 不允许在 Mac 上进入,尽管作为 VM 运行
- java - 如何使用 retrofit2 上传图像文件?
- ms-word - VSTO Word 加载项导致 45 秒的加载时间
- java - string.replaceAll("\\n","") 如果字符串被用作控制台的输入并包含换行符,则不起作用
- scala - 将数据集 [数据集 [列]] 展平为数据集 [列]
- java - java注解中如何理解直接呈现、间接呈现、呈现、关联?
- c# - 从本地脚本中删除变量并加载现有数据库数据