Вы можете использовать "<Redirect>
". Но используйте его осторожно, чтобы убедиться, что вы не закончите бесконечный цикл (как всегда в случае с любыми петлями)
Я еще не тестировал этот код (в NodeJS), но быстро его отложил, чтобы дать вам идея о том, как <Redirect>
потенциально могут быть использованы для достижения того, что вам требуется
const maxRetries = 10;
app.get('/loopOnThisTwiml',
function(i_Req,o_Res)
{
var counter = i_Req.query.loopCounter ;
if(!counter)
{
counter = 0 ;
}
else
{
counter = counter+1;
}
var ivrTwimlResp = new twilio.TwimlResponse();
var thisTwimlUrl = "/loopOnThisTwiml?loopCounter=" + counter ;
ivrTwilRes.dial({callerId:'+1xxxxxxxxx',action:"hangup.php",method:"GET",timeout:"5"},
function()
{
this.number('+11234567890',{url:"/greet.php",method:"GET"});
}
)
.dial({callerId:'+1xxxxxxxxx',action:"hangup.php",method:"GET",timeout:"5"},
function()
{
this.number('+12234567890',{url:"/greet.php",method:"GET"});
}
);
if(counter < maxRetries)
{
ivrTwilRes.redirect({ method : 'GET' } , thisTwimlUrl);
}
o_Res.set('Content-Type','text/xml');
o_Res.send(ivrTwimlResp.toString());
}
);
код выше генерирует TwiML упомянутые в вашем вопросе и добавляет "<Redirect>"
к тому же TwiML, пока не дойдете счетчик (maxRetries); maxRetries определяется как глобальная константа.
Замечание: TwiML в вашем вопросе хорош, если вы хотите набирать номер по очереди и предпочитаете одно число над другим. Если вы хотите одновременно позвонить по нескольким номерам, и пусть кто-нибудь заберет звонок, вы также можете посмотреть Simulring.
Интересный подход. Я полагаю, что единственным недостатком этого является некоторое задержка между каждым циклом, поскольку должен быть сделан новый HTTP-запрос. – levi