Automation & Mobile Hacks

How to Build a Free SMS Gateway Using an Android Phone and Termux

নিজের তৈরি কোনো ওয়েব অ্যাপ্লিকেশনে ওটিপি (OTP) ভেরিফিকেশন সিস্টেম, ক্লায়েন্ট নোটিফিকেশন অথবা সার্ভার ডাউন অ্যালার্ট সিস্টেম যোগ করার জন্য গ্লোবাল এসএমএস গেটওয়ে (যেমন Twilio) ব্যবহার করতে গেলে প্রচুর ডলার খরচ করতে হয়। কিন্তু আপনি কি জানেন, আপনার অব্যবহৃত একটি অ্যান্ড্রয়েড ফোন এবং আপনার সিমে থাকা রেগুলার এসএমএস প্যাক ব্যবহার করেই একটি প্রফেশনাল এপিআই গেটওয়ে তৈরি করে ফেলা সম্ভব?

এই প্রজেক্টটি সফল করার জন্য আমাদের প্রয়োজন হবে **Termux** এবং এর একটি অফিশিয়াল প্লাগইন **Termux:API**। এর মাধ্যমে আমরা একটি লোকাল এন্ডপয়েন্ট তৈরি করবো যা যেকোনো রিমোট ব্যাকএন্ড বা ওয়েব সার্ভার থেকে কমান্ড রিসিভ করে মোবাইলের সিম কার্ডের মাধ্যমে টার্গেট নাম্বারে এসএমএস পাঠিয়ে দেবে।

ধাপ ১: অ্যান্ড্রয়েড এনভায়রনমেন্ট এবং প্লাগইন সেটআপ

প্রথমে আপনার ডিভাইসে নিচের প্রয়োজনীয় টুলগুলো ইনস্টল করে পারমিশন গ্র্যান্ট করতে হবে:

  1. F-Droid বা আপনার বিশ্বস্ত সোর্স থেকে Termux এবং Termux:API অ্যাপ দুটি ইনস্টল করুন।
  2. ফোনের মূল সেটিংস অ্যাপে গিয়ে Termux অ্যাপটিকে SMS Send & Receive এবং Background Execution এর পারমিশন দিন।
  3. টারমাক্স ওপেন করে নিচের কমান্ড দিয়ে এর ইন্টারনাল এপিআই বাইন্ডিং প্যাকেজটি ইনস্টল করে নিন:
pkg update && pkg install termux-api nodejs -y

ধাপ ২: গেটওয়ে স্ক্রিপ্ট তৈরি (Node.js API)

এবার আমরা টারমাক্সের ভেতরে একটি এক্সপ্রেস লাইটওয়েট সার্ভার রান করাবো, যা বাইরে থেকে আসা এইচটিটিপি (HTTP POST) রিকোয়েস্ট গ্রহণ করে অ্যান্ড্রয়েডের ইন্টারনাল সেলুলার হার্ডওয়্যারকে ট্রিগার করবে। প্রোজেক্ট ডিরেক্টরিতে npm install express করে নিন এবং **sms-gateway.js** ফাইলে নিচের কোডটি রাইট করুন:

const express = require('express');
const { exec } = require('child_process');
const app = express();

app.use(express.json());

// এসএমএস পাঠানোর কোর রাউট এন্ডপয়েন্ট
app.post('/send-sms', (req, res) => {
    const { number, message } = req.body;

    if (!number || !message) {
        return res.status(400).json({ error: "Missing 'number' or 'message' parameter." });
    }

    // অ্যান্ড্রয়েডের ইন্টারনাল বাইনারি ট্রিগার করার সেল কমান্ড (Termux API)
    // বিশেষ দ্রষ্টব্য: টেক্সট মেসেজের স্পেশাল ক্যারেক্টার এস্কেপ করতে ডাবল কোটেশন হ্যান্ডেল করা হয়েছে
    const shellCommand = `termux-sms-send -n ${number} "${message.replace(/"/g, '\\"')}"`;

    console.log(`Attempting to send SMS to: ${number}`);

    exec(shellCommand, (error, stdout, stderr) => {
        if (error) {
            console.error(`Execution Error: ${error.message}`);
            return res.status(500).json({ success: false, error: error.message });
        }
        
        // সফলভাবে কমান্ড এক্সিকিউট হলে
        return res.json({
            success: true,
            status: "Dispatched",
            provider: "Ahyan Android Gateway Engine"
        });
    });
});

const PORT = 8080;
app.listen(PORT, () => {
    console.log(`Local SMS Gateway API server live on port ${PORT}`);
});

ধাপ ৩: লোকাল সার্ভারকে গ্লোবাল ইন্টারনেটে লাইভ করা

টারমাক্সে স্ক্রিপ্টটি রান করুন: node sms-gateway.js। এখন সার্ভারটি মোবাইলের লোকালহোস্টে (localhost:8080) সচল। এটিকে আপনার লাইভ ওয়েবসাইট বা ক্লায়েন্ট প্রজেক্টের সাথে কানেক্ট করার জন্য গ্লোবাল ইউআরএল-এ কনভার্ট করতে হবে। এর জন্য ব্যবহার করতে পারেন আমাদের প্রিয় **Cloudflare Tunnels** বা লোকালটানেল:

npm install -g localtunnel && lt --port 8080

কমান্ডটি আপনাকে একটি সিকিউর লাইভ ইউআরএল দেবে (যেমন: https://free-sms-bot.locallatunnel.me)। এখন যেকোনো ওয়েব সার্ভিস থেকে এই লিঙ্কের /send-sms পাথে জেসন পেলোড (Payload) পাঠালেই আপনার মোবাইল দিয়ে ফ্রিতে এসএমএস চলে যাবে!

টেলিমেট্রি এবং সতর্কতা: অনেক মোবাইল অপারেটর এক মিনিটে বা একদিনে অতিরিক্ত এসএমএস পাঠালে স্প্যামিং পলিসির কারণে সাময়িকভাবে সিম কার্ড ব্লক করে দেয়। তাই কমার্শিয়াল বা বাল্ক এসএমএস ক্যাম্পেইনের ক্ষেত্রে লুপের মাঝখানে অবশ্যই ৫ থেকে ১০ সেকেন্ডের একটি র‍্যান্ডম ডিলে মেকানিজম রাইট করা অত্যন্ত জরুরি।