问题描述
我是 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 });
}
};