From 7a885e42c88fe6841d34731df63bb877614548ff Mon Sep 17 00:00:00 2001 From: Ariful Islam Date: Sat, 18 Feb 2023 20:02:39 +0600 Subject: [PATCH] Newly Gateway TruboSms Added --- readme.md | 1 + src/Config/sms.php | 6 +++ src/Provider/TruboSms.php | 81 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 src/Provider/TruboSms.php diff --git a/readme.md b/readme.md index 1a6bb95..9546dcd 100644 --- a/readme.md +++ b/readme.md @@ -192,6 +192,7 @@ $status = $sender->send(); | SmartLabSMS | user, password, sender | Done | - | | Sslsms | api_token, sid, csms_id | Done | - | | Tense | user, password, campaign, masking | Done | - | +| Trubosms | api_token, sender_id | Done | - | | TwentyFourSmsBD | apiKey, sender_id | Done | - | | Viatech | api_key, mask | Done | - | diff --git a/src/Config/sms.php b/src/Config/sms.php index f96e4cf..70f43f8 100644 --- a/src/Config/sms.php +++ b/src/Config/sms.php @@ -44,6 +44,7 @@ use Xenon\LaravelBDSms\Provider\SMSNoc; use Xenon\LaravelBDSms\Provider\Ssl; use Xenon\LaravelBDSms\Provider\Tense; +use Xenon\LaravelBDSms\Provider\TruboSms; use Xenon\LaravelBDSms\Provider\TwentyFourSmsBD; use Xenon\LaravelBDSms\Provider\Viatech; @@ -207,6 +208,11 @@ 'campaign' => env('SMS_TENSE_CAMPAIGN', ''), 'masking' => env('SMS_TENSE_MASKING', ''), ], + TruboSms::class => [ + 'sender_id' => env('SMS_TRUBOSMS_SENDER_ID', ''), + 'api_token' => env('SMS_TRUBOSMS_API_TOKEN', ''), + 'type' => env('SMS_TRUBOSMS_TYPE', 'string'), + ], TwentyFourSmsBD::class => [ 'apiKey' => env('SMS_TWENTYFOURSMSBD_APIKEY', ''), 'sender_id' => env('SMS_TWENTYFOURSMSBD_SENDER_ID', ''), diff --git a/src/Provider/TruboSms.php b/src/Provider/TruboSms.php new file mode 100644 index 0000000..4c50e9e --- /dev/null +++ b/src/Provider/TruboSms.php @@ -0,0 +1,81 @@ +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(); + + $query = [ + 'recipient' => '+88'.$number, + 'sender_id' => $config['sender_id'], + 'message' => $text, + ]; + + $headers = [ + 'Authorization' => 'Bearer ' . $config['api_token'], + 'Content-Type' => 'application/json' + ]; + + $requestObject = new Request('https://panel.trubosms.com/api/v3/sms/send', $query, $queue); + $requestObject->setHeaders($headers)->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('api_token', $this->senderObject->getConfig())) { + throw new ParameterException('api_token is absent in configuration'); + } + + if (!array_key_exists('sender_id', $this->senderObject->getConfig())) { + throw new ParameterException('sender_id key is absent in configuration'); + } + } + +}