API Link
API URL (HTML Output): https://api.bdbulksms.net/api.php
Or,
API URL (JSON Output): https://api.bdbulksms.net/api.php?json
NON SSL Version: https এর পরিবর্তে যদি http ও ব্যবহার করতে পারবেন ।
Token Generate করুন :https://gwb.li/token Parameters: message, to, token
Request Method: POST or GET
অন্যান্য API Usages:
URL: https://api.bdbulksms.net/g_api.php (প্লেইন টেক্সট আউটপুট)
URL: https://api.bdbulksms.net/g_api.php?json (JSON আউটপুট)
ব্যালেন্স দেখতে: https://api.bdbulksms.net/g_api.php?token=yourtokencodehere&balance
ব্যালেন্স দেখতে (JSON Format): https://api.bdbulksms.net/g_api.php?token=yourtokencodehere&balance&json
SMS রেট দেখতে: https://api.bdbulksms.net/g_api.php?token=yourtokencodehere&rate
টোকেন থেকে মোট কতটি SMS পাঠানো হয়েছে দেখতে: https://api.bdbulksms.net/g_api.php?token=yourtokencodehere&tokensms
মূল অ্যাকাউন্ট থেকে মোট কতটি SMS পাঠানো হয়েছে দেখতে: https://api.bdbulksms.net/g_api.php?token=yourtokencodehere&totalsms
মূল অ্যাকাউন্ট থেকে Current Month এ কত SMS পাঠানো হয়েছে দেখতে: https://api.bdbulksms.net/g_api.php?token=yourtokencodehere&monthlysms
টোকেন থেকে Current Month এ কত SMS পাঠানো হয়েছে দেখতে: https://api.bdbulksms.net/g_api.php?token=yourtokencodehere&tokenmonthlysms
মূল অ্যাকাউন্ট থেকে XX Month এ কত SMS পাঠানো হয়েছে দেখতে (XX এর জায়গাতে মাস-বছর ( যেমন জানুয়ারী ২০২২ এর জন্য 01-2022) ফরম্যাটে মাস উল্ল্যেখ করতে হবে): https://api.bdbulksms.net/g_api.php?token=yourtokencodehere&monthlysms=11-2024
টোকেন থেকে XX Month এ কত SMS পাঠানো হয়েছে দেখতে (XX এর জায়গাতে মাস-বছর ( যেমন জানুয়ারী ২০২২ এর জন্য 01-2022) ফরম্যাটে মাস উল্ল্যেখ করতে হবে): https://api.bdbulksms.net/g_api.php?token=yourtokencodehere&tokenmonthlysms=11-2024
SMS এর মেয়াদ দেখতে: https://api.bdbulksms.net/g_api.php?token=yourtokencodehere&expiry
সব একত্রে: https://api.bdbulksms.net/g_api.php?token=yourtokencodehere&expiry&rate&tokensms&totalsms&monthlysms&tokenmonthlysms
সব একত্রে (json): https://api.bdbulksms.net/g_api.php?token=yourtokencodehere&expiry&rate&tokensms&totalsms&monthlysms&tokenmonthlysms&json
Demo Token: 1234567890123456789
Request Methods: POST (recommended) & GET
Parameters: to, message, token
গ্রিনওয়েব API কে GET and POST দুইভাবেই ব্যবহার করতে পারবেন ।
প্রথমে নিচের লিংকে গিয়ে Access Token Generate করুন ।
https://sms.greenweb.com.bd/index.php?ref=gen_token.php
আপনার অ্যাকাউন্ট না থাকলে টেস্টিং অথবা ইন্টিগ্রেশনের জন্য 1234567890123456789 ডেমো টোকেনটি ব্যবহার করুন। এটি ব্যবহার করলে SMS সেন্ড হবে না;তবে API রিসপন্স রিটার্ন করবে। যা দেখে ইন্টিগ্রেশনের কাজ করতে পারবেন। ইন্টিগ্রেশনের পরে অবশ্যই ডেমো টেকেনটি পরিবর্তন করে আসল টোকেন ব্যবহার করবেন ।
এরপর নিচের মত করে ফিল্ড পুরন করুন:
token = যে টোকেন জেনারেট করেছেন । to = যে নাম্বার গুলোতে SMS দিতে চান । নাম্বার অবশ্যই +8801xxxxxxxxx অথবা 01xxxxxxxxx এই ফরম্যাটের হতে হবে message = যা ম্যাসেজে দিতে চান ।
যেমন:
POST Method (form-urlencoded)
Get Method ব্যবহার করতে চাইলে অবশ্যই ম্যাসেজ URL ENCODE করে নিবেন । URL Encode করতে rawurlencode() ফাংশন ব্যবহার করুন যদি পিএইচপি স্ক্রিপ্ট হয় । যদি জাভাস্ক্রিপ্ট হয় তবে encodeURI() ফাংশন ব্যবহার করুন । আর html হলে স্পেসকে + দিয়ে রিপ্লেস করুন ।
JSON Data Format:
Default ভাবে আমাদের API প্লেইন টেক্সট রিসপন্স্ দেয় যা লাইন বাই লাইন সেপারেট থাকে । প্রতি লাইন কে আপনি array তে কনভার্ট করে সফল ম্যাসেজের জন্য Ok: অথবা ফেইল SMS এর জন্য Error: শব্দটির সাথে ম্যাচ করাতে পারবেন । যেমন: এখানে php তে প্রোসেস করে দেখানো হলো
Default HTML/Text Output নিচের মত ফরম্যাটে হবে :
Ok: SMS Sent Successfully To +8801749139144Error: +8801 Invalid Number !
Curl এক্সিকিউশনের পর $smsresult স্ট্রিং পাবেন । এবার এটাকে array তে কনভার্ট করবো :
$smsresultarray = preg_split('/\r\n|\r|\n|<[^>]*>/', $smsresult);
এবার array কে ল্যুপে নিবো
foreach($smsresultarray as $result) {
$status = mb_substr($result, 0, 2);
if ($status == 'Ok') {
//sms successfully sent do whatever you want
echo $result;
} else {
//failed to sent do whatever you want
echo $result;
}
}
ধরুন আপনি একটি ম্যাসেজ একটি নাম্বারে অথবা ঐ একটি ম্যাসেজই একাধিক নাম্বারে প্রেরন করতে চান । প্রথমে টোকেন জেনারেট করুন, এরপর নিচের কোডে token দিন, $message এ আপনার টেক্সট লিখুন এরপর $to তে নাম্বার দিন । একাধিক নাম্বার হলে অবশ্যই নাম্বার গুলো কমা সেপারেটেড হতে হবে ।
মূলত দুইটি ডেটা লাগবে আপনার সাইট থেকে আর একটি পাওয়া যাবে আমাদের কন্ট্রোল প্যানেল থেকে । প্রথমে আপনার সাইট থেকে $to (যাকে SMS দিতে চান) এবং ম্যাসেজে যা দিতে চান তা $message ভারিয়্যাবলে নিয়ে আসুন । এরপর টোকেন কোড আমাদের কন্ট্রোল প্যানেল থেকে জেনারেট করে নিন। এরপর সেন্ড এর ফাংশন ব্যবহার করুন (CURL) । $smsresult ভ্যারিয়েবলে সেন্ড করা ম্যাসেজের রেজাল্ট আসবে এটা চাইলে ডেটাবেজে সেভ কিংবা অন্য কাজে লাগাতে পারবেন ।
(One to one/One to many)
ডেটাবেজে/Loop এ নাম্বার আছে আর ঐসব এক বা একাধিক নাম্বারে একই লেখা প্রেরণ করতে চান । এ ক্ষেত্রে এই পদ্ধতি ব্যবহার করতে পারেন ।
<?php
//প্রথমে আপনার সুবিধে মত করে ডেটাবেজ/Loop হতে ডেটা নিন এখানে mysqli ব্যবহার করে mysql/mariadb ডেটাবেজ হতে ডেটা নিয়ে দেখানো হলো ।
$dblink = mysqli_connect("localhost", "dbusername", "dbpassword", "dbname");
/* If connection fails throw an error */
if (mysqli_connect_errno()) {
echo "Could not connect to database: Error: ".mysqli_connect_error();
exit();
}
$sqlquery = "SELECT number FROM table_name";
if ($result = mysqli_query($dblink, $sqlquery)) {
/* fetch associative array */
while ($row = mysqli_fetch_assoc($result)) { /////////while loop or foreach
$number = $row["number"];
$to = "$number,$to";
}
}
// আমরা $to তে সব নাম্বার কমা সেপারেট করা অবস্থায় পেয়েছি এবার SMS প্রেরন করুন
$token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$message = "Test SMS using API";
$url = "https://api.bdbulksms.net/api.php?json";
$data= array(
'to'=>"$to",
'message'=>"$message",
'token'=>"$token"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$smsresult = curl_exec($ch);
//Result
echo $smsresult;
//Error Display
echo curl_error($ch);
?>
(Many to Many)
ধরুন আপনার ডেটাবেজ অথবা অ্যাপ্লিকেশন অথবা যেকোনো ল্যুপ থেকে ভিন্ন ভিন্ন নাম্বারে ভিন্ন ভিন্ন SMS একই সময়ে একটি সিঙ্গেল রিকোয়েস্টের মাধ্যমে প্রেরন করতে চান
এর সুবিধা:
১. আপনার ওয়েব সার্ভারে খুব কম লোড দিবে
২. দ্রুত ডাইনামিক SMS সেন্ড করবে
৩. এক http রিকোয়েস্টে ডেটাবেজের সব SMS একসাথে পাঠানো যাবে
নোট: এই পদ্ধতিটি শুধুমাত্র একই সময়ে ভিন্ন ভিন্ন নাম্বারে একাধিক ম্যাসেজ প্রেরণ করলেই ব্যবহার করবেন। একই লেখা একাধিক নাম্বার হলে one to many পদ্ধতি ব্যবহার করুন।
Token Generate করুন : https://sms.greenweb.com.bd/index.php?ref=gen_token.php
Json Format (এখানে smsdata তে নাম্বার ও ম্যাসেজ ল্যুপে থাকবে এবং token এ SMS প্যানেল থেকে token তৈরি করে দিতে হবে।:
আপনি সরাসরি উপরের ফরম্যাটে Many to Many ডেটা সেন্ড করতে পারবেন ।
From Database/Any Loop using PHP mysqli:
<?php
$json_smsdata = [];
// প্রথমে আপনার সুবিধে মত করে loop এ ডেটাবেজ হতে ডেটা নিন অথবা অ্যাপ্লিকেশনের ইনপুট থেকে ডেটা নিন । ডেটাটি এরপর loop ব্যবহার করে ফরম্যাট করুন: এখানে while loop দেখানো হয়েছে আপনারা foreach loop ব্যবহার করতে পারেন ।
$dblink = mysqli_connect("localhost", "dbusername", "dbpassword", "dbname");
/* If connection fails throw an error */
if (mysqli_connect_errno()) {
echo "Could not connect to database: Error: ".mysqli_connect_error();
exit();
}
//চাইলে LIMIT দিয়ে ৫০০ SMS একসাথে ডেটাবেজ থেকে যাবে এমন লিমিট করে নিতে পারেন ।
$sqlquery = "SELECT name,number FROM table_name";
if ($result = mysqli_query($dblink, $sqlquery)) {
/* fetch associative array */
while ($row = mysqli_fetch_assoc($result)) {
$name = $row["name"];
$number = $row["number"];
// আমরা উপরে loop করে ডেটাবেজ থেকে name এবং number কলামের ডেটা নিলাম আপনি ডেটাবেজের পরিবর্তে যেকোনো ল্যুপ থেকে ডেটা নিতে পারবেন, এখন dynamic ম্যাসেজ লিখুন
$message = "Hi $name,
your message
Regards
bdbulksms.net";
$json_smsdata[]= ['to'=>$number,'message'=>$message];
}
}
$data = json_encode([
'token' => 'Replace_it_with_your_token',
'smsdata' => $json_smsdata,
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
// $data হলো আমাদের কাংখিত format করা ডেটা যা এখন সেন্ড করা হবে ।
$url = "https://api.bdbulksms.net/api.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$smsresult = curl_exec($ch);
//Result
echo $smsresult;
//Error Display
echo curl_error($ch);
?>
অথবা যদি আপনি JSON data প্রেরন করতে না পারেন তবে নিচের পদ্ধতিতেও Database or any Loop থেকে Many to Many SMS প্রেরণ করতে পারবেন।
Form-urlencoded Format:
(এক্ষেত্রে smsdata এবং token এই দুইটি প্যারামিটার পোস্ট ম্যাথেডে পাঠাতে হবে, ম্যাসেজটি অবশ্যই urlencode করতে হবে ।
Test : https://reqbin.com/fhtsgkur
Parameters:
token = Generate from above link
smsdata=[{"to":"+8801xxxxxxxxx","message":"firstsmstest"},{"to":"018xxxxxxxxxxx","message":"secondmesssagehere"}]
অনেকের অ্যাপ্লিকেশন json output দেয় না, অথবা json এর পরবর্তি form-urlencoded এ ডেটা সেন্ড করতে চান এ ক্ষেত্রে ফরম্যাট এর কাজটা আমরা programatically করবো । এর ফলে এটি শুধু যে ডেটাবেজ এ কাজ করবে তা না সকল ধরনের লু্পে কাজ করবে ।
এভাবে আপনি কয়েক সেকেন্ড হাজার হাজার ডাইনামিক SMS একসাথে প্রসেস করে আমাদের সার্ভারে প্রেরন করতে পারবেন । এতে আপনার ওয়েব সার্ভারে কম লোড পরবে ।
<?php
$json_smsdata = [];
// প্রথমে আপনার সুবিধে মত করে loop এ ডেটাবেজ হতে ডেটা নিন অথবা অ্যাপ্লিকেশনের ইনপুট থেকে ডেটা নিন । ডেটাটি এরপর loop ব্যবহার করে ফরম্যাট করুন: এখানে while loop দেখানো হয়েছে আপনারা foreach loop ব্যবহার করতে পারেন ।
$dblink = mysqli_connect("localhost", "dbusername", "dbpassword", "dbname");
/* If connection fails throw an error */
if (mysqli_connect_errno()) {
echo "Could not connect to database: Error: ".mysqli_connect_error();
exit();
}
//চাইলে LIMIT দিয়ে ৫০০ SMS একসাথে ডেটাবেজ থেকে যাবে এমন লিমিট করে নিতে পারেন ।
$sqlquery = "SELECT name,number FROM table_name";
if ($result = mysqli_query($dblink, $sqlquery)) {
/* fetch associative array */
while ($row = mysqli_fetch_assoc($result)) {
$name = $row["name"];
$number = $row["number"];
// আমরা উপরে loop করে ডেটাবেজ থেকে name এবং number কলামের ডেটা নিলাম আপনি ডেটাবেজ/যেকোনো ল্যুপ থেকেই ডেটা নিতে পারেন, এখন dynamic ম্যাসেজ লিখুন rawurlencode() funtion must use করতে হবে
$message = rawurlencode("Hi $name,
your message
Regards
bdsms.net
");
$json_smsdata[]= ['to'=>$number,'message'=>$message];
}
}
$smsdata = json_encode($json_smsdata);
// $smsdata হলো আমাদের কাংখিত format করা ডেটা যা এখন সেন্ড করা হবে ।
//এবার SMS প্রেরন করুন নিচে শুধু টোকেন বদল করবেন
$token = "yourtokenhere_xxxxxxxxxxxxxxxxxxx";
$smsdata = $smsdata;
$url = "https://api.bdbulksms.net/api.php";
$data= array(
'smsdata'=>"$smsdata",
'token'=>"$token"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$smsresult = curl_exec($ch);
//Result
echo $smsresult;
//Error Display
echo curl_error($ch);
?>
এটি শুধুমাত্র PHP Session ব্যাজড OTP এর জন্য, যা এক বা একাধিক পেজকে সিকিউর করতে সাহায্য করবে । তবে এটি শুধুই স্যাম্পল কোড এর পরিবর্তন কিংবা আধুনিকরন আপনাকেই করতে হবে । গ্রিনওয়েব এ ব্যাপারে সাহায্য করবে না । যে কোনো সমস্যা হলে আপনি আপনার ডেভোলপার এর সাথে কথা বলুন, এটি শুধু মাত্র প্রোগ্রামারদের কে একটা ধারনা প্রদানের জন্য, কিভাবে এপিআই কাজ করতে পারে । তাই যাদের প্রোগ্রামিং এ দক্ষতা আছে তাদের ধারনা প্রদানের জন্য ।
আপনার ওটিপি সিস্টেমে সিকিউরিটি নিশ্চিত করতে গুগল রিক্যাপচা এবং CSRF Protection ব্যবহার করুন, এছাড়াও প্রতি ৩০ সেকেন্ডে একটি ওটিপি প্রেরন করা যাবে এবং সর্বোচ্চ Xটি ওটিপি রিকোয়েস্টে করা যাবে এমন পদ্ধতি তৈরি করবেন । অন্যাথায় ওটিপি সিস্টেম অ্যাবিউজ হতে পারে ।
Token Generate করুন : https://sms.greenweb.com.bd/index.php?ref=gen_token.php
<?php
<?php
// Start the session
session_start();
//give your token here
$token = "xxxxxxxxxxxxxxxxxxxxxxxxxx";
function GetRealUserIp($default = NULL, $filter_options = 12582912) {
$HTTP_CLIENT_IP = "";
$HTTP_X_FORWARDED_FOR = $_SERVER["HTTP_X_FORWARDED_FOR"];
if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $HTTP_CLIENT_IP = $_SERVER['HTTP_CLIENT_IP']; }
$HTTP_CF_CONNECTING_IP = $_SERVER["HTTP_CF_CONNECTING_IP"];
$REMOTE_ADDR = $_SERVER["REMOTE_ADDR"];
$all_ips = explode(",", "$HTTP_X_FORWARDED_FOR,$HTTP_CLIENT_IP,$HTTP_CF_CONNECTING_IP,$REMOTE_ADDR");
foreach ($all_ips as $ip) {
if ($ip = filter_var($ip, FILTER_VALIDATE_IP, $filter_options))
break;
}
return $ip?$ip:$default;
}
$ip = GetRealUserIp();
echo "<center>";
if (isset($_POST['code'])) {
//csrf protection
if (($_SESSION["csrftoken"]) != ($_POST['csrftoken'])) {
echo "OTP Abuse detected ! Please refresh the page and try again !";
exit();
}
//check for matching
if ($_SESSION["otp"] == $_POST['code']) {
echo "You have verified your mobile number successfully</br>";
$_SESSION['verified'] = "1";
//ওটিপি রিকোয়েস্ট লিমিট রিসেট করে দেওয়া হলো ।
$_SESSION[$ip] = "0";
} else {
echo "You have entered wrong otp code, try again later.";
}
}
if ((isset($_SESSION['verified'])) AND ($_SESSION['verified'] == '1')) {
//you can post your page content here or below the page.
} else {
if(isset($_POST['otp'])) {
//check csrf for protection
if (($_SESSION["csrftoken"]) != ($_POST['csrftoken'])) {
echo "OTP Abuse detected ! Please refresh the page and try again !";
exit();
} else {
$csrftoken = $_POST['csrftoken'];
}
// দেখুন কতবার একটি আইপি থেকে ওটিপি রিকোয়েস্ট করা হয়েছে কিন্তু ভেরিফাই করা হয়নি । এখানে প্রতি session এ 5 বার maximum ওটিপি রিকোয়েস্ট করা যাবে । 5 বার ওটিপি প্রেরন করে একবারও যদি ভেরিফাই না করে তবে পূনরায় ওটিপি রিকোয়েস্ট করা যাবে না । অনেকে বার বার unknown নাম্বারে ওটিপি রিকোয়েস্টে দিয়ে মানুষকে বিরক্ত করতে পারে /আপনার SMS ব্যালেন্স শেষ করতে পারে, এটি তা prevent করবে । চাইলে লিমিট বাড়াতে কিংবা কমাতে কিংবা এটি বাদ দিতে পারেন । তবে নিরাপত্ত্বার জন্য লিমিট রাখা ভালো । চাইলে ডেটাবেজ ব্যবহার করে লিমিট করতে পারেন, টাইম দিয়ে লিমিট করতে পারেন ।
if ($_SESSION[$ip] > "5") {
echo "You're allowed to request otp for 5 times per session ! Your request is blocked.";
exit();
}
// Generate Random 5 digits otp
$code = substr(md5(mt_rand()), 0, 5);
//send otp to mobile via api
$to = preg_replace("|[^0-9 \+\/]|", '', $_REQUEST['number']);
//message text
$message = "আপনার ওটিপি কোড: $code
XYZ কোম্পানী";
$url = "https://api.bdbulksms.net/api.php";
$data= array(
'to'=>"$to",
'message'=>"$message",
'token'=>"$token"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$smsresult = curl_exec($ch);
$result = mb_substr($smsresult, 0, 2);
if ($result == 'Ok') {
//ওটিপি রিকোয়েস্টের Per IP লিমিট সেট করা হলো
if (isset($_SESSION[$ip])) {
$_SESSION[$ip] = ($_SESSION[$ip] + 1);
} else {
$_SESSION[$ip] = "1";
}
echo "Otp code is successfully sent to your mobile, you may have to wait upto 5 min to receive your code";
// save otp code on the session
$_SESSION["otp"] = $code;
//show code input form
echo "
Enter the verification code below </br>
<form action='' method='POST'>
<input type='text' name='code'>
<input type='hidden' name='csrftoken' value='$csrftoken' >
<button type='submit' value='code' name='otp'>Verify</button>
</form>";
exit();
} else {
echo "Failed to send Otp. Please try again after sometime";
exit();
}
} else {
//generate csrf token it's require to protect your otp sms form from the abusers
$csrftoken = substr(md5(mt_rand()), 0, 15);
$_SESSION["csrftoken"] = $csrftoken;
echo "
Enter your mobile number to receive OTP code </br>
<form action='' method='POST'>
<input type='text' name='number'>
<input type='hidden' name='csrftoken' value='$csrftoken' >
<button type='submit' value='otp' name='otp'>Get Otp</button>
</form>";
exit();
}
//it's not required but for extra safety
exit();
}
?>
উপরে প্রদত্ত কোডটি যে পেজকে সিকিউর করতে চান অর্থাৎ যে পেজের কনটেন্ট দেখার জন্য ইউজারকে প্রথমে মোবাইল নাম্বার দিতে হবে, এরপর কোড দিয়ে ভেরিফিকেশন করতে হবে সেই পেজ এডিট করে একদম উপরে পেস্ট করে দিন ।
আপনার ইউজার ওটিপি দিয়ে ভেরিফিকেশন কমপ্লিট করার পরই শুধুমাত্র সিকিউর কনটেন্ট দেখতে পারবে । এটি মডিফাই করে নিজের প্রয়োজন অনুযায়ী যেকোনো PHP পেজে বসাতে পারবেন । অবশ্যই গুগল রিক্যাপচা সিকিউরিটির জন্য ব্যবহার করবেন ।
function myFunction(sms){
var to = "016150505xx";
var row = 1; //grab cell data from row 1
var col = 1; //grab cell data from column 1
var gwcelldata = SpreadsheetApp.getActiveSheet().getRange(row, col).getValue(); //get active sheet data
var smsData = {
'token': '1234567890123456789',
'to': mobile,
'message': 'Hello this is a test sms. cell data:'+gwcelldata
};
var options = {
'method' : 'post',
'payload' : smsData
};
var response = UrlFetchApp.fetch('https://api.bdbulksms.net/api.php?json', options);
Logger.log(response);
}
গুগলশীটের যেকোনো কলাম এডিট করলে অথবা নতুন কলাম অ্যাড করলে স্বয়ংক্রিয়ভাবে এসএমএস প্রেরণ করার পদ্ধতি:
Instruction: নতুন "OnEdit" trigger তৈরি করুন এবং নিচের অ্যাপস্ক্রিপ্ট কোড ব্যবহার করুন।
function GreenwebOnChange(e){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var respSheet = ss.getSheetByName('Sheet1');
var rowIndx = e.range.getRow();
var allcolumns = respSheet.getDataRange().getValues();
var sheetData = respSheet.getRange(rowIndx, 1, 1, respSheet.getLastColumn()).getValues();
function gweb(number) {
const [integer, decimals] = number.toString().split(".");
if (decimals) {
return BigInt(integer).toString() + "." + BigInt(decimals).toString();
}
return BigInt(integer).toString();
}
var name = sheetData.at(0)[1];
var mobile = gweb(sheetData.at(0)[2]);
var anything = sheetData.at(0)[4];
var smsstatus = sheetData.at(0)[4];
//Logger.log(mobile);
//smsstatus empty so send sms
if (smsstatus=='') {
//check data inserted or not
if ((name !='') && (mobile !='')) {
var formData = {
'token': '1234567890123456789',
'to': mobile,
'message': 'Hello '+name+' this is a test sms. anything:'+anything
};
var options = {
'method' : 'post',
'payload' : formData
};
var smsresponses = UrlFetchApp.fetch('https://api.bdbulksms.net/api.php?json', options);
var smsresponse = JSON.parse(smsresponses);
var smsstatus = smsresponse[0].status;
var smsstatusmsg = smsresponse[0].statusmsg;
//Logger.log(smsresponse[0].status);
var smsstatuscol = allcolumns[0].indexOf('smsstatus');
var smsdetailscol = allcolumns[0].indexOf('smsdetails');
respSheet.getRange(rowIndx, ((smsstatuscol) + 1)).setValue(smsstatus);
respSheet.getRange(rowIndx, ((smsdetailscol) + 1)).setValue(smsstatusmsg);
}
}
}
গুগলফর্ম সাবমিট করলে রিসপন্স প্রদানকারীকে/এডমিন/যে কাউকে নতুন রিসপন্স স্বয়ংক্রিয়ভাবে এসএমএস এর মাধ্যমে প্রেরণ করার পদ্ধতি:
গুগল APP Script এ নিচের কোডটি লিখুন এরপর একটি on form submit ট্রিগার তৈরি করুন।
function GreenwebSubmitForm(e){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var respSheet = ss.getSheetByName('Form responses 1');
var rowIndx = e.range.getRow();
var formData = respSheet.getRange(rowIndx, 1, 1, respSheet.getLastColumn()).getValues();
function gweb(number) {
const [integer, decimals] = number.toString().split(".");
if (decimals) {
return BigInt(integer).toString() + "." + BigInt(decimals).toString();
}
return BigInt(integer).toString();
}
var name = formData.at(0)[1];
var mobile = gweb(formData.at(0)[2]);
var anything = formData.at(0)[3];
var smsData = {
'token': '1234567890123456789',
'to': mobile,
'message': 'Hello '+name+' this is a test sms. anything:'+anything
};
var options = {
'method' : 'post',
'payload' : smsData
};
var smsresponses = UrlFetchApp.fetch('https://api.bdbulksms.net/api.php?json', options);
var smsresponse = JSON.parse(smsresponses);
var smsstatus = smsresponse[0].status;
var smsstatusmsg = smsresponse[0].statusmsg;
Logger.log(smsstatusmsg);
}
For more information check: https://developers.google.com/apps-script/reference/spreadsheet/sheet
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;
namespace GreenwebBDAPI{
class Program{
static void Main(string[] args){
string result = "";
WebRequest request = null;
HttpWebResponse response = null;
try{
String to = "016xxxxxxxx,017xxxxx"; //Recipient Phone Number multiple number must be separated by comma
String token = "entertokencodehere"; //generate token from the control panel
String message = System.Uri.EscapeUriString("my messages"); //do not use single quotation (') in the message to avoid forbidden result
String url = "https://api.bdbulksms.net/api.php?token=" + token + "&to=" + to + "&message=" + message;
request = WebRequest.Create(url);
// Send the 'HttpWebRequest' and wait for response.
response = (HttpWebResponse) request.GetResponse();
Stream stream = response.GetResponseStream();
Encoding ec = System.Text.Encoding.GetEncoding("utf-8");
StreamReader reader = new
System.IO.StreamReader(stream, ec);
result = reader.ReadToEnd();
Console.WriteLine(result);
reader.Close();
stream.Close();
} catch (Exception exp){
Console.WriteLine(exp.ToString());
} finally {
if (response != null)
response.Close();
}
}
}
}
using System.Net.Http;
Setup:
It is recommended to instantiate one HttpClient for your application's lifetime and share it.
private static readonly HttpClient client = new HttpClient();
POST:
var values = new Dictionary
{
{ "token", "yourtokenhere" },
{ "to", "016xxxxxxxxx" },
{ "message", "test" }
};
var content = new FormUrlEncodedContent(values);
var response = await client.PostAsync("https://api.bdbulksms.net/api.php?", content);
var responseString = await response.Content.ReadAsStringAsync();
Newer library sporting a fluent API and testing helpers. HttpClient under the hood. Portable. Available via NuGet.
using Flurl.Http;
POST
var responseString = await "https://api.bdbulksms.net/api.php?"
.PostUrlEncodedAsync(new { token = "yourtokencodehere", to = "015xxxxxxx", message = "my message" })
.ReceiveString();
Imports System.Web
Imports System.IO
Imports System.Net
Imports System.Text
Imports System.Resources
Public Class greenwebApi
Public Function greenwebApi()
Dim token = "YourTokenCodeHere"
Dim message = "Hello World"
Dim mobile = "017xxxxxxxx"
Dim url As String = "https://api.bdbulksms.net/api.php?"
Dim strPost As String
strPost = url + "token=" + token _
+ "&to=" + mobile _
+ "&message=" + WebUtility.UrlEncode(message)
Dim request As WebRequest = WebRequest.Create(strPost)
request.Method = "POST"
Dim byteArray As Byte() = Encoding.UTF8.GetBytes(strPost)
request.ContentType = "application/x-www-form-urlencoded"
request.ContentLength = byteArray.Length
Dim dataStream As Stream = request.GetRequestStream()
dataStream.Write(byteArray, 0, byteArray.Length)
dataStream.Close()
Dim response As WebResponse = request.GetResponse()
dataStream = response.GetResponseStream()
Dim reader As New StreamReader(dataStream)
Dim responseFromServer As String = reader.ReadToEnd()
Console.WriteLine(responseFromServer)
Console.ReadLine()
reader.Close()
dataStream.Close()
response.Close()
If responseFromServer.Length > 0 Then
Return responseFromServer
Else
Return CType(response, HttpWebResponse).StatusDescription
End If
End Function
End Class
Private Sub Command1_Click()
Dim DataToSend As String
Dim objXML As Object
Dim message As String
Dim token As String
Dim smsto As String
Dim URL As String
'Set Your Token Here. Generate it from the control panel
token = "xxxxxxxxxxxxxxxxxxxx"
'set/declare your recipient number here
smsto = "01xxxxxxxxxxx"
'Set your Message here
message = URLEncode(" Hello World This is Greenweb BD ")
' do not change anything below
URL = "https://api.bdbulksms.net/api.php?"
Set objXML = CreateObject("Microsoft.XMLHTTP")
objXML.Open "POST", URL, False
objXML.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objXML.send "token=" + token + "&to=" + smsto + "&message=" + message
'response box start, You can remove the response code from here
If Len(objXML.responseText) > 0 Then
MsgBox objXML.responseText
End If
'response end remove upto this if you want
End Sub
Function URLEncode(ByVal Text As String) As String
Dim i As Integer
Dim acode As Integer
Dim char As String
URLEncode = Text
For i = Len(URLEncode) To 1 Step -1
acode = Asc(Mid$(URLEncode, i, 1))
Select Case acode
Case 48 To 57, 65 To 90, 97 To 122
' don't touch alphanumeric chars
Case 32
' replace space with "+"
Mid$(URLEncode, i, 1) = "+"
Case Else
' replace punctuation chars with "%hex"
URLEncode = Left$(URLEncode, i - 1) & "%" & Hex$(acode) & Mid$ _
(URLEncode, i + 1)
End Select
Next
End Function
কিভাবে SMS পাঠাবেন ORACLE FORM BUILDER / ORACLE থেকে ?
Token Generate করুন : https://sms.greenweb.com.bd/index.php?ref=gen_token.php
প্রথমে দুইটি টেক্সট আইটেম এবং একটি বাটন তৈরী করুন, টেক্সট আইটেম দুটির নাম দিন TO এবং MESSAGE আর বাটনে ট্রিগার WHEN-BUTTON-PRESSED সিলেক্ট করে নিচের কোড দিন । কোডে টোকেন কোড বদল করে নিবেন ।
DECLARE
smsto varchar(5000) := :new.to;
message varchar(5000) := Utl_Url.escape(:new.message, TRUE);
req UTL_HTTP.REQ;
resp UTL_HTTP.RESP;
value VARCHAR2(5024);
v_url VARCHAR2(200) := 'https://api.bdbulksms.net/api.php';
v_param VARCHAR2(5000) := 'token=yourtoken&to=' || smsto || '&message=' || message || '';
v_param_length NUMBER := length(v_param);
BEGIN
req := UTL_HTTP.BEGIN_REQUEST (url=> v_url, method => 'POST');
UTL_HTTP.SET_HEADER (r => req,
name => 'Content-Type',
value => 'application/x-www-form-urlencoded');
UTL_HTTP.SET_HEADER (r => req,
name => 'Content-Length',
value => v_param_length);
UTL_HTTP.WRITE_TEXT (r => req,
data => v_param); resp := UTL_HTTP.GET_RESPONSE(req);
LOOP
UTL_HTTP.READ_LINE(resp, value, TRUE);
DBMS_OUTPUT.PUT_LINE(value);
END LOOP;
UTL_HTTP.END_RESPONSE(resp);
EXCEPTION
WHEN UTL_HTTP.END_OF_BODY THEN
UTL_HTTP.END_RESPONSE(resp);
END;
SMS Gateway URL: https://api.bdbulksms.net/api.php
HTTP Header: ফাঁকা রাখুন
HTTP Method: POST
Gateway Parameters: token:1234567890123456789,to:{to},message:{message}
Send as Body Data: No
Encode Message: No
Phone Number: যেকোনো একটা সেট করুন
Sender ID: কিছু সেট করার প্রয়োজন নেই
Message Template: (YourCompanyName) Your OTP is {OTP}
@{DOMAIN}, #{OTP}
Note: 1234567890123456789 টোকেনের জায়গায় আপনার টোকেন জেনারেট করে দিন Message এ YourCompanyName এর জায়গায় ব্রাকেটে কোম্পানীর নাম দিন। টোকেন জেনারেট করতে ভিজিট করুন: https://gwb.li/token
SMS প্রেরণ বন্ধ হয়ে গেলে অথবা সঠিকভাবে না গেলে নিচের ভিডিও টিউটোরিয়াল দেখে সমাধান করতে পারবেন ।