You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

我写的按星期和时段路由呼叫的Twilio Function是否正确?

Twilio 按时段路由呼叫函数修正方案

你当前使用的代码存在几处语法和逻辑错误,以下是具体问题说明和可直接使用的修正版代码:

原代码存在的问题

  • 工作日判断逻辑错误:now.isoWeekday() == 1 || 3 || 5 的写法不符合JS语法规则,3、5会被直接判定为真值,导致无论当前是周几都会进入周一/周三/周五的判断分支,正确写法需要为每个判断条件补全等值判断逻辑
  • 时间判断语法错误:now.hour() < 9:30 这类写法不成立,moment的hour()方法仅返回整数小时值,要判断半小时节点需要结合minute()方法共同校验
  • 存在HTML转义字符残留:代码中的&gt;、&amp;&amp;、&quot;都是HTML转义后的内容,需要替换为原生JS的>、&&、"才能正常运行

修正后的完整代码

// 时段路由逻辑,适用于Twilio Studio IVR流程判断呼叫分支
// 请先在Twilio Functions全局配置的依赖项中添加 moment-timezone 0.5.31
const moment = require('moment-timezone');
  
exports.handler = function(context, event, callback) {
  let twiml = new Twilio.twiml.VoiceResponse();
  
  function businessHours() {
    // 时区设置,当前为美国丹佛时区,可按需修改为对应时区
    const now = moment().tz('America/Denver');
    
    // 周一、周三、周五的工作时间判断
    if(now.isoWeekday() === 1 || now.isoWeekday() === 3 || now.isoWeekday() === 5) {
      // 工作时段:8:00-9:30、12:00-17:00
      const hour = now.hour();
      const minute = now.minute();
      if(
        (hour === 8) || 
        (hour === 9 && minute < 30) || 
        (hour >=12 && hour <17)
      ) {
        return true;
      }
    } 
    // 周二的工作时间判断
    if(now.isoWeekday() === 2) {
      // 工作时段:8:30-11:00
      const hour = now.hour();
      const minute = now.minute();
      if(
        (hour === 8 && minute >=30) || 
        (hour >=9 && hour <11)
      ) {
        return true;
      }
    }   
    // 周四的工作时间判断
    if(now.isoWeekday() === 4) {
      // 工作时段:8:00-10:30、15:00-17:00
      const hour = now.hour();
      const minute = now.minute();
      if(
        (hour === 8) || 
        (hour ===9) || 
        (hour ===10 && minute <30) || 
        (hour >=15 && hour <17)
      ) {
        return true;
      }
    }   
    // 非工作时间返回false
    return false;
  };
  
  const isOpen = businessHours();
  if (isOpen) {
    twiml.say("Business is Open");
    // 可按需替换为你自己的路由逻辑,比如直接转接坐席
  } else {
    twiml.say("Business is Closed");
    // 可按需替换为非工作时间逻辑,比如留言提示
  }
  callback(null, twiml);
};

对接Twilio Studio说明

函数部署完成后,在Studio流程中添加「Run Function」控件选择该函数,之后根据函数返回的语音响应结果配置分支即可,工作时间分支路由到对应坐席,非工作时间分支走备用流程。

内容的提问来源于stack exchange,提问作者pageperfect

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:36:03