我是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)的正确方法是什么
谢谢。
发布于 2021-07-05 21:36:56
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 });
}
};https://stackoverflow.com/questions/68255391
复制相似问题