Skip to content

Commit

Permalink
Merge pull request #71 from arif98741/dev
Browse files Browse the repository at this point in the history
SongBird Sms Gateway Added
  • Loading branch information
arif98741 committed Apr 10, 2024
2 parents 93470b0 + 821c2ef commit e9da777
Show file tree
Hide file tree
Showing 3 changed files with 98 additions and 1 deletion.
3 changes: 2 additions & 1 deletion readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -228,10 +228,11 @@ echo $status = $sender->send();
| RedmoITSms | api_token, sender_id | - | Support closed | - |
| SmartLabSMS | user, password, sender | - | Done | - | - |
| SmsinBD | api_token, senderid | - | Done | | - |
| SMS.net.bd | api_key | - | Done | | - |
| SMS.net.bd | api_key | - | Done | | - |
| SmsQ | sender_id, client_id, api_key | - | Done | | - |
| SMSNet24 | user_id, user_password, route_id(optional), sms_type_id(optional) | - | Done | - | |
| SmsNoc | sender_id, bearer_token | - | Done | - | |
| SongBird | apikey, secretkey, callerID | - | Done | - | |
| Sslsms | api_token, sid, csms_id | Yes | Done | - | - |
| Tense | user, password, campaign, masking | - | Done | - | - |
| TwentyFourSmsBD | apiKey, sender_id | - | Done | - | - |
Expand Down
6 changes: 6 additions & 0 deletions src/Config/sms.php
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
use Xenon\LaravelBDSms\Provider\SmsNetBD;
use Xenon\LaravelBDSms\Provider\SMSNoc;
use Xenon\LaravelBDSms\Provider\SmsQ;
use Xenon\LaravelBDSms\Provider\SongBird;
use Xenon\LaravelBDSms\Provider\Ssl;
use Xenon\LaravelBDSms\Provider\Tense;
use Xenon\LaravelBDSms\Provider\TruboSms;
Expand Down Expand Up @@ -249,6 +250,11 @@
'api_key' => env('SMS_SMSQ_API_KEY', ''),
'client_id' => env('SMS_SMSQ_CLIENT_ID', ''),
],
SongBird::class => [
'apikey' => env('SMS_SONGBIRD_API_KEY', ''),
'secretkey' => env('SMS_SONGBIRD_SECRET_KEY', ''),
'callerID' => env('SMS_SONGBIRD_CALLER_ID', ''),
],
Ssl::class => [
'api_token' => env('SMS_SSL_API_TOKEN', ''),
'sid' => env('SMS_SSL_SID', ''),
Expand Down
90 changes: 90 additions & 0 deletions src/Provider/SongBird.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
<?php
/*
* Last Modified: 04/10/24, 01:06 PM
* Copyright (c) 2024
* -created by Ariful Islam
* -All Rights Preserved By
* -If you have any query then knock me at
* arif98741@gmail.com
* See my profile @ https://github.com/arif98741
*/

namespace Xenon\LaravelBDSms\Provider;

use Xenon\LaravelBDSms\Handler\ParameterException;
use Xenon\LaravelBDSms\Handler\RenderException;
use Xenon\LaravelBDSms\Request;
use Xenon\LaravelBDSms\Sender;

/**
* Songbird Sms Gateway
*/
class SongBird extends AbstractProvider
{
private string $apiEndpoint = 'http://103.53.84.15:8746/sendtext';

/**
* SongBird constructor.
* @param Sender $sender
*/
public function __construct(Sender $sender)
{
$this->senderObject = $sender;
}

/**
* Send Request To Api and Send Message
* @throws RenderException
*/
public function sendRequest()
{
$number = $this->senderObject->getMobile();
$text = $this->senderObject->getMessage();
$config = $this->senderObject->getConfig();
$queue = $this->senderObject->getQueue();
$queueName = $this->senderObject->getQueueName();
$tries = $this->senderObject->getTries();
$backoff = $this->senderObject->getBackoff();


$formParams = [
'apikey' => $config['apikey'],
'secretkey' => $config['secretkey'],
'callerID' => $config['callerID'],
'toUser' => $number,
'messageContent' => $text,
];

$requestObject = new Request($this->apiEndpoint, $formParams, $queue, [], $queueName, $tries, $backoff);
$requestObject->setContentTypeJson(true);
$response = $requestObject->post();
if ($queue) {
return true;
}

$body = $response->getBody();
$smsResult = $body->getContents();

$data['number'] = $number;
$data['message'] = $text;
return $this->generateReport($smsResult, $data)->getContent();
}

/**
* @throws ParameterException
*/
public function errorException()
{
if (!array_key_exists('apikey', $this->senderObject->getConfig())) {
throw new ParameterException('apikey key is absent in configuration');
}

if (!array_key_exists('secretkey', $this->senderObject->getConfig())) {
throw new ParameterException('secretkey key is absent in configuration');
}

if (!array_key_exists('callerID', $this->senderObject->getConfig())) {
throw new ParameterException('callerID key is absent in configuration.');
}
}
}

0 comments on commit e9da777

Please sign in to comment.