首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是正确的Twilio函数回调?

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

Stack Overflow用户
提问于 2021-07-05 19:30:59
回答 1查看 67关注 0票数 0

我是Twilio的新手,我想在我的Studio流程图中包括一种开关,它可以检查我们是否在定义的营业时间内。如果是(成功),则前转到该号码;如果否(失败),则前转到语音信箱。

我尝试构建一个函数,该函数从twilio git派生而来:https://github.com/twilio-labs/function-templates/tree/main/voicemail

代码语言:javascript
复制
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)的正确方法是什么

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-05 21:36:56

Twilio开发者的布道者在这里。

在Twilio函数中,为了返回结果,必须调用作为第三个参数传递给处理程序函数的callback函数。你在这里会得到一个超时,因为你从来没有调用过callback,所以这个函数会运行10秒,然后超时。

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

代码语言:javascript
复制
    if (isWorkingDay && isWorkingHour) {
        return callback(null, true);
    } else {
        return callback(null, false);
    }
};

请注意,它可能不喜欢基本的布尔值,因此如果不起作用,请尝试使用JavaScript对象,如下所示:

代码语言:javascript
复制
    if (isWorkingDay && isWorkingHour) {
        return callback(null, { inWorkingTime: true });
    } else {
        return callback(null, { inWorkingTime: false });
    }
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68255391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档