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

1.0.0 2026-01-24 11:41 UTC

This package is auto-updated.

Last update: 2026-01-24 11:43:24 UTC


README

License: MIT

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 credentials
  • environment($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 channels
  • sendBulkMessage($messages, $globalMessage = null) - Send bulk messages (channels in each message)

Easy Data Retrieval

  • getBalance($channels = '*') - Get balance
  • getCampaign($campaignKey, $page = 1, $perPage = 20, $showMessage = false) - Get campaign data
  • getMessagesByIdentity($identityKeys, $campaignKey = null, $page = 1, $perPage = 20, $showMessage = false) - Get messages by keys
  • searchMessages($filters = [], $page = 1, $perPage = 20, $showMessage = false) - Search messages
  • getTelegramSubscribers($page = 1, $perPage = 20) - Get Telegram subscribers
  • getReport($dateRange = null) - Get status report
  • resendMessages($filters = []) - Resend messages

Error Handling & Rejected Messages

  • getErrors() - Get last errors
  • hasErrors() - Check if last request had errors
  • isSuccess($response) - Check if response was successful
  • getRejectedMessages($response) - Get rejected messages from response
  • hasRejectedMessages($response) - Check if response has rejected messages
  • clearErrors() - 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