Twilio Studio:将SMS对话日志转发到电子邮件

时间:2018-09-24 14:18:31

标签: twilio twilio-api twilio-functions

我正在使用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块中都调用了回调。
  您的函数响应有错误。

我很难弄清错误是什么。有人有提示吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

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

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

希望有帮助!如果不愿意,请发送电子邮件至support@twilio.com并提出更多问题。