2017-03-04 89 views
0

我想要存檔是每當我收到某個關鍵字的短信時,我都會收到一個電話,說我收到了一條短信,然後按1與發送短信的人通話。Twilio處理電話

我已經創建三個文件來完成它,這些都低於

Twilio.php

該接收的文本消息發佈請求,叫我

$name = $_POST['name']; 
    $phone = $_POST['phone']; 

    $client = new Services_Twilio($AccountSid, $AuthToken); 

    try { 
    // make call 
    $call = $client->account->calls->create(
     $caller,     
     $number,      
     array("url" => "http://somewebsite.net/twilio/twiml.php?phone=$phone&name=$name") 
    ); 
    } catch (Exception $e) { 
    echo 'Error starting phone call: ' . $e->getMessage(); 
    } 

下一個文件,如果twiml.php處理電話,問我是否要說話並按1說話

twiml.php

$nm = $_GET['name']; 
    $ph = $_GET['phone']; 

    $name = "Deepak"; 
    header("content-type: text/xml"); 
    echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; 
?> 
<Response> 
    <Say>Hello <?php echo $name ?>.</Say> 
    <Gather numDigits="1" action="http://somewebsite.net/twilio/call.php?phone=<?php echo $ph ?>" method="POST"> 
     <Say>You have a text message, press 1 to speak.</Say> 
    </Gather> 
</Response> 

如果我按1說話,然後撥打該號碼的第三個文件名爲:下面是代碼:

Call.php

<?php 


    if($_REQUEST['Digits'] != '1') { 
     header("Location: twiml.php"); 
     die; 
    } 

    $ph = $_GET['phone']; 

    header("content-type: text/xml"); 
    echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; 
?> 
<Response> 
    <Dial>+1 <?php echo $ph ?></Dial> 
</Response> 

我想實現的是將這三個文件合併成一個,所以我不需要發佈Post請求,我可以在一個文件中處理整個呼叫,或者至少我可以合併twiml.php和call.php

有沒有辦法將這些?

+0

我想你可以在URL中傳遞一個特殊的參數,並檢查該參數是否設置,然後執行你的代碼,你可以爲每個文件做到這一點。 –

回答

0

Twilio開發者傳道這裏。

您可以將它全部放到一個文件中,並使用請求的URI($_SERVER['REQUEST_URI'])來打開您之後運行的代碼。或者,嘗試一個抽象出來的小型PHP框架可能會更有趣。像SlimSilex可能適合你。

我會問你爲什麼需要從一個文件運行這個功能,當你的功能看起來像它的作品?

+0

謝謝你的工作!是的,這是工作。我試圖消除要管理的文件數量,因此我可以在單個文件中進行編輯。 –

+0

很高興聽到,與應用程序的其餘部分祝你好運。 – philnash

+0

有沒有方法可以檢查所撥打的電話是由人機還是語音機器選取的?我可以在第一次通話時啓用Ifmachine,但是如果我需要檢查從calls.php發出的呼叫,是否有辦法檢查是否轉到語音郵件 –