Get Started

SMS Quickstart Tutorial

Tracking SMS Conversations

Twilio offers a simple way to keep track of conversations between two phone numbers by using HTTP cookies.

What is a cookie?

Just like in web applications, a cookie is a small file that your application can store on Twilio's servers to keep track of information, such as a username or account. For Twilio SMS, cookies are scoped to the "conversation" between two parties -- you can have a unique cookie for each To/From phone number pair. For example, you can store a unique cookie for any messages sent between 415-555-2222 and 415-555-1111, which will be different than the cookie used between 415-555-3333 and 415-555-1111.

Why cookies?

In web apps, you write a cookie to keep "statefulness" between separate requests from the same browser. Similarly, SMS messages are independent communications between two parties, so Twilio allows you to tie them together as a logical session via cookies. This means you can use server-side sessions to keep track of application state between requests. How cool! Twilio will expire the cookies for that conversation after four hours of inactivity, as if the user "closed the browser."

Storing Conversation Data

The cookies let you share state across multiple messages allowing you to treat separate messages as a conversation, and store data about the conversation in the cookies for future reference.

Let's use this functionality to count how many messages a certain person has sent.

sms-conversation.cshtml
@{
    int counter = 0;

    // get the session varible if it exists    
    if (Session["counter"]!=null) { counter=(int)Session["counter"]; }
    
    // increment it
    counter++;
 
    // save it
    Session["counter"] = counter;

    // make an associative array of senders we know, indexed by phone number
    var people = new Dictionary<string,string>() { 
        {"+14158675309","Curious George"},
        {"+14158675310","Boots"},
        {"+14158675311","Virgil"}
    };
    
    // if the sender is known, then greet them by name
    // otherwise, consider them just another monkey
    string name = "Monkey";
    if (!string.IsNullOrEmpty(Request["From"]))
    {
        name = people[Request["From"]];
    }
    
    // output the counter response
    Response.ContentType = "text/xml";
}
<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Sms>@name has messaged @Request["To"] @counter times</Sms>
</Response>

Here, we use the Session object to store the message count.

Go ahead and send a few messages to your Twilio application, and watch your counter grow.


Next: Sending SMS Messages During a Phone Call »