仅在营业时间内转接Twilio电话

仅在营业时间内转接Twilio电话,twilio,Twilio,我花了好几个小时试图找到这个,但它仍然困扰着我 我只能在特定时间将电话转接到我的手机上吗,或者语音信箱?从表面上看,这应该很简单——也许使用Twiml?但我似乎无法“理解” 谢谢, 南希这里是Twilio开发者的福音传道者 您确实可以使用Twilio实现这一点,但是您需要编写一些代码并将其部署到internet上的某个地方。让我们看一下 假设您正在使用此功能转发呼叫: <Response> <Dial>+5551234567</Dial> </Res

我花了好几个小时试图找到这个,但它仍然困扰着我

我只能在特定时间将电话转接到我的手机上吗,或者语音信箱?从表面上看,这应该很简单——也许使用Twiml?但我似乎无法“理解”

谢谢,
南希

这里是Twilio开发者的福音传道者

您确实可以使用Twilio实现这一点,但是您需要编写一些代码并将其部署到internet上的某个地方。让我们看一下

假设您正在使用此功能转发呼叫:

<Response>
  <Dial>+5551234567</Dial>
</Response>
您需要的是一些可以在它们之间进行选择的应用程序。例如,一个简单的Ruby和Sinatra应用程序如下所示:

require 'sinatra'

post '/voice' do
  content_type 'text/xml'

  if Time.now.hour > 8 && Time.now.hour < 18
    "<Response>
      <Dial>+5551234567</Dial>
    </Response>"
  else
    "<Response>
      <Say>The office is currently closed.</Say>
    </Response>"
  end
end
需要“sinatra”
发布“/voice”do
内容类型为“文本/xml”
如果Time.now.hour>8&&Time.now.hour<18
"
+5551234567
"
其他的
"
该办公室目前关闭。
"
结束
结束
请注意,我们只查看时间,而不是一周中的某一天。所以你会在早上8点到下午6点之间接到电话。根据您的需要,您可能希望使其更加复杂

然后,您只需要向Twilio提供此应用程序的URL。根据可用工具的不同,您可以在自己的服务器上或某些云服务提供商(如Heroku、EngineYard、AppFog等)上运行此功能。其中大多数都有关于如何部署应用程序的非常好的文档


希望这有帮助

使用Twilio功能,现在更容易了。你不必在任何地方主持任何活动。只需创建一个链接到传入语音呼叫事件的新函数,然后设置您的设置号码,以便在新呼叫到达时调用该函数。下面是一个工作示例,您可以根据自己的喜好进行修改;它包括拨号分机,但如果需要,您可以删除该分机

请注意,它没有DST逻辑,如果需要,则必须使用矩()库进行一些额外的工作

exports.handler=函数(上下文、事件、回调){
恒力矩=要求的(‘力矩’);
////用于调试
//const util=require('util');
//log(util.inspect(context.gettwillioclient());
//console.log(util.inspect(event));
//请确保更新下面的numDigits以匹配,或者删除可变长度的numDigits
让电话簿={
“888”:“+1-800-800-8000”,//速8汽车旅馆
“666”:“+1-800-466-8356”,//汽车旅馆6
“000”:空
};
让callerId=event.Caller;//| |“+1-000-000-0000”//默认的调用方ID
让数字=事件。数字;
让twiml=new Twilio.twiml.VoiceResponse();
if(数字和电话簿[数字]){
twiml.say(“拨号分机”+数字);
twiml.dial({callerId:callerId},电话簿[数字];
twiml.hangup();
}
//Twilio时间以UTC为单位。这允许太平洋标准时间上午10点至下午7点,或太平洋标准时间周一至周五上午9点至下午6点。
//Twilio似乎没有https://momentjs.com/timezone/ 安装。
如果((矩().hour()>=17 |矩().hour()<2)和矩().isoWeekday()
require 'sinatra'

post '/voice' do
  content_type 'text/xml'

  if Time.now.hour > 8 && Time.now.hour < 18
    "<Response>
      <Dial>+5551234567</Dial>
    </Response>"
  else
    "<Response>
      <Say>The office is currently closed.</Say>
    </Response>"
  end
end
  exports.handler = function(context, event, callback) {
  const moment = require('moment');

  //// Useful for debugging
  //const util = require('util');
  //console.log(util.inspect(context.getTwilioClient()));
  //console.log(util.inspect(event));

  // be sure to update numDigits below to match, or delete it for variable length
  let phoneBook = {
    "888" : "+1-800-800-8000", // super 8 motel
    "666" : "+1-800-466-8356", // motel 6
    "000" : null
  };
  let callerId = event.Caller; // || "+1-000-000-0000"; // default caller ID
  let digits   = event.Digits;

  let twiml = new Twilio.twiml.VoiceResponse();

  if (digits && phoneBook[digits]) {
    twiml.say("Dialing extension " + digits);
    twiml.dial({ callerId: callerId }, phoneBook[digits]);
    twiml.hangup();
  }

  // Twilio time is in UTC. This allows 10 am to 7 pm PDT, or 9 am to 6 pm PST, weekdays.
  // Twilio doesn't seem to have https://momentjs.com/timezone/ installed.
  if ((moment().hour() >= 17 || moment().hour() < 2) && moment().isoWeekday() <= 5) {
    let gather = twiml.gather({ numDigits: 3, timeout: 3 });
    gather.say("Thank you for calling COMPANY NAME. Please dial your party's extension, or, hold, to leave a message.");
  } else {
    twiml.say("Thank you for calling COMPANY NAME. You have reached us outside business hours.");
  }
  twiml.redirect("http://twimlets.com/voicemail?Email=[YOUR-EMAIL]&Message=Please%20leave%20a%20message.&Transcribe=true");
  callback(null, twiml);
};