Node.js Twilio TWIML节点收集示例代码控制流

Node.js Twilio TWIML节点收集示例代码控制流,node.js,twilio,twilio-twiml,Node.js,Twilio,Twilio Twiml,我在检查twilio文档上的示例(v2.x,但v3.x也类似,我的问题不会改变) //此示例使用Node.js 6中的JavaScript语言功能+ "严格使用",; const express=require('express'); 常量斜纹=需要(“斜纹”); const urlencoded=require('body-parser')。urlencoded; 设app=express(); //使用Express中间件解析传入的POST参数 使用(urlencoded({extended

我在检查twilio文档上的示例(v2.x,但v3.x也类似,我的问题不会改变)

//此示例使用Node.js 6中的JavaScript语言功能+
"严格使用",;
const express=require('express');
常量斜纹=需要(“斜纹”);
const urlencoded=require('body-parser')。urlencoded;
设app=express();
//使用Express中间件解析传入的POST参数
使用(urlencoded({extended:false}));
//创建一个路由,该路由将处理作为
//在我们的应用程序中使用HTTP POST-to/voice
app.post('/voice',(请求、响应)=>{
//使用Twilio Node.js SDK构建XML响应
设twiml=new twilio.TwimlResponse();
//使用动词收集用户输入
twiml.gather({numDigits:1},(gatherNode)=>{
gatherNode.say('销售按1,支持按2');
});
//如果用户未输入输入,则循环
twiml.redirect('/voice');
//将响应呈现为XML以响应webhook请求
type('text/xml');
send(twiml.toString());
});
//创建HTTP服务器并侦听端口3000上的请求
app.listen(3000);
这是下面的片段

twiml.gather({numDigits:1},(gatherNode)=>{
gatherNode.say('销售按1,支持按2');
});
如果是,则假设用户输入了一些内容,然后我们移动到 twiml.redirect('/voice')

和其他语句按顺序执行

但如果它是非阻塞的,则会立即调用
/voice
端点,这将在无限循环中继续

我想知道流程是如何工作的

编辑:

这种混乱似乎是由这一评论引起的
//如果用户未输入输入,则循环


如果用户输入了一些内容,那么也会调用
twiml.redirect('/voice')
。我不知道这些代码是如何正常工作的?

这里是Twilio的Ricky

此代码不会创建无限循环,但原因与阻塞代码和非阻塞代码不同。您控制Twilio呼叫流的方式是通过,这是一种XML,其中包含一组关于如何处理传入呼叫的指令。
/voice
路由中的节点代码不是处理控制流本身,而是生成如下所示的XML:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
  <Gather numDigits="1">
    <Say>For sales, press 1. For support, press 2.</Say>
  </Gather>
  <Redirect>/voice</Redirect>
</Response>

有关销售,请按1。要获得支持,请按2。
/声音
<?xml version="1.0" encoding="UTF-8"?>
<Response>
  <Gather numDigits="1">
    <Say>For sales, press 1. For support, press 2.</Say>
  </Gather>
  <Redirect>/voice</Redirect>
</Response>