PHP Receiving SMS
From SMS Wiki
Revision as of 14:00, 12 March 2007 by Old-user20 (Talk | contribs)
<?php
$sender = $_POST['sender'];
$data = $_POST['data'];
$name = $_POST['name'];
$message = process_incoming_message($sender, $data, $name);
// plug in the values returned from
// http://api.upsidewireless.com/soap/Authentication.asmx?op=GetParameters
$token = '4289bd26-4a8c-468b-847e-1ea72fd2dfd1';
$signature = 'y5MZoN7mV0sCYZHrBFDJbPL';
$api_call_data = array(
'token' => $token,
'signature' => $signature,
'recipient' => $sender, // The recipient is the recipient because we are sending right back to them
'message' => $message,
'encoding' => 'Seven' // Use 'Sixteen' if you are sending in Unicode
);
$post_data = build_post_data($api_call_data );
// Please refer to
// http://api.upsidewireless.com/
// for other sending methods
$url = 'http://api.upsidewireless.com/soap/SMS.asmx/Send_Plain';
$xml = do_post_request($url, $post_data);
// be sure you look at the XML from above to see if there are any errors
/************* Main processing function **************/
function process_incoming_message($sender, $data, $name) {
return 'Message Received:' . date("Y-m-d H:i:s");
}
// Everything below is just function definitions
function do_post_request($url, $data, $optional_headers = null)
{
$params = array('http' => array('method' => 'POST', 'content' => $data));
if ($optional_headers !== null) {
$params['http']['header'] = $optional_headers;
}
$ctx = stream_context_create($params);
$fp = @fopen($url, 'rb', false, $ctx);
if (!$fp) {
throw new Exception("Problem with $url, $php_errormsg");
}
$response = @stream_get_contents($fp);
if ($response === false) {
throw new Exception("Problem reading data from $url, $php_errormsg");
}
return $response;
}
function build_post_data($data, $prefix=null, $sep='', $key='') {
$ret = array();
foreach((array)$data as $k => $v) {
$k = urlencode($k);
if(is_int($k) && $prefix != null) {
$k = $prefix.$k;
}
if(!empty($key)) {
$k = $key."[".$k."]";
}
if(is_array($v) || is_object($v)) {
array_push($ret, build_post_data($v,"",$sep,$k));
} else {
array_push($ret,$k."=".urlencode($v));
}
}
if(empty($sep)) {
$sep = ini_get("arg_separator.output");
}
return implode($sep, $ret);
}
?>