2011-08-18 6 views
3

Je ne peux vraiment pas comprendre pourquoi mon code ne fonctionne pas parce que le débogueur de Twilio ne me donne pas d'erreurs, donc je ne sais pas quoi faire ... J'essaie de faire la numérotation séquentielle dans REST api en utilisant Twilio donc il devrait continuer à appeler les numéros dans l'ordre jusqu'à ce qu'une personne décroche..Below est mon code que j'ai écrit jusqu'à présent. J'utilise des sessions pour suivre les appels.Twilio REST API séquentielle numérotation

Nom du fichier: dial.php

<?php 
session_start(); 



    require 'Services/Twilio.php'; 
    $version = "2010-04-01"; 

$arr = array('4167641123','6478604321','9058553456'); 



    $sid = '....'; 
    $token = '...'; 
    $from = '....'; 
    $to = '416.....'; 
    $callback = 'www.site.com/dial.php'; 

    $client = new Services_Twilio($sid, $token, $version); 

    //if this is our very first call then CallStatus should be empty so it means we can use the emptiness of this variable 
    //to trigger our very first call 
    if (!(isset($_REQUEST['CallStatus']))) 
    { 
    try { 
     $call = $client->account->calls->create(
      $from, 
      $arr[0], 
      'http://demo.twilio.com/welcome/voice/', 
      array('Timeout' => 1, 
        'StatusCallback' => $callback) 
      ); 
      var_dump($call); 
     } catch (Exception $e) { 
      var_dump($e); 
     } 
} 
// if the CallStatus variable is not empty then the else statement will execute 
else 
{ 
//if this part of code runs for the first time, it means this is our 2nd call because the 1st person did not pick up 
//this means the second number in the array will be called 
//each time this statement runs it adds a 1 to the index of the array but if the last index number called was the final and 
//last number in the array, then this statement wont run and instead session at the bottom if statement will be initialized to 0 
//so that if this script is ran again it will start off from the first number in the array 
if (!($_SESSION['X']>=count($arr)-1) && isset($_REQUEST['CallStatus']) && ($_REQUEST['CallStatus']=='failed'|| $_REQUEST['CallStatus']=='no-answer' || $_REQUEST['CallStatus']=='busy')) 
{ 

$_SESSION['X']=$_SESSION['X']+1; 

    try { 
     $call = $client->account->calls->create(
      $from, 
      $arr[SESSION['X']], 
      'http://demo.twilio.com/welcome/voice/', 
      array('Timeout' => 1, 
        'StatusCallback' => $callback) 
      ); 
      var_dump($call); 
     } catch (Exception $e) { 
      var_dump($e); 
     } 
} 
//initializes the session to 0 because if we have reached to this else statement, 
//then it means the if statement above did not run and we have already called the last person 
//in the phone number array so we are at an end and we must close the program 
//by leaving session at 0 for the next trial to run properly 
else 
{ 

$_SESSION['X']=0; 

} 

} 

Je cet autre fichier même, diallnig séquentielle écrit en utilisant php et le verbe Dial Twilio, les paramètres du verbe Dial laisser passer l'index de tableau, mais dans mon cas, je Je ne sais pas comment passer le paramètre d'index de tableau .... des idées?

<?php 

// Set the numbers to call 
$numbers = array("<number to call 1>", "<number to call 2>", "<number to call n>"); 
$number_index = isset($_REQUEST['number_index']) ? $_REQUEST['number_index'] : "0"; 
$DialCallStatus = isset($_REQUEST['DialCallStatus']) ? $_REQUEST['DialCallStatus'] : ""; 

header("content-type: text/xml"); 

// Check the status of the call and 
// that there is a valid number to call 

if($DialCallStatus!="completed" && $number_index<count($numbers)){ 
?> 
    <Response> 
    <Dial action="attempt_call.php?number_index=<?php echo $number_index+1 ?>"> 
     <Number url="screen_for_machine.php"> 
     <?php echo $numbers[$number_index] ?> 
     </Number> 
    </Dial> 
    </Response> 
<?php 
} else { 
?> 
    <Response> 
     <Hangup/> 
    </Response> 
<?php 
} 
?> 
+0

'SESSION ['X'] = 0;' Quelle langue est-ce? – hakre

Répondre

1

Votre code a des erreurs de syntaxe et autres. Par exemple SESSION['X']=0; ne fait pas ce que vous pensiez faire. S'il s'agit d'une variable de session, elle doit être écrite $_SESSION['X']=0;.

Pour détecter ces problèmes, activez la génération de rapports d'erreur au plus haut niveau, puis consignez les erreurs dans un fichier, puis observez-le. Cela vous donnera quelques indices.

Voir Error Handling and Logging Docs.

+0

hakre j'ai réparé cette erreur de session merci pour avoir fait remarquer que mon esprit était tellement nuageux qu'il a complètement raté ça! il a fait le premier appel mais n'a pas fait le 2ème ... – Bulvak

+0

le problème avec le rapport d'erreur est quand je cours le code il appelle le premier nombre qui est bien, signale aucune erreur là, mais quand il exécute l'art 2ndp le code pour les autres appels il y a une erreur mais il ne l'affiche pas parce que je fais le POST à ​​dial.php et ensuite son Twilio qui fait les requêtes POST StatusCallback afin qu'ils voient l'erreur alors pas moi. J'utilise error_log (print_r ($ _ REQUEST, true)); pour imprimer les erreurs causées par $ _request, mais qu'en est-il de l'impression de TOUTES les erreurs? – Bulvak

+1

Enregistrez-les dans un fichier. Vous pouvez utiliser le journal d'erreurs PHP pour cela. – hakre