eduplus / smspipe
Eduplus Sms Pipe SDK for PHP.
Installs: 3
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/eduplus/smspipe
Requires
- php: >=7.4
- guzzlehttp/guzzle: ^7.0
This package is auto-updated.
Last update: 2026-01-24 11:43:24 UTC
README
EduplusSmsPipe is a developer-friendly PHP SDK for integrating with the Eduplus SMS Pipeline API. Simple, chainable methods make sending SMS messages and managing campaigns effortless.
Installation
Install via Composer:
composer require eduplus/smspipe
Quick Start - Super Simple!
<?php use Eduplus\SmsPipe; // Send message with method chaining - One line! $response = SmsPipe::credentials($apiKey, $clientSecret) ->environment(SmsPipe::PRODUCTION) ->skipRejected(true) ->sendMessage('USER_001', 'Hello World!', false, [ 'sms_channel' => ['phone' => '01700000000'] ]); if ($response) { echo "Message sent! Campaign: " . $response['campaign']; }
Developer-Friendly Examples
Simple Message Sending
// Send to any channel SmsPipe::credentials($apiKey, $clientSecret) ->sendMessage('USER_001', 'Hello!', false, [ 'sms_channel' => ['phone' => '01700000000'] ]); // Send to multiple channels SmsPipe::credentials($apiKey, $clientSecret) ->sendMessage('USER_001', 'Hello!', false, [ 'sms_channel' => ['phone' => '01700000000'], 'telegram_channel' => ['chat_id' => '123456789'] ]);
Bulk Messages - Super Easy
// Bulk messages with channels included in each message $messages = [ [ 'identity_key' => 'USER_001', 'channels' => ['sms_channel' => ['phone' => '01700000001']], 'is_unicode' => 'no' ], [ 'identity_key' => 'USER_002', 'channels' => ['telegram_channel' => ['chat_id' => '123456789']], 'is_unicode' => 'no' ], [ 'identity_key' => 'USER_003', 'channels' => ['sms_channel' => ['phone' => '01700000003']], 'is_unicode' => 'no' ] ]; SmsPipe::credentials($apiKey, $clientSecret) ->environment(SmsPipe::PRODUCTION) ->skipRejected(true) ->sendBulkMessage($messages, 'This message goes to everyone!');
Individual Messages in Bulk
$messages = [ [ 'identity_key' => 'USER_001', 'message' => 'Hello User 1!', 'is_unicode' => 'no', 'channels' => ['sms_channel' => ['phone' => '01700000001']] ], [ 'identity_key' => 'USER_002', 'message' => 'Hello User 2!', 'is_unicode' => 'no', 'channels' => ['telegram_channel' => ['chat_id' => '123456789']] ] ]; SmsPipe::credentials($apiKey, $clientSecret) ->environment(SmsPipe::DEVELOPMENT) ->sendBulkMessage($messages);
Check Balance
$sms = SmsPipe::credentials($apiKey, $clientSecret); $balance = $sms->getBalance(); foreach ($balance['balance'] as $channel => $amount) { echo "$channel: $amount\n"; }
Get Campaign Data
$sms = SmsPipe::credentials($apiKey, $clientSecret); $campaign = $sms->getCampaign('campaign_key_123', 1, 20, true); echo "Total messages: " . $campaign['total'];
Search Messages
$sms = SmsPipe::credentials($apiKey, $clientSecret); $messages = $sms->searchMessages([ 'status' => ['sent', 'pending'], 'global_keyword' => 'Hello' ], 1, 10, true);
Get Messages by Identity Keys
$sms = SmsPipe::credentials($apiKey, $clientSecret); $messages = $sms->getMessages(['USER_001', 'USER_002']);
Get Status Report
$sms = SmsPipe::credentials($apiKey, $clientSecret); $report = $sms->getReport([ date('Y-m-d', strtotime('-7 days')), date('Y-m-d') ]); $data = $report['data']; echo "Total: {$data['total']}, Sent: {$data['sent']}, Failed: {$data['failed']}";
Resend Failed Messages
$sms = SmsPipe::credentials($apiKey, $clientSecret); $resend = $sms->resendMessages(['status' => ['failed']]);
API Methods - Clean & Simple
Chainable Configuration
credentials($apiKey, $clientSecret, $baseUri = null)- Initialize with credentialsenvironment($env)- Set environment (SmsPipe::PRODUCTION or SmsPipe::DEVELOPMENT)skipRejected($skip = true)- Skip rejected messages
Simple Sending Methods
sendMessage($identityKey, $message, $isUnicode, $channels)- Send single message to any channelssendBulkMessage($messages, $globalMessage = null)- Send bulk messages (channels in each message)
Easy Data Retrieval
getBalance($channels = '*')- Get balancegetCampaign($campaignKey, $page = 1, $perPage = 20, $showMessage = false)- Get campaign datagetMessagesByIdentity($identityKeys, $campaignKey = null, $page = 1, $perPage = 20, $showMessage = false)- Get messages by keyssearchMessages($filters = [], $page = 1, $perPage = 20, $showMessage = false)- Search messagesgetTelegramSubscribers($page = 1, $perPage = 20)- Get Telegram subscribersgetReport($dateRange = null)- Get status reportresendMessages($filters = [])- Resend messages
Error Handling & Rejected Messages
getErrors()- Get last errorshasErrors()- Check if last request had errorsisSuccess($response)- Check if response was successfulgetRejectedMessages($response)- Get rejected messages from responsehasRejectedMessages($response)- Check if response has rejected messagesclearErrors()- Clear error array
Environment Constants
SmsPipe::DEVELOPMENT // For testing - messages validated but not sent SmsPipe::PRODUCTION // For live sending
Error Handling & Rejected Messages
The SDK automatically adds rejected messages to the error list for easy access:
$sms = SmsPipe::credentials($apiKey, $clientSecret); $response = $sms->environment(SmsPipe::PRODUCTION) ->skipRejected(false) ->sendBulkMessage($messages, 'Global message'); if ($sms->isSuccess($response)) { echo "Messages sent! Campaign: " . $response['campaign']; } else { echo "Request failed\n"; } // All errors including rejected messages in one place if ($sms->hasErrors()) { echo "Issues found:\n"; foreach ($sms->getErrors() as $error) { echo "- $error\n"; } } // You can still access rejected messages separately if needed if ($response && $sms->hasRejectedMessages($response)) { $rejectedCount = count($sms->getRejectedMessages($response)); echo "Total rejected messages: $rejectedCount\n"; }
Simple Error Handling
$response = SmsPipe::credentials($apiKey, $clientSecret) ->sendMessage('USER_001', 'Hello!', [ 'sms_channel' => ['phone' => '01700000000'] ]); // Just check for any errors (includes rejected messages) if ($response && !$response->hasErrors()) { echo "Success!"; } else { foreach ($response->getErrors() as $error) { echo "Issue: $error\n"; } }
Skip Rejected Messages Control
// Skip rejected messages (continue processing) SmsPipe::credentials($apiKey, $clientSecret) ->skipRejected(true) // Continue even with rejections ->sendBulkMessage($messages); // Don't skip rejected messages (fail if any rejections) SmsPipe::credentials($apiKey, $clientSecret) ->skipRejected(false) // Fail entire request if rejections exist ->sendBulkMessage($messages);
Requirements
- PHP 7.4+
- guzzlehttp/guzzle ^7.0
Author
Md Mojahedul Islam
Email: dev.mojahedul@gmail.com
Website: https://md-mojahed.github.io
License
MIT License