微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

什么是正确的 Twilio 函数回调?

如何解决什么是正确的 Twilio 函数回调?

我是 Twilio 的新手,希望在我的 Studio 流程图中包含一种开关,用于检查我们是否在定义的工作时间内。如果是(成功),则转发到该号码,如果否(失败),则转发到语音邮件

我尝试构建一个函数,有点源自这个 twilio git:https://github.com/twilio-labs/function-templates/tree/main/voicemail

const moment = require('moment');
const DEFAULT_UTC_OFFSET = 0;
const DEFAULT_WORK_WEEK_START = 1; // Monday
const DEFAULT_WORK_WEEK_END = 5; // Friday
const DEFAULT_WORK_HOUR_START = 8; // 8:00,8AM
const DEFAULT_WORK_HOUR_END = 18; // 18:59,6:59PM

function getInteger(stringValue,defaultValue) {
  const parsednumber = parseInt(stringValue,10);
  if (isNaN(parsednumber)) {
    return defaultValue;
  }
  return parsednumber;
}

exports.handler = function(context,event,callback) {
    const timezone = getInteger(context.TIMEZONE_OFFSET,DEFAULT_UTC_OFFSET);
    const workWeek = {
        start: getInteger(context.WORK_WEEK_START,DEFAULT_WORK_WEEK_START),end: getInteger(context.WORK_WEEK_END,DEFAULT_WORK_WEEK_END),};
    const workHour = {
        start: getInteger(context.WORK_HOUR_START,DEFAULT_WORK_HOUR_START),end: getInteger(context.WORK_HOUR_END,DEFAULT_WORK_HOUR_END),};
    
    const currentTime = moment().utcOffset(timezone);
    const hour = currentTime.hour();
    const day = currentTime.day();
    
    // between monday and friday
    const isWorkingDay = day <= workWeek.end && day >= workWeek.start;
    // between 8am and 7pm
    const isWorkingHour = hour <= workHour.end && hour >= workHour.start;
    
    if (isWorkingDay && isWorkingHour) {
        return true;
    } else {
        return false;
    }
};

从我得到的错误(82002 - 运行时应用程序超时)来看,回调一定是不同的。 callback(err,response) 的正确方法是什么?

谢谢。

解决方法

这里是 Twilio 开发者布道者。

在 Twilio 函数中,为了返回结果,您必须调用作为第三个参数传入处理函数的 callback 函数。您在此处遇到超时,因为您从未调用 callback,因此该函数运行 10 秒然后超时。

我会尝试像这样返回数据:

    if (isWorkingDay && isWorkingHour) {
        return callback(null,true);
    } else {
        return callback(null,false);
    }
};

请注意,它可能不喜欢原始布尔值,因此如果这不起作用,请尝试使用 JavaScript 对象,例如:

    if (isWorkingDay && isWorkingHour) {
        return callback(null,{ inWorkingTime: true });
    } else {
        return callback(null,{ inWorkingTime: false });
    }
};

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。