=================
Phone Numbers
=================
Purchasing phone numbers is a two step process.
Searching For a Number
----------------------
First, we need to search for an available phone number. Use the
:php:meth:`Services_Twilio_Rest_AvailablePhoneNumbers::getList` method of the
:php:class:`Services_Twilio_Rest_AvailablePhoneNumbers` list resource.
.. code-block:: php
$accountSid = 'AC1234567890abcdef1234567890a';
$authToken = 'abcdef1234567890abcdefabcde9';
$client = new Services_Twilio($accountSid, $authToken);
$numbers = $client->account->available_phone_numbers->getList('US', 'TollFree');
foreach($numbers->available_phone_numbers as $number) {
echo 'Number: ' + $number->phone_number + "\n";
}
You can also pass in parameters to search for phone numbers in a certain area
code, or which contain a certain pattern.
.. code-block:: php
$accountSid = 'AC1234567890abcdef1234567890a';
$authToken = 'abcdef1234567890abcdefabcde9';
$client = new Services_Twilio($accountSid, $authToken);
// Full parameter documentation at http://www.twilio.com/docs/api/rest/available-phone-numbers#local
$params = array('AreaCode' => '925', 'Contains' => 'hi');
$numbers = $client->account->available_phone_numbers->getList('US', 'Local', $params);
foreach($numbers->available_phone_numbers as $number) {
echo 'Number: ' + $number->phone_number + "\n";
}
You can also use the type subresources to search for a given type.
Available types include:
- `local`
- `toll_free`
- `mobile`
.. code-block:: php
// Local
$numbers = $client->account->available_phone_numbers->local;
foreach($numbers as $number) {
echo 'Number: ' + $number->phone_number + "\n";
}
// TollFree
$numbers = $client->account->available_phone_numbers->toll_free;
foreach($numbers as $number) {
echo 'Number: ' + $number->phone_number + "\n";
}
// Mobile
$numbers = $client->account->available_phone_numbers->mobile;
foreach($numbers as $number) {
echo 'Number: ' + $number->phone_number + "\n";
}
Buying a Number
---------------
Once you have a phone number, purchase it by creating a new
:php:class:`Services_Twilio_Rest_IncomingPhoneNumber` instance.
.. code-block:: php
$accountSid = 'AC1234567890abcdef1234567890a';
$authToken = 'abcdef1234567890abcdefabcde9';
$client = new Services_Twilio($accountSid, $authToken);
$phoneNumber = '+44XXXYYYZZZZ';
$purchasedNumber = $client->account->incoming_phone_numbers->create(array('PhoneNumber' => $phoneNumber));
echo $purchasedNumber->sid;
Tying the two together, you can search for a number, and then purchase it.
.. code-block:: php
$accountSid = 'AC1234567890abcdef1234567890a';
$authToken = 'abcdef1234567890abcdefabcde9';
$client = new Services_Twilio($accountSid, $authToken);
// Full parameter documentation at http://www.twilio.com/docs/api/rest/available-phone-numbers#local
$params = array('AreaCode' => '800', 'Contains' => 'hi');
$numbers = $client->account->available_phone_numbers->getList('CA', 'TollFree', $params);
$firstNumber = $numbers->available_phone_numbers[0]->phone_number;
$purchasedNumber = $client->account->incoming_phone_numbers->create(array('PhoneNumber' => $firstNumber));
echo $purchasedNumber->sid;
You can also purchase a random number with a given area code (US/Canada only):
.. code-block:: php
$accountSid = 'AC1234567890abcdef1234567890a';
$authToken = 'abcdef1234567890abcdefabcde9';
$client = new Services_Twilio($accountSid, $authToken);
$purchasedNumber = $client->account->incoming_phone_numbers->create(array('AreaCode' => '925'));
echo $purchasedNumber->sid;
Retrieving All of a Number's Properties
---------------------------------------
If you know the number and you want to retrieve all of the properties of that
number, such as the ``voice_url`` or the ``sms_method``, you can use the
:php:meth:`Services_Twilio_Rest_IncomingPhoneNumbers::getNumber` convenience
function.
.. code-block:: php
$accountSid = 'AC1234567890abcdef1234567890a';
$authToken = 'abcdef1234567890abcdefabcde9';
$client = new Services_Twilio($accountSid, $authToken);
// Number must be in e.164 format.
$number = $client->account->incoming_phone_numbers->getNumber('+14105551234');
echo $number->voice_url;
If you know the ``sid`` of a phone number, you can retrieve it using the
``get()`` function.
.. code-block:: php
$accountSid = 'AC1234567890abcdef1234567890a';
$authToken = 'abcdef1234567890abcdefabcde9';
$client = new Services_Twilio($accountSid, $authToken);
$number = $client->account->incoming_phone_numbers->get('PN123456');
echo $number->voice_url;
Updating a Number
-----------------
You can easily update any of the properties of your
phone number. A full list of parameters is available
in the `Incoming Phone Number REST API Documentation.