Created
December 3, 2010 08:47
-
-
Save jhaus/726732 to your computer and use it in GitHub Desktop.
Google Voice API Wrapper via: http://kalinchuk.com/?p=44
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// GoogleVoice(EMAIL, PASSWORD) | |
$gv = new GoogleVoice('[email protected]', 'password'); | |
// Sends an SMS. send_sms(NUMBER, MESSAGE) | |
echo $gv->send_sms('+15555555555', 'Example'); | |
// Gets all the sms | |
// get_sms() - returns all the sms | |
// get_sms(true) - returns all the unread sms | |
echo $gv->get_sms(); | |
/** | |
* Google Voice API Wrapper | |
* | |
* new GoogleVoice(EMAIL, PASSWORD) | |
* send_sms(NUMBER, MESSAGE) | |
* get_sms() | |
* get_sms(true) - unread | |
* | |
* @author Artem Kalinchuk | |
**/ | |
Class GoogleVoice { | |
/** | |
* Modify this | |
**/ | |
var $account_type = 'GOOGLE'; // The Google account type | |
var $service = 'grandcentral'; // Service for Google Voice is grandcentral (it may change) | |
var $source = ''; // The host of your site (for logging purposes) | |
// _rnr_se - This can be found in the source code of the inbox page of your Google Voice | |
// Simply view the source and search for '_rnr_se'. Should be a string of about 30 | |
// characters (numbers, letters, and symbols) | |
var $_rnr_se = ''; | |
/** | |
* Do not modify | |
**/ | |
var $url = 'https://www.google.com/'; // Google HTTPS URL | |
var $auth; // The AUTH key | |
var $email; // Users email address | |
var $password; // Users password | |
function __construct ($email, $password) { | |
if ($email) | |
$this->email = $email; | |
if ($password) | |
$this->password = $password; | |
// Authenticate if the Auth key is empty | |
if ($this->auth == '') { | |
$this->authenticate(); | |
} | |
} | |
/** | |
* authenticate | |
* Authenticates using the email and password. | |
* @return Auth Session Key | |
**/ | |
function authenticate () { | |
$form_data = array(); | |
$form_data['accountType'] = $this->account_type; | |
$form_data['Email'] = $this->email; | |
$form_data['Passwd'] = $this->password; | |
$form_data['service'] = $this->service; | |
$form_data['source'] = $this->source; | |
$response = $this->transmit($form_data, 'accounts/ClientLogin'); | |
preg_match("/Auth\=(.*)/", $response, $matches); | |
if (count($matches) == 0) { | |
return $response; | |
} else { | |
$this->auth = str_replace("Auth=", "", $matches[0]); | |
return $this->auth; | |
} | |
} | |
/** | |
* transmit | |
* Transmits the passed in POST data | |
* @param $form_data An array of POST fields and values | |
* @param $path The path to call | |
* @return Response from the server | |
**/ | |
function transmit ($form_data, $path, $USE_POST=true) { | |
$url = $this->url.$path; | |
$fields = array(); | |
foreach ($form_data as $field => $value) | |
$fields[] = $field.'='.urlencode($value); | |
// POST or GET? | |
if ($USE_POST) { | |
$ch = curl_init($url); | |
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); | |
curl_setopt($ch, CURLOPT_POST, count($form_data)); | |
curl_setopt($ch, CURLOPT_POSTFIELDS, implode('&', $fields)); | |
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); | |
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded", "Authorization: GoogleLogin auth=".$this->auth)); | |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); | |
} else { | |
$ch = curl_init($url.'?'.implode('&', $fields)); | |
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); | |
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); | |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); | |
} | |
$response = curl_exec($ch); | |
return $response; | |
} | |
/** | |
* send_sms | |
* Sends an SMS message | |
* @param $phone_number The number to send the SMS message to | |
* @param $text The message | |
* @return Response from the server (success or fail) | |
**/ | |
function send_sms ($phone_number, $text) { | |
$form_data = array(); | |
$form_data['phoneNumber'] = $phone_number; | |
$form_data['text'] = $text; | |
$form_data['id'] = ''; | |
$form_data['_rnr_se'] = $this->_rnr_se; | |
$response = $this->transmit($form_data, 'voice/sms/send/'); | |
return $response; | |
} | |
/** | |
* get_sms | |
* Gets the HTML of the SMS inbox | |
* @param $UNREAD boolean - Show unread or not | |
* @return The HTML from the SMS inbox page | |
**/ | |
function get_sms($UNREAD=false) { | |
$form_data = array(); | |
$form_data['auth'] = $this->auth; | |
if ($UNREAD) | |
$path = 'voice/inbox/recent/unread/'; | |
else | |
$path = 'voice/inbox/recent/'; | |
$response = $this->transmit($form_data, $path, false); | |
return $response; | |
} | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment