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 });
}
};
推荐阅读
- javascript - 是否有可能知道装饰器在一个类中定义了哪些方法和属性
- javascript - JavaScript : 根据与 x 的绝对差值重新排列数组元素
- flutter - Firestore - 按子集合中的文档字段排序文档
- r - 为一定数量的行创建唯一的重复变量
- excel - 仅将切片数据复制到另一个工作表
- php - (Elasticsearch) 将 Unix 格式的数据转换为时间戳(不更改映射)
- regex - vbscript 中的正则表达式模式以匹配多行文本
- authentication - 如何修改 laravel 5.6 登录行为?如何添加更多用于登录的字段以及电子邮件和密码?
- javascript - How do I remove the menu bar from a specific window in electron?
- c# - How to fix System.OutOfMemoryException when reading large string file to a DataSet?