Hey there, fellow code wranglers! Ready to add some texting superpowers to your PHP project? Let's dive into integrating the EZ Texting API and make your app the talk of the town (or at least the dev team).
EZ Texting's API is your ticket to programmatically sending SMS messages, managing contacts, and more. Whether you're building a notification system or a full-blown marketing platform, this guide will get you up and running in no time.
Before we jump in, make sure you've got:
First things first, let's get our project set up:
mkdir ez-texting-integration cd ez-texting-integration composer init composer require guzzlehttp/guzzle
Now, create a config.php
file to store your API credentials:
<?php return [ 'api_key' => 'your_api_key_here', 'username' => 'your_username_here', 'password' => 'your_password_here' ];
Let's create our main EZTextingClient.php
file:
<?php require 'vendor/autoload.php'; use GuzzleHttp\Client; class EZTextingClient { private $client; private $config; public function __construct() { $this->config = require 'config.php'; $this->client = new Client([ 'base_uri' => 'https://api.eztexting.com/v4/', 'auth' => [$this->config['username'], $this->config['password']], 'headers' => ['Content-Type' => 'application/json'] ]); } // We'll add more methods here soon! }
Now, let's add some meat to our client class:
public function sendSMS($phoneNumber, $message) { $response = $this->client->post('sms', [ 'json' => [ 'phoneNumber' => $phoneNumber, 'message' => $message, 'messageType' => 'TEXT' ] ]); return json_decode($response->getBody(), true); } public function sendBulkSMS($phoneNumbers, $message) { $response = $this->client->post('sms/bulk', [ 'json' => [ 'phoneNumbers' => $phoneNumbers, 'message' => $message, 'messageType' => 'TEXT' ] ]); return json_decode($response->getBody(), true); } public function getMessageStatus($messageId) { $response = $this->client->get("sms/{$messageId}"); return json_decode($response->getBody(), true); }
Let's spice things up with some advanced features:
public function scheduleMessage($phoneNumber, $message, $sendAt) { $response = $this->client->post('sms', [ 'json' => [ 'phoneNumber' => $phoneNumber, 'message' => $message, 'messageType' => 'TEXT', 'sendAt' => $sendAt ] ]); return json_decode($response->getBody(), true); } public function createContactList($name) { $response = $this->client->post('groups', [ 'json' => ['name' => $name] ]); return json_decode($response->getBody(), true); } public function handleWebhook() { $payload = json_decode(file_get_contents('php://input'), true); // Process the webhook payload here return $payload; }
Don't forget to wrap your API calls in try-catch blocks:
try { $result = $client->sendSMS('1234567890', 'Hello, World!'); } catch (\GuzzleHttp\Exception\RequestException $e) { // Handle the error error_log($e->getMessage()); }
And remember, EZ Texting has rate limits, so be nice to their servers!
Here's a quick test script to make sure everything's working:
<?php require 'EZTextingClient.php'; $client = new EZTextingClient(); // Test sending an SMS $result = $client->sendSMS('1234567890', 'Test message from PHP integration'); print_r($result); // Add more tests for other methods
For bulk operations, consider using asynchronous requests:
use GuzzleHttp\Pool; use GuzzleHttp\Psr7\Request; // ... in your EZTextingClient class public function sendBulkSMSAsync($messages) { $requests = function ($messages) { foreach ($messages as $message) { yield new Request('POST', 'sms', ['json' => $message]); } }; $pool = new Pool($this->client, $requests($messages), [ 'concurrency' => 5, 'fulfilled' => function ($response, $index) { // Handle successful request }, 'rejected' => function ($reason, $index) { // Handle failed request }, ]); $promise = $pool->promise(); $promise->wait(); }
And there you have it! You've just built a robust EZ Texting API integration in PHP. From basic SMS sending to advanced features like scheduling and bulk operations, you're now equipped to add powerful texting capabilities to your applications.
Remember, this is just the beginning. The EZ Texting API has even more features to explore, so don't be afraid to dive deeper into their documentation and experiment with new functionalities.
Happy coding, and may your messages always deliver on time!