Twilio REST API顺序拨号

问题描述:

我真的不知道为什么我的代码不工作,因为Twilio的调试器不给我错误,所以我不知道该怎么办......我试图在REST中进行顺序拨号api使用Twilio所以它应该保持呼叫号码,直到一个人拿起..Below是我迄今为止写的代码。我正在使用会话来跟踪呼叫。Twilio REST API顺序拨号

文件名: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; 

} 

} 

使用PHP和twilio的拨号动词我有这等文件相同,顺序diallnig写,拨号动词的参数,允许它通过在我的情况数组的索引,但我不知道如何传递数组索引参数....任何想法?

<?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;'那是什么语言? – hakre

您的代码有语法错误等。

例如SESSION['X']=0;没有做你认为它正在做的事情。如果这是一个会话变量,它应该写为$_SESSION['X']=0;

要发现这些问题,请将错误报告启用到*别,然后将错误记录到文件中,然后观察该文件。它会给你一些提示。

请参阅Error Handling and Logging Docs

+0

好吧,我修复了会话错误,谢谢指出,我的思想太阴天它完全错过了!它做了第一个电话,但没有使第二个... – Bulvak

+0

与错误报告的问题是当我第一次运行代码它调用的第一个数字是好的,没有错误报告,但是当它运行2ndp艺术其他调用的代码有错误,但不会显示,因为我使POST来拨号.php,然后其Twilio使StatusCallback POST请求,以便他们看到错误,然后不是我。 我使用error_log(print_r($ _ REQUEST,true));打印由$ _request引起的错误,但打印所有错误怎么办? – Bulvak

+1

将它们记录到文件中。你可以使用PHP的错误日志。 – hakre