Twilio обрабатывает звонки

Я пытаюсь добиться того, что всякий раз, когда я получаю текстовое сообщение с определенными ключевыми словами, мне звонят и сообщают, что я получил текстовое сообщение, и нажимаю 1, чтобы поговорить с человеком, который отправил текстовое сообщение.

Я сделал это, создав три файла, они ниже

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

Есть ли способ объединить их?


person Deepak Tiwari    schedule 04.03.2017    source источник
comment
Я думаю, вы можете передать специальный параметр в URL-адресе и на этом URL-адресе проверить, установлен ли параметр, а затем выполнить свой код, и вы можете сделать это для каждого файла.   -  person John Ambrose    schedule 06.03.2017


Ответы (1)


Евангелист разработчиков Twilio здесь.

Вы можете поместить все это в один файл и использовать запрошенный URI ($_SERVER['REQUEST_URI']), чтобы включить код, который вы затем запустите. Или, может быть, было бы интереснее попробовать небольшой фреймворк PHP, который абстрагируется от этого. Что-то вроде Slim или Silex.

Я хотел бы спросить, почему вам нужно запускать это из одного файла, когда ваша функция выглядит так, как будто она работает?

person philnash    schedule 06.03.2017
comment
Спасибо, сработало!! Да, это работает. Я пытался уменьшить количество файлов для управления, чтобы я мог вносить изменения в один файл. - person Deepak Tiwari; 06.03.2017
comment
Есть ли способ проверить, был ли сделан вызов человеком или голосовой машиной. Я могу включить Ifmachine при первом вызове, но если мне нужно проверить вызов, сделанный из call.php , есть ли способ проверить, идет ли он на голосовую почту? - person Deepak Tiwari; 09.05.2017
comment
Невозможно определить автоответчик из <Dial> TwiML. Вы можете сначала набрать другой конец и выполнить обнаружение, прежде чем звонить на свой номер. Кроме того, ознакомьтесь с нашим новым обнаружением автоответчика, которое заменяет ifMachine . - person philnash; 09.05.2017