مقدمه
نرمافزار Zoiper یکی از سافتفونهای پرکاربرد برای راهاندازی تماسهای VoIP میباشد که قابلیت رجیستر شدن بهصورت دستی و خودکار از طریق QR Code را داراست. این مقاله بهصورت گامبهگام نحوه پیادهسازی سیستمی جهت تولید داینامیک QR Code برای کاربران SIP را با استفاده از زبان PHP شرح میدهد. هدف آن است که کاربران بدون نیاز به ورود دستی اطلاعات، تنها با اسکن یک کد QR در Zoiper، به سرور VoIP متصل شوند.
پیشنیازها
برای پیادهسازی این سیستم، موارد زیر مورد نیاز است:
- وبسرور دارای پشتیبانی از PHP (Apache یا Nginx)
- PHP نسخه 7.2 یا بالاتر
- دسترسی به دامنه یا آدرس IP برای تست
- اکانت ثبتشده در Zoiper OEM Portal برای دریافت شناسه provider_id
گام1 : آموزش ساخت و استفاده از QR Code در پلتفرم Zoiper OEM
مرحله ۱: ثبتنام رایگان در پلتفرم Zoiper OEM
ثبتنام در سایت https://oem.zoiper.com/ کاملاً رایگان است.
اگر هنوز حساب کاربری ندارید، به صفحه ثبتنام بروید و طبق مراحل ثبتنام، حساب بسازید.
مرحله ۲: ورود به حساب کاربری
روی دکمه Login در بالای سمت راست سایت کلیک کنید.
با نام کاربری و رمز عبور خود وارد شوید.
مرحله ۳: ارسال تنظیمات سرور SIP
وارد بخش Softphones شوید.
برای ساخت QR Code فقط کافی است یک Mobile Softphone بسازید.
روی دکمه Create Mobile Softphone کلیک کنید.
در صفحه بعد، فرم تنظیمات سرور SIP باز میشود.
اطلاعات SIP (مثل نام کاربری، رمز عبور، پروکسی و آدرس سرور و …) را وارد کنید.
پس از پر کردن فرم، روی Save کلیک کنید.
مرحله ۴: تنظیم URL مربوط به QR Code
دوباره به بخش Softphones برگردید.گزینههای جدیدی ظاهر میشود.
روی دکمه View کلیک کنید. اگر این دکمه را نمیبینید یا غیر فعال است، مطمئن شوید مرحله ۳ را درست انجام دادهاید.
صفحه بعد، آدرس URL مربوط به QR Code را به شما نشان میدهد.
فرمت URL نمونه:
https://www.zoiper.com/en/page/provider_ID=?u=&h=&p=&o=&t=&a=&tr=
توضیح پارامترها:
پارامتر توضیح مقدار نمونه
u= نام کاربری SIP 1001
h= آدرس سرور SIP (hostname) sip.example.com
p= رمز عبور SIP secret123
t= توکن ID (token) -
a= نام کاربری احراز هویت (auth username) -
tr= نوع پروتکل انتقال (transport) 0=UDP, 1=TCP, 2=TLS
وقتی این URL را در مرورگر باز کنید. پلتفرم Android ، iOS و Phone 8 Windows قابل انتخاب است. پلتفرم مدنظر را انتخاب کنید و بعد QR Code نمایش داده میشود.
مرحله ۵: ارسال QR Code به مشتریان
دو راه دارید:
1-ارسال مستقیم URL : مشتریان لینک را باز کرده و QR Code را اسکن میکنند.
2-قرار دادن QR Code در وبسایت: میتوانید این کد HTML را در سایت خود بگذارید تا QR Code نمایش داده شود
نکته مهم!
اگر در URL مقدارهای نام کاربری و رمز عبور را ثابت وارد کنید، همه QR Codeها برای یک حساب SIP ساخته میشوند.
برای جلوگیری از این موضوع:
بهتر است با یک اسکریپت (مثلاً در وبسایت خود) مقادیر نام کاربری و رمز عبور را به صورت داینامیک (پویا) تنظیم کنید تا برای هر مشتری متفاوت باشد.
یا برای امنیت اصلاً مقادیر نام کاربری و رمز عبور را در URL قرار ندهید و اجازه دهید مشتری خودش وارد کند.
گام 2: داینامیک کردن URL QR Code
برای اینکه پارامترهای نام کاربری (username) و رمز عبور (password) در URL مربوط به QR Code به صورت داینامیک (پویا) تنظیم شوند و برای هر مشتری متفاوت باشند، باید یک اسکریپت سمت سرور بنویسید که این مقادیر را هنگام درخواست URL بسازد و جایگزین کند.
مثال ساده با PHP
1. اجرای PHP روی وب سرور (Apache, Nginx) و …
گامهای اصلی :
- نصب وب سرور و PHP
- اگر روی ویندوز هستید، میتوانید از بستههایی مثل XAMPP یا WampServer استفاده کنید که به راحتی Apache + PHP + MySQL را نصب میکند.
روی لینوکس معمولاً با دستورهای زیر نصب میکنید:
sudo apt update
sudo apt install apache2 php libapache2-mod-php
قرار دادن فایل PHP در مسیر وب سرور :
مسیر پیشفرض در لینوکس: /var/www/html/
در XAMPP در ویندوز: C:\xampp\htdocs\
مثلاً فایل generate-zoiper-qr.php را داخل این پوشه کپی کنید.
دسترسی به فایل PHP از طریق مرورگر :
اگر فایل در مسیر بالا هست، در مرورگر آدرس را اینطور باز کنید:
http://localhost/generate-zoiper-qr.php
وب سرور فایل را پردازش کرده و خروجی PHP را نمایش میدهد.
2 -اجرای سریع با PHP Built-in Server بدون نیاز به وب سرور جداگانه
اگر PHP روی سیستم نصب باشد، میتوانید در پوشه فایل PHP، ترمینال یا CMD باز کنید و این دستور را اجرا کنید:
php -S localhost:8000
- این باعث میشود یک سرور کوچک روی پورت ۸۰۰۰ اجرا شود.
- سپس مرورگر را باز کرده و بروید به:
http://localhost:8000/generate-zoiper-qr.php
3- ایجاد فرم HTML برای ورود نام کاربری SIP
در فایل generate-zoiper-qr.php فرم سادهای طراحی میشود که کاربر بتواند شماره داخلی یا نام کاربری خود را وارد نماید:
محتوای generate-zoiper-qr.php به شرح زیر میباشد.
<?php
// اگر کاربر مقدار user را وارد کرده باشد:
if ($_SERVER["REQUEST_METHOD"] == "POST" && !empty($_POST['user'])) {
$user = $_POST['user'];
// دیتای اکانتها (بهصورت دستی یا از دیتابیس بخون)
$accounts = [
'500' => ['pass' => 'Aa123', 'authuser' => '500@domain.ir'],
'501' => ['pass' => 'Aa123', 'authuser' => '501@domain.ir'],
// ...
];
if (!array_key_exists($user, $accounts)) {
echo "<p style='color:red'>کاربر یافت نشد.</p>";
} else {
$pass = $accounts[$user]['pass'];
$authuser = $accounts[$user]['authuser'];
$host = "domain.ir";
$provider_id = "6d22a2f4e5a5d8e3032f7ed15e1ce4b4";
$transport = 0;
// ساختن لینک QR مخصوص این کاربر
$qr_url = "https://www.zoiper.com/en/page/$provider_id?u=$user&h=$host&p=$pass&a=$authuser&tr=$transport";
header("Location: $qr_url");
}
}
?>
<!-- فرم ورود مقدار user -->
<form method="POST">
<label for="user">شماره داخلی یا نام کاربری SIP:</label><br>
<input type="text" name="user" id="user" required>
<button type="submit">دریافت QR کد</button>
</form>
4-آموزش استفاده برای کاربران نهایی
- کاربر وارد صفحه وب مربوطه شده و شماره داخلی خود را وارد مینماید.
- QR Code مخصوص وی تولید میشود.
- با استفاده از گزینه “Scan QR Code” در نرمافزار Zoiper، تنظیمات بهصورت خودکار اعمال میشود.
ملاحظات امنیتی
برای امنیت میتوان در بخش $qr_url موارد uوp خالی گذاشت تا پس از اسکن qr ، کاربر خودش داخلی و پسورد را وارد کند و در صورت صحیح بودن اطلاعات وارد شده توسط کاربر داخلی رجیستر می گردد.
مورد | توضیح |
---|---|
رمزگذاری اطلاعات | پیشنهاد میشود اطلاعات کاربران و رمز عبور در سمت سرور رمزگذاری یا هش شوند. |
استفاده از HTTPS | جهت جلوگیری از ارسال اطلاعات حساس روی پروتکل ناامن HTTP |
احراز هویت صفحه | بهتر است دسترسی به این صفحه محدود به کاربران خاص یا از طریق رمز عبور باشد. |
توکن یکبار مصرف | برای افزایش امنیت میتوان از توکنهای انقضادار به جای username استفاده نمود. |
نتیجهگیری
در این مقاله، بهصورت جامع و ساختاریافته، نحوه ایجاد سیستمی برای تولید داینامیک QR Code جهت ثبت خودکار کاربران در سافتفون Zoiper آموزش داده شد. این روش با استفاده از زبان PHP و بهرهگیری از امکانات Zoiper OEM، فرآیند رجیستر شدن کاربران را بسیار ساده و کاربرپسند مینماید. همچنین قابلیت توسعهپذیری بالا برای اتصال به پایگاه داده، ایجاد پنل مدیریتی و افزایش سطح امنیتی دارد.