برای ارسال پیام به یک کانال تلگرام از طریق PHP، به یک توکن API و شناسه چت (Chat ID) نیاز دارید. این اطلاعات را با ایجاد یک ربات تلگرام به دست میآورید.
ایجاد ربات تلگرام
برای ایجاد ربات تلگرام مراحل زیر را دنبال کنید:
- گفتگو با BotFather:
- از طریق جستجوی جهانی، BotFather را پیدا کنید.
- BotFather، رباتی است که به شما امکان ایجاد رباتهای جدید و مدیریت رباتهای موجود را میدهد.
- ایجاد ربات جدید:
- فرمان
/newbot
را وارد کنید. - نامی برای ربات خود انتخاب کنید (باید به “bot” ختم شود)، مثلاً:
Atom_Bot
. - پس از ایجاد ربات، یک توکن به شما داده میشود.
- فرمان
توکن (Token):
این توکن یک رشته است که برای احراز هویت ربات و ارسال درخواستها به API تلگرام مورد نیاز است، مثل: ۴۳۳۴۵۸۴۹۱۰:AAEPmjlh84N62Lv3jGWEgOftlxxAfMhB1gs
.
ایجاد کانال تلگرام
برای ایجاد کانال تلگرام روی دستگاه اندروید خود:
- تلگرام را باز کنید.
- روی آیکون قلم در پایین صفحه کلیک کرده و New Channel را انتخاب کنید.
- یک نام برای کانال وارد کنید. میتوانید توضیحی هم اضافه کنید.
- روی آیکون دوربین کنار نام کانال کلیک کرده و عکسی بهعنوان تصویر کانال انتخاب کنید.
- نوع کانال را انتخاب کنید (عمومی یا خصوصی).
- اگر کانال عمومی است، یک لینک دائمی برای آن تنظیم کنید.
- روی تیک تأیید کلیک کنید.
- تلگرام از شما میخواهد اعضای اولیه را اضافه کنید. این گزینه اختیاری است.
اضافه کردن ربات به کانال بهعنوان مدیر (Admin)
برای اینکه ربات بتواند به کانال پیام ارسال کند، باید آن را به کانال اضافه کرده و بهعنوان مدیر تنظیم کنید. مراحل زیر را دنبال کنید:
- باز کردن لیست اعضا.
- روی نام ربات (Atom_Bot) کلیک کنید و گزینه Promote to Admin را انتخاب کنید.
ارسال پیام به کانال تلگرام با PHP
برای ارسال پیام، میتوانید از کد PHP زیر استفاده کنید:
<?php
$apiToken = "۴۳۳۴۵۸۴۹۱۰:AAEPmjlh84N62Lv3jGWEgOftlxxAfMhB1gs";
$data = [
'chat_id' => '@demo', // شناسه کانال، برای مثال: @کانال_شما
'text' => 'به کانال ما خوش آمدید!'
];
$response = file_get_contents("http://api.telegram.org/bot$apiToken/sendMessage?" . http_build_query($data));
?>
تست و اجرا
- قرار دادن اسکریپت: این کد را در یک فایل PHP ذخیره کرده و روی سرور خود قرار دهید.
- اجرا: فایل PHP را در مرورگر اجرا کنید یا به صورت برنامهریزیشده روی سرور اجرا کنید.
- نتیجه: پس از اجرای کد، پیام باید به کانال ارسال شود.
استفاده از ربات در استریسک (Asterisk) برای اطلاعرسانیها
با اتصال استریسک به تلگرام، میتوانید اطلاعرسانیها و پیامهای مختلفی را ارسال کنید. در اینجا چند مثال آورده شده است:
-
اطلاعرسانیهای امنیتی:
- اگر تماس مشکوک یا حملات احتمالی به سیستم رخ دهد، میتوانید از طریق ربات تلگرام به مدیران اطلاع دهید.
-
پیامگیر صوتی:
- اگر کسی پیغام صوتی بگذارد، اسکریپت میتواند آن را به همراه اطلاعات تماس به تلگرام ارسال کند.
-
اعلانهای تماس ورودی و خروجی:
- برای اطلاع از تماسهای ورودی و خروجی مهم، اطلاعات تماس به تلگرام ارسال شود. این ویژگی برای مدیرانی که همیشه نمیتوانند به سیستم وصل شوند مفید است.
مثال از استفاده در ایزابل (Issabel)
یک سناریوی کاربردی این است که در Issabel، زمانی که تماسی به بخش خاصی هدایت میشود یا تماس ورودی مهمی دریافت میشود، یک پیام حاوی اطلاعات تماس و شماره تماسگیرنده به تلگرام ارسال شود.
برای این کار، میتوانید یک AGI Script ایجاد کرده و آن را در Dialplan قرار دهید تا هر زمان که تماس وارد شود، اطلاعات تماس به کانال تلگرام ارسال شود.
استفاده از PHP برای ارسال پیام از Issabel به تلگرام
اتصال Issabel به تلگرام میتواند به شما این امکان را بدهد که رویدادهای مختلف سیستم تلفنی خود را بهصورت خودکار به تلگرام ارسال کنید. در اینجا چند مثال ساده آورده شده است که چگونگی استفاده از یک فایل PHP را برای ارسال پیام از Issabel به تلگرام نشان میدهد. هر مثال بهصورت گام به گام توضیح داده شده تا اجرای آن برای شما راحت باشد.
مثال ۱: ارسال پیام اطلاعرسانی تماس ورودی به تلگرام
در این مثال، هرگاه تماسی به سیستم شما وارد شود، یک پیام اطلاعرسانی شامل شماره تماسگیرنده به کانال تلگرام ارسال میشود.
مراحل راهاندازی:
- ایجاد فایل PHP برای ارسال پیام:
- ابتدا یک فایل PHP برای ارسال پیام به تلگرام ایجاد کنید. این فایل را در مسیر
/var/lib/asterisk/agi-bin/
ذخیره کنید. - نام فایل را
send_telegram_message.php
بگذارید.
- ابتدا یک فایل PHP برای ارسال پیام به تلگرام ایجاد کنید. این فایل را در مسیر
- کد PHP برای ارسال پیام:
// دریافت شماره تماسگیرنده از متغیرهای Asterisk<?php
$apiToken = "توکن_ربات_شما"; // جایگزین کردن با توکن ربات تلگرام
$chatId = "@شناسه_کانال_شما"; // شناسه کانال تلگرام، برای مثال: @کانال_شما
$callerId = isset($argv[۱]) ? $argv[۱] : ‘Unknown Caller’;$data = [
‘chat_id’ => $chatId,
‘text’ => “تماس ورودی جدید از شماره: “ . $callerId
];
$response = file_get_contents(“https://api.telegram.org/bot$apiToken/sendMessage?” . http_build_query($data));
?> - تنظیمات Dialplan در Asterisk:
- فایل extensions_custom.conf را باز کنید (موجود در مسیر
/etc/asterisk/
). - یک Context جدید بهصورت زیر ایجاد کنید که فایل PHP را هنگام دریافت تماس اجرا کند:
plaintext[telegram-notify]
exten => s,1,NoOp(ارسال پیام اطلاعرسانی تماس ورودی به تلگرام)
exten => s,n,AGI(send_telegram_message.php, ${CALLERID(num)})
exten => s,n,Hangup()
- فایل extensions_custom.conf را باز کنید (موجود در مسیر
- استفاده از Context:
- این Context را برای داخلیها یا خطوط ورودی خاص تنظیم کنید تا پیام اطلاعرسانی ارسال شود. میتوانید این تنظیم را از طریق رابط کاربری Issabel در بخش تنظیمات خطوط ورودی انجام دهید.
- بارگذاری مجدد تنظیمات Asterisk:
- با اجرای فرمان زیر تنظیمات جدید را بارگذاری کنید:
asterisk -rx
"dialplan reload"
- با اجرای فرمان زیر تنظیمات جدید را بارگذاری کنید:
مثال ۲: ارسال پیام پیامگیر (Voicemail) به تلگرام
در این مثال، هنگامی که یک پیغام صوتی جدید در سیستم ذخیره میشود، پیامی به تلگرام ارسال میشود که اطلاع دهد پیغام صوتی جدیدی دریافت شده است.
مراحل راهاندازی:
- ایجاد فایل PHP برای پیامگیر:
- یک فایل جدید به نام
voicemail_telegram_notify.php
در مسیر/var/lib/asterisk/agi-bin/
ایجاد کنید.
- یک فایل جدید به نام
- کد PHP برای ارسال پیام پیامگیر:
<?php
$apiToken = "توکن_ربات_شما";
$chatId = "@شناسه_کانال_شما";
// دریافت اطلاعات پیامگیر از متغیرهای Asterisk
$callerId = isset($argv[1]) ? $argv[1] : 'Unknown Caller';
$data = [
'chat_id' => $chatId,
'text' => "پیام صوتی جدید از شماره: " . $callerId
];
$response = file_get_contents("https://api.telegram.org/bot$apiToken/sendMessage?" . http_build_query($data));
?>
- تنظیمات Voicemail در Asterisk:
- در فایل voicemail.conf تنظیمات مربوط به Voicemail را باز کرده و Context جدیدی برای اطلاعرسانی به تلگرام ایجاد کنید:
[telegram-voicemail]
;VOIPIRAN SAMPLEexten => s,1,NoOp(ارسال پیام پیامگیر به تلگرام)
exten => s,n,AGI(voicemail_telegram_notify.php, ${CALLERID(num)})
exten => s,n,Hangup()
- تنظیمات Voicemail:
- در تنظیمات Voicemail از رابط کاربری Issabel، Context را برای داخلیها یا شمارههای خاص تنظیم کنید تا پیام پیامگیر به تلگرام ارسال شود.
- بارگذاری مجدد تنظیمات Asterisk:
- با فرمان زیر تنظیمات را مجدداً بارگذاری کنید:
asterisk -rx
"dialplan reload"
- با فرمان زیر تنظیمات را مجدداً بارگذاری کنید:
تست و اجرای اسکریپت
برای اطمینان از عملکرد صحیح:
- یک تماس تستی با سیستم برقرار کنید و بررسی کنید که پیام به تلگرام ارسال شده است.
- یا یک پیام صوتی بگذارید و ببینید آیا پیام اطلاعرسانی در کانال تلگرام شما ظاهر میشود.
نکات پایانی
- اطمینان حاصل کنید که ربات تلگرام بهعنوان مدیر کانال تنظیم شده باشد.
- صدور مجوزهای فایل PHP: فایلهای PHP در مسیر AGI باید دارای مجوزهای لازم برای اجرا باشند. از فرمان زیر استفاده کنید:
chmod +x /var/lib/asterisk/agi-bin/send_telegram_message.php
با این روشها، میتوانید بهسادگی اطلاعرسانیهای سیستمی را به تلگرام ارسال کرده و مدیریت تماسها را بهبود دهید. این اتصال میتواند به شما کمک کند تا بهصورت خودکار از وضعیت سیستم و تماسها آگاه شوید.
جمعبندی
اتصال استریسک و تلگرام به شما امکان مدیریت بهتر تماسها، اطلاعرسانیهای سریع و امنیت بیشتر را میدهد. این راهکار برای مدیران سیستم و مسئولین امنیتی ارزش بالایی دارد و میتواند بهطور گسترده در محیطهای VoIP استفاده شود.