266 lines
9.9 KiB
PHP
266 lines
9.9 KiB
PHP
<?php
|
|
|
|
namespace App\Utility;
|
|
|
|
use App\Models\OtpConfiguration;
|
|
use App\Utility\MimoUtility;
|
|
use Twilio\Rest\Client;
|
|
|
|
class SendSMSUtility
|
|
{
|
|
public static function sendSMS($to, $from, $text, $template_id)
|
|
{
|
|
if (OtpConfiguration::where('type', 'nexmo')->first()->value == 1) {
|
|
$api_key = env("NEXMO_KEY"); //put ssl provided api_token here
|
|
$api_secret = env("NEXMO_SECRET"); // put ssl provided sid here
|
|
|
|
$params = [
|
|
"api_key" => $api_key,
|
|
"api_secret" => $api_secret,
|
|
"from" => $from,
|
|
"text" => $text,
|
|
"to" => $to
|
|
];
|
|
|
|
$url = "https://rest.nexmo.com/sms/json";
|
|
$params = json_encode($params);
|
|
|
|
$ch = curl_init(); // Initialize cURL
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
|
'Content-Type: application/json',
|
|
'Content-Length: ' . strlen($params),
|
|
'accept:application/json'
|
|
));
|
|
$response = curl_exec($ch);
|
|
curl_close($ch);
|
|
|
|
return $response;
|
|
} elseif (OtpConfiguration::where('type', 'twillo')->first()->value == 1) {
|
|
$sid = env("TWILIO_SID"); // Your Account SID from www.twilio.com/console
|
|
$token = env("TWILIO_AUTH_TOKEN"); // Your Auth Token from www.twilio.com/console
|
|
$type = env("TWILLO_TYPE"); // sms type
|
|
|
|
$client = new Client($sid, $token);
|
|
try {
|
|
$client->messages->create(
|
|
$type == 1? $to : "whatsapp:".$to, // Text this number
|
|
array(
|
|
'from' => $type == 1? env('VALID_TWILLO_NUMBER') : "whatsapp:".env('VALID_TWILLO_NUMBER'), // From a valid Twilio number
|
|
'body' => $text
|
|
)
|
|
);
|
|
} catch (\Exception $e) {
|
|
}
|
|
|
|
} elseif (OtpConfiguration::where('type', 'ssl_wireless')->first()->value == 1) {
|
|
$token = env("SSL_SMS_API_TOKEN"); //put ssl provided api_token here
|
|
$sid = env("SSL_SMS_SID"); // put ssl provided sid here
|
|
|
|
$params = [
|
|
"api_token" => $token,
|
|
"sid" => $sid,
|
|
"msisdn" => $to,
|
|
"sms" => $text,
|
|
"csms_id" => date('dmYhhmi') . rand(10000, 99999)
|
|
];
|
|
|
|
$url = env("SSL_SMS_URL");
|
|
$params = json_encode($params);
|
|
|
|
$ch = curl_init(); // Initialize cURL
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
|
'Content-Type: application/json',
|
|
'Content-Length: ' . strlen($params),
|
|
'accept:application/json'
|
|
));
|
|
|
|
$response = curl_exec($ch);
|
|
|
|
curl_close($ch);
|
|
|
|
return $response;
|
|
} elseif (OtpConfiguration::where('type', 'fast2sms')->first()->value == 1) {
|
|
|
|
if (strpos($to, '+91') !== false) {
|
|
$to = substr($to, 3);
|
|
}
|
|
|
|
if (env("ROUTE") == 'dlt_manual') {
|
|
$fields = array(
|
|
"sender_id" => env("SENDER_ID"),
|
|
"message" => $text,
|
|
"template_id" => $template_id,
|
|
"entity_id" => env("ENTITY_ID"),
|
|
"language" => env("LANGUAGE"),
|
|
"route" => env("ROUTE"),
|
|
"numbers" => $to,
|
|
);
|
|
} else {
|
|
$fields = array(
|
|
"sender_id" => env("SENDER_ID"),
|
|
"message" => $text,
|
|
"language" => env("LANGUAGE"),
|
|
"route" => env("ROUTE"),
|
|
"numbers" => $to,
|
|
);
|
|
}
|
|
|
|
|
|
$auth_key = env('AUTH_KEY');
|
|
|
|
$curl = curl_init();
|
|
|
|
curl_setopt_array($curl, array(
|
|
CURLOPT_URL => "https://www.fast2sms.com/dev/bulkV2",
|
|
CURLOPT_RETURNTRANSFER => true,
|
|
CURLOPT_ENCODING => "",
|
|
CURLOPT_MAXREDIRS => 10,
|
|
CURLOPT_TIMEOUT => 30,
|
|
CURLOPT_SSL_VERIFYHOST => 0,
|
|
CURLOPT_SSL_VERIFYPEER => 0,
|
|
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
|
|
CURLOPT_CUSTOMREQUEST => "POST",
|
|
CURLOPT_POSTFIELDS => json_encode($fields),
|
|
CURLOPT_HTTPHEADER => array(
|
|
"authorization: $auth_key",
|
|
"accept: */*",
|
|
"cache-control: no-cache",
|
|
"content-type: application/json"
|
|
),
|
|
));
|
|
|
|
$response = curl_exec($curl);
|
|
$err = curl_error($curl);
|
|
|
|
curl_close($curl);
|
|
|
|
return $response;
|
|
} elseif (OtpConfiguration::where('type', 'mimo')->first()->value == 1) {
|
|
$token = MimoUtility::getToken();
|
|
|
|
MimoUtility::sendMessage($text, $to, $token);
|
|
MimoUtility::logout($token);
|
|
} elseif (OtpConfiguration::where('type', 'mimsms')->first()->value == 1) {
|
|
$url = env('MIM_BASE_URL') . "/smsapi";
|
|
$data = [
|
|
"api_key" => env('MIM_API_KEY'),
|
|
"type" => "text",
|
|
"contacts" => $to,
|
|
"senderid" => env('MIM_SENDER_ID'),
|
|
"msg" => $text,
|
|
];
|
|
$ch = curl_init();
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
curl_setopt($ch, CURLOPT_POST, 1);
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
|
$response = curl_exec($ch);
|
|
curl_close($ch);
|
|
return $response;
|
|
} elseif (OtpConfiguration::where('type', 'msegat')->first()->value == 1) {
|
|
$url = "https://www.msegat.com/gw/sendsms.php";
|
|
$data = [
|
|
"apiKey" => env('MSEGAT_API_KEY'),
|
|
"numbers" => $to,
|
|
"userName" => env('MSEGAT_USERNAME'),
|
|
"userSender" => env('MSEGAT_USER_SENDER'),
|
|
"msg" => $text
|
|
];
|
|
$ch = curl_init();
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
curl_setopt($ch, CURLOPT_POST, 1);
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
|
$response = curl_exec($ch);
|
|
curl_close($ch);
|
|
return $response;
|
|
} elseif (OtpConfiguration::where('type', 'sparrow')->first()->value == 1) {
|
|
$url = "http://api.sparrowsms.com/v2/sms/";
|
|
|
|
$args = http_build_query(array(
|
|
"token" => env('SPARROW_TOKEN'),
|
|
"from" => env('MESSGAE_FROM'),
|
|
"to" => $to,
|
|
"text" => $text
|
|
));
|
|
# Make the call using API.
|
|
$ch = curl_init();
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
curl_setopt($ch, CURLOPT_POST, 1);
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
|
// Response
|
|
$response = curl_exec($ch);
|
|
curl_close($ch);
|
|
return $response;
|
|
} elseif (OtpConfiguration::where('type', 'zender')->first()->value == 1) {
|
|
if (empty(env('ZENDER_SERVICE')) || env('ZENDER_SERVICE') < 2) {
|
|
if (!empty(env('ZENDER_DEVICE'))) {
|
|
$mode = "devices";
|
|
} else {
|
|
$mode = "credits";
|
|
}
|
|
|
|
if ($mode == "devices") {
|
|
$params = [
|
|
"secret" => env('ZENDER_APIKEY'),
|
|
"mode" => "devices",
|
|
"device" => env('ZENDER_DEVICE'),
|
|
"phone" => $to,
|
|
"message" => $text,
|
|
"sim" => env('ZENDER_SIM') < 2 ? 1 : 2
|
|
];
|
|
} else {
|
|
$params = [
|
|
"secret" => env('ZENDER_APIKEY'),
|
|
"mode" => "credits",
|
|
"gateway" => env('ZENDER_GATEWAY'),
|
|
"phone" => $to,
|
|
"message" => $text
|
|
];
|
|
}
|
|
|
|
$apiurl = env('ZENDER_SITEURL') . "/api/send/sms";
|
|
} else {
|
|
$params = [
|
|
"secret" => env('ZENDER_APIKEY'),
|
|
"account" => env('ZENDER_WHATSAPP'),
|
|
"type" => "text",
|
|
"recipient" => $to,
|
|
"message" => $text
|
|
];
|
|
|
|
$apiurl = env('ZENDER_SITEURL') . "/api/send/whatsapp";
|
|
}
|
|
|
|
$args = http_build_query($params);
|
|
|
|
$ch = curl_init();
|
|
curl_setopt($ch, CURLOPT_URL, $apiurl);
|
|
curl_setopt($ch, CURLOPT_POST, 1);
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
|
// Response
|
|
$response = curl_exec($ch);
|
|
curl_close($ch);
|
|
|
|
return $response;
|
|
}
|
|
return true;
|
|
}
|
|
}
|