// Messente API PHP wrapper if (!file_exists('../messente.php')) { die('Could not find messente.php'); } require_once '../messente.php'; // Initialize Messente API // No E-mail is sent when debug mode is on. Disable debug mode for live release. $preferences = array('username' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 'password' => 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy', 'debug' => true, 'error_email' => getenv("SERVER_ADMIN")); $Messente = new Messente($preferences); // Array of messages to send $messages = array(array('from' => '+37251916062', 'to' => '+37251916062', 'content' => 'Test to first number รต')); $st_message = $db->prepare("INSERT INTO messages (sender_id, recipient, content, sent, insert_time) VALUES (:from, :to, :content, 1, strftime('%s','now'));"); $st_dlr = $db->prepare("INSERT INTO dlrs (message_id, dlr_id, time_sent) VALUES (:message_id, :dlr_id, strftime('%s','now'));"); // Send messages and show responses foreach ($messages as $key => $message) { $result = $Messente->send_sms($message); // Check if we successfully sent the SMS to Messente if (!$result['error'] && $result['message_id']) { // Successful request echo "Successful API call to send SMS:<br/>\n"; var_dump($result); try { $db->beginTransaction(); $st_message->execute(array(':from' => $message['from'], ':to' => $message['to'], ':content' => $message['content'])); $st_dlr->execute(array(':message_id' => $db->lastInsertId(), ':dlr_id' => $result['message_id'])); $db->commit(); } catch (PDOExecption $e) { echo "Failed to save message to database: " . $e->getMessage() . "<br/>\n"; $db->rollBack(); } } else {
$retry_queue = array(); // Initialize Messente API // No E-mail is sent when debug mode is on. Disable debug mode for live release. $preferences = array('username' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 'password' => 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy', 'debug' => true, 'error_email' => getenv("SERVER_ADMIN")); $Messente = new Messente($preferences); $st_message_sent = $db->prepare("UPDATE messages SET sent = 1 WHERE id = :message_id"); $st_dlr = $db->prepare("INSERT INTO dlrs (message_id, dlr_id, time_sent) VALUES (:message_id, :dlr_id, strftime('%s','now'));"); $st_dlr_failed = $db->prepare("INSERT INTO dlrs (message_id, status, err, time_dlr, time_sent) VALUES (:message_id, :status, :err, strftime('%s','now'), strftime('%s','now'));"); while (true) { echo "Selecting messages to send... "; $st_messages = $db->prepare("SELECT id, content, recipient, sender_id FROM messages WHERE sent = 0"); $st_messages->execute(); echo "found " . $st_messages->rowCount() . " SMS to send<br/>\n"; // Send messages and show responses while ($message = $st_messages->fetch(PDO::FETCH_ASSOC)) { $result = $Messente->send_sms(array('from' => $message['sender_id'], 'to' => $message['recipient'], 'content' => $message['content'])); // Check if we successfully sent the SMS to Messente if (!$result['error'] && $result['message_id']) { // Successful request echo "Successful API call to send SMS:<br/>\n"; var_dump($result); $st_message_sent->execute(array(':message_id' => $message['id'])); $st_dlr->execute(array(':message_id' => $message['id'], ':dlr_id' => $result['message_id'])); // Check if it was a temporary error } elseif ($result['error'] && substr($result['error_code'], 0, 6) == 'FAILED') { // Keep count of failed retries if (isset($retry_queue[$message['id']])) { $retry_queue[$message['id']]++; } else { $retry_queue[$message['id']] = 1; }