How do I build a SMS Keyword Response Application?

SMS keyword applications are designed to send customized SMS replies based on the ‘Body’ of the incoming text message.

When an SMS message is received at your Twilio phone number, your application will fetch the ‘Body’ request parameter of the message. Your application will then match the text of your incoming message with the keywords you have listed and send a reply.

The following is a PHP code example of a SMS Keyword Response Application. When an animal name messaged to a Twilio phone number, the definition of the animal is replied in response.


/* Include twilio-php, the official Twilio PHP Helper Library, 
 * which can be found at


/* Controller: Match the keyword with the customized SMS reply. */
function index(){
	$response = new Services_Twilio_Twiml();
	$response->sms("Reply with one of the following keywords: 
monkey, dog, pigeon, owl.");
	echo $response;

function monkey(){
	$response = new Services_Twilio_Twiml();
	$response->sms("Monkey. A small to medium-sized primate that 
typically has a long tail, most kinds of which live in trees in 
tropical countries.");
	echo $response;

function dog(){
	$response = new Services_Twilio_Twiml();
	$response->sms("Dog. A domesticated carnivorous mammal that 
typically has a long snout, an acute sense of smell, and a barking, 
howling, or whining voice.");
	echo $response;

function pigeon(){
	$response = new Services_Twilio_Twiml();
	$response->sms("Pigeon. A stout seed- or fruit-eating bird with 
a small head, short legs, and a cooing voice, typically having gray and 
white plumage.");
	echo $response;

function owl(){
	$response = new Services_Twilio_Twiml();
	$response->sms("Owl. A nocturnal bird of prey with large 
forward-facing eyes surrounded by facial disks, a hooked beak, 
and typically a loud call.");
	echo $response;

/* Read the contents of the 'Body' field of the Request. */
$body = $_REQUEST['Body'];

/* Remove formatting from $body until it is just lowercase 
characters without punctuation or spaces. */
$result = preg_replace("/[^A-Za-z0-9]/u", " ", $body);
$result = trim($result);
$result = strtolower($result);

/* Router: Match the ‘Body’ field with index of keywords */
switch ($result) {
    case 'monkey’':
    case 'dog':
    case 'pigeon':
    case 'owl':

/* Optional: Add new routing logic above this line. */