1

我正在使用 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 承诺,请确保在成功和捕获块中都调用回调。
您的函数响应错误。

我很难弄清楚错误是什么。有没有人有任何提示?

谢谢!

4

1 回答 1

2

来自 Twilio 的 Jarod。我实际上写了一个与此非常相似的应用程序。代码对我来说看起来不错。通常,当人们遇到这种性质的错误时,它来自 SendGrid 承诺。这里有两个提示:

  1. 如果您在测试时让函数保持打开状态,您实际上可以记录错误并查看函数的响应。日志将在底部。这些通常有更多信息。
  2. 检查您使用的出站电子邮件地址是否已在您的 SendGrid 帐户Whitelabel 中列入白名单 - Sendgrid
  3. 确保已将环境变量添加到 Functions 配置中。Twilio 功能配置 - 控制台

希望有帮助!如果没有更多问题,请随时发送电子邮件至 support@twilio.com。

于 2018-09-24T19:59:10.780 回答