如何知道twilio呼叫状态(已完成或未完成)

时间:2011-12-06 08:38:49

标签: php twilio zend-framework

我是twilio api的新人。在我正在处理的Web应用程序中,我必须检查调用是否完成,我发送wav文件到twiml。如果完成,我必须扣除用户的信用..我正在使用以下代码......

callMeAction

        $AccountSid = "**********************";
        $AuthToken = "***************";

        /* Your Twilio Number or an Outgoing Caller ID you have previously validated
          with Twilio */
        $from = '**************';

        /* Number you wish to call */
        $to = $_POST['contactno'];

        /* Directory location for callback.php file (for use in REST URL) */
        $url = 'http://'.$_SERVER['HTTP_HOST'].'/public/';

        /* Instantiate a new Twilio Rest Client */
        $client = new Services_Twilio($AccountSid, $AuthToken);



        /* make Twilio REST request to initiate outgoing call */
        $call = $client->account->calls->create($from, $to, $url . 'callback.php?number=' . $_POST['contactno'] . '&wav=' . $_POST['wav']);

        /* redirect back to the main page with CallSid */
        $msg = urlencode("Connecting... " . $call->sid);
        //header("Location: index.php?msg=$msg");

         $this->view->msg = $msg;

        if($call->status == 'COMPLETED'){

            /*
             *  Deduct credit if call completed
             */


          $this->view->msg = $msg;
        }

callback.php

<?php
    echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
?>



<?php if($_REQUEST['wav']){ ?>
<Response>
    <Say>A customer at the number <?php echo $_REQUEST['number']?> is calling</Say>
    <Dial><?php echo $_REQUEST['number']?></Dial>
    <Play><?php echo $_REQUEST['wav'] ;?></Play>
</Response>
<?php } ?>

请帮帮我... 提前致谢。 :)

3 个答案:

答案 0 :(得分:4)

设置StatusCallback (docs halfway down this page)的网址,并将收费逻辑放入该脚本中。

在创建调用时传递StatusCallback URL,您应该能够将可选参数数组作为第4个参数传递给:$client->account->calls->create()

对于传入呼叫,(可选)为每个号码(或应用程序,如果您使用该方法)定义URL。

答案 1 :(得分:3)

如果您通过REST界面拨打电话,则需要指定status callback in the request parameters

此外,该回调将是异步的,因此您不能像在示例中那样等待调用函数中的结果。您需要在回调中进行信用管理。

答案 2 :(得分:0)

您可以在状态回调页面或功能中调用响应后,在代码中设置statuscallback url。

此回调网址在localhost中不起作用。对于测试,您应该在检查它是否适合您之后在00webhost中部署项目。

有关详细信息,请阅读twilio文档。