Difference between revisions of "PHP Sending SMS"
From SMS Wiki
(New page: Please see the receiving example as it contains code for sending as well.) |
|||
Line 1: | Line 1: | ||
− | + | <source lang="php"> | |
+ | <?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); | ||
+ | } | ||
+ | |||
+ | ?> | ||
+ | </source> |
Revision as of 21:56, 8 May 2008
<?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); } ?>