Viewing file: SmppBuilder.php (2.6 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\SmsProvider; use App\SmsProvider\smpp\SMPP; use App\SmsProvider\smpp\SmppClient; use App\SmsProvider\smpp\SocketTransport; use Illuminate\Support\Facades\Log;
class SmppBuilder {
private $from_number; private $message; private $send_fail=[]; private $message_log; private $queue; private $sms_type; /** * @var mixed */ private $gateway;
public function __construct($credentials) { $this->gateway=$credentials; }
public function setType($type){ $this->sms_type=$type; return $this; } public function setMessage($message){ $this->message=$message; return $this; }
public function sendMessage() {
$gateway=$this->gateway; $parameters = []; if ($gateway->others) { foreach (json_decode($gateway->inputs) as $key => $gt) { $parameters[$key] = $gt; } }
if(!isset($parameters['smpp_ip_address']) || !isset($parameters['smpp_username']) || !isset($parameters['smpp_password']) || !isset($parameters['smpp_port'])){ throw new \Exception('Provider Not Configured'); exit(); }
$from=$this->message->from; $to=$this->message->to; $body=$this->message->body;
$transport = new SocketTransport(array($parameters['smpp_ip_address']), $parameters['smpp_port']); $transport->setRecvTimeout(30000); $smpp = new SmppClient($transport);
$smpp->debug = false; $transport->debug = false;
$transport->open(); $smpp->bindTransmitter($parameters['smpp_username'], $parameters['smpp_password']);
SmppClient::$sms_null_terminate_octetstrings = false; SmppClient::$csms_method = SmppClient::CSMS_PAYLOAD; SmppClient::$sms_registered_delivery_flag = Smpp::REG_DELIVERY_SMSC_BOTH;
$encodedMessage = \GsmEncoder::utf8_to_gsm0338($body);
if (ctype_digit($from) && strlen($from) <= 8) { $from = new \SmppAddress($from, \SMPP::TON_NETWORKSPECIFIC); } elseif (ctype_digit($from) && (strlen($from) <= 15 && strlen($from) >= 10)) { $from = new \SmppAddress($from, \SMPP::TON_INTERNATIONAL, \SMPP::NPI_E164); } else { $from = new \SmppAddress($from, \SMPP::TON_ALPHANUMERIC); }
$to = new \SmppAddress($to, \SMPP::TON_INTERNATIONAL, \SMPP::NPI_E164);
// Send $tags = ""; $output = $smpp->sendSMS($from, $to, $encodedMessage, $tags); Log::info($output); // Close connection $smpp->close(); } }
|