So you've created a Twilio Application and connected to it from your Android device -- frickin' sweet! Go get yourself a drink and celebrate!
Now, let's make a Twilio Application that can actually do something useful by passing data from your Android app to your TwiML script. The most useful thing we could think of was... dialing out to an arbitrary phone number. It'll be easy, all we need to do is:
Device.connect() method.hello-client-monkey-twiml.php to serve a TwiML that contains
the <Dial> verb with the phone number you passed in from your Android
device.Let's go do it.
The text field in the app is wired up to the member variable numberField in
HelloMonkeyActivity. We'll now add some code to pass this through to your
script when creating the connection.
First, change the MonkeyPhone.connect() method to take in a String for the
phone number in MonkeyPhone.java, and add the number to a Map using the key
PhoneNumber. Then pass that parameter Map when calling
Device.connect():
import java.util.HashMap;
import java.util.Map;
/* ... other imports... */
public class MonkeyPhone implements Twilio.InitListener
{
private Device device;
private Connection connection;
/* ... other methods ... */
public void connect(String phoneNumber)
{
Map<String, String> parameters = new HashMap<String, String>();
parameters.put("PhoneNumber", phoneNumber);
connection = device.connect(parameters, null /* ConnectionListener */);
if (connection == null)
Log.w(TAG, "Failed to create new connection");
}
/* ... other methods ... */
}
And finally, in HelloMonkeyActivity, pass the phone number from the text
field to the updated MonkeyPhone.connect() method.
public class HelloMonkeyActivity extends Activity implements View.OnClickListener
{
private MonkeyPhone phone;
private EditText numberField;
/* ... other methods ... */
@Override
public void onClick(View view)
{
if (view.getId() == R.id.dialButton)
phone.connect(numberField.getText().toString());
else if (view.getId() == R.id.hangupButton)
phone.disconnect();
}
}
Now, the hello-client-monkey-twiml.php will receive a PhoneNumber parameter
in the request when it's invoked from your app. Change
hello-client-monkey-twiml.php to read the PhoneNumber parameter and print
that value into the <Dial> verb.
Note that <Dial> requires a callerId attribute when calling out to regular
ol' phone numbers. You'll need to provide a number that you've
verified with Twilio.
<?php
header('Content-type: text/xml');
// put a phone number you've verified with Twilio to use as a caller ID number
$callerId = "XXXXXXXXXX";
?>
<Response>
<Dial callerId="<?php echo $callerId ?>">
<Number><?php echo $_REQUEST["PhoneNumber"]; ?></Number>
</Dial>
</Response>
So, go ahead and build your app, run it, enter your cell phone number in the box, and hit dial. Your phone will ring and you can talk to yourself. Huzzah!
Now, it's about time apps started calling YOU. Keep reading.