2016-10-07 3 views
0

Я заинтересован в велоспорте через список номеров, набрав каждый номер, пока не наберет. Если мы дойдем до конца списка, начните с начала, N раз.Twilio цикл через номера до ответа на звонок

Мой сценарий выглядит следующим образом:

<Response> 
    <Dial action="hangup.php" timeout="5"> 
     <Number url="greet.php"> 
      123-456-7890 
     </Number> 
    </Dial> 
    <Dial action="hangup.php" timeout="5"> 
     <Number url="greet.php"> 
      223-456-7890 
     </Number> 
    </Dial> 
</Response> 

Есть ли способ для ответа на цикл N раз, или это решение просто жесткий код элементы набора N раз внутри блока отклика?

ответ

1

Вы можете использовать "<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.

+0

Интересный подход. Я полагаю, что единственным недостатком этого является некоторое задержка между каждым циклом, поскольку должен быть сделан новый HTTP-запрос. – levi