Adding tracking for each user

We want to be able to track each user's response to the survey we sent and this is how we will do that.

In the previous recipe, we stored the phone number, survey ID, and the unique session ID for each person we sent the survey to.

Now we want to store each user's response for tracking later.

Getting ready

The complete source code for this recipe can be found in the Chapter3/ folder.

How to do it...

Let's set up tracker.php that listens for responses from our subscribers using the following steps:

  1. On your web server, create a file and name it tracker.php with the following code:
    <?php
    include("config.php");
    include("pdo.class.php");
    $pdo = Db::singleton();
    if( isset($_POST['Body']) ){
      $phone = $_POST['From'];
      $phone = str_replace('+','',$phone);
      $action = strtolower($_POST['Body']);
      $sid = $_POST['SmsSid'];
      $sql = "UPDATE responses SET answer='{$action}' WHERE phone_number='{$phone}' AND sms_sid='{$sid}'";
      $pdo->exec( $sql );
      $msg = "Your answer has been recorded";
      print_sms_reply($msg);
    }
    function print_sms_reply ($sms_reply){
      echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";    
      echo "<Response>\n<Sms>\n";
      echo $sms_reply;
      echo "</Sms></Response>\n";
    }
    ?>
  2. Finally, you have to point your Twilio phone number to it.
    How to do it...

    Insert the URL to this page in the SMS Request URL box. Then, any calls that you receive on this number will be processed via tracker.php.

How it works...

When a user replies to a survey, the tracker.php file is triggered.

We then perform a look-up based on their phone number and unique session ID and store their response in the Responses table.

Then, when we display the results later, we can use the responses, associate them with the answers we sent, and get a look at what people think.