Level up your Twilio API skills in TwilioQuest, an educational game for Mac, Windows, and Linux. Download Now

Menu

Expand
Rate this page:

Thanks for rating this page!

We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?

Create Tasks from Phone Calls using TwiML: Create a TaskRouter Task using <Enqueue>

In the previous step we received a call to a Twilio phone number and prompted the caller to select a preferred language. But when the caller selected their language, we weren't ready to handle that input. Let's fix that. Create a new PHP file called 'enqueue-call.php' and add the following code. Substitute {WorkflowSid} for the SID of the TaskRouter Workflow you created in Part 1.

enqueue-call.php

<?php

$digit_pressed = $_REQUEST['Digits'];

if ($digit_pressed == '1') {
  $language = "es";
} else {
  $language = "en";
}

header("Content-Type: application/xml; charset=utf-8");

?>

<Response>
  <Enqueue workflowSid="{WorkflowSid}">
    <Task>{"selected_language": "<?= $language ?>"}</Task>
  </Enqueue>
</Response>

Now call your Twilio phone number. When prompted, press one for Spanish. You should hear Twilio's default <Queue> hold music. Congratulations! You just added yourself to the 'Customer Care Requests - Spanish' Task Queue based on your selected language. To clarify how exactly this happened, look more closely at what is returned from enqueue-call.php to Twilio when our caller presses one:

enqueue-call.php - TwiML Output

<?xml version="1.0" encoding="UTF-8"?>
<Response>
  <Enqueue workflowSid="WW0123401234...">
    <Task>{"selected_language": "es"}</Task>
  </Enqueue>
</Response>

Just like when we created a Task using the TaskRouter REST API (via curl), a Task has been created with an attribute field "selected_language" of value "es". This instructs the Workflow to add the Task to the 'Customer Care Requests - Spanish' TaskQueue based on the Routing Configurations we defined when we set up our Workflow. TaskRouter then starts monitoring for an available Worker to handle the Task.

Looking in the TaskRouter web portal, you will see the newly created Task in the Tasks section, and if you make an eligible Worker available, you should see them assigned to handle the Task. However, we don't yet have a way to bridge the caller to the Worker when the Worker becomes available.

In the next section, we'll use a special Assignment Instruction to easily dequeue the call and route it to an eligible Worker - our good friend Alice. For now, you can hang up the call on hold.

Next: Dequeue a Call to a Worker »

Rate this page:

Need some help?

We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd browsing the Twilio tag on Stack Overflow.