بایگانی دسته: Laravel

لاراول یه فریم ورک باحاله PHP ایه که باهاش خیلی راحت میتونید برنامه تحت وب پیاده کنید

اجرای کارها با صف در لاراول

نوشته‌شده در توسط .
آموزش ایجاد صف

سلام دوستان. امروز میخوام در مورد یه موضوع خیلی کاربردی در لاراول صحبت کنم که در درجه اول خیلی مهم به نظر نمیرسه ولی ازش استفاده که میکنید میبینید چقد بدون صف زندگی کردن سخته. پس بذارید زود شروع کنم.

صف ها در برنامه نویسی به چه دردی میخورن؟

راستش صف ها جدا از اینکه توی زندگی ما آدم ها خیلی مهم هستن بعضی موقه ها توی کدهامون هم خیلی مهم میشن. مخصوصا اگه معلوم نباشه که هر کی چند دقیقه کارش طول میکشه. اگه بخوام یک مثال عملی بزنم فرض کنید یک تعداد خیلی زیادی کار دارید و میخواید اونها رو انجام بدید و از طرف دیگه مدت زمان انجام شدن هر کدوم از اونها از شروع تا پایان هم مشخص نیست. فرض کنید من یه موتور جستجو دارم که میخوام توی وبسایت ها بخزم و محتوای اونها رو ایندکس کنم و اگه ویدئو و عکسی هست پردازش کنم و ایندکس کنم. اگه محتوا متنی باشه خیلی زود و اگه عکس باشه بیشتر و ویدئو باشه خیلی بیشتر طول میکشه این عملیات تموم بشه. یه راه اینه که یه for بنویسم و بگم پشت سر هم این کارها رو انجام بده. ولی اگه توی ایتریشن دوم کدم به خطا خورد چی؟ اصلا از کجا بدونم به خطا خورده؟ اگه خواستم اجراهایی که به خطا خوردن رو دوباره اجرا کنم چی؟

صف ها در لاراول به شما این امکانات رو میدن که به راحتی جاب ها رو بذارید توی صف. اگه خطایی بوجود اومد لاگش رو ذخیره میکنن. میتونید با پکیج هاریزون مانیتور کنید که جابهاتون توی چه مرحله ای از اجرا قرار دارن چند بار به خطا خوردن و چند تا از جابها تموم شدن و خیلی چیزای دیگه که توی همین پست میبینیدشون.

توی لاراول میتونید با سیستم های مدیریت صف معروف مثل ردیس کار کنید و کافیه فقط یه کانکشن به ردیس بزنید و بقیه خیلی ساده هست ولی برای مدیریت صف های ساده و سبک میتونید از همون صف دیتابیس استفاده کنید.

استفاده از صف دیتابیس در لاراول

اولین کاری که باید بکنید اینه که جدول هاتون رو ایجاد کنید. برای اینکار توی محیط ترمینال لاراول و توی روت پروژه این دستورها رو ران کنید:

php artisan queue:table
php artisan queue:failed-table
php artisan migrate

با دستور اول یه مایگریشن ایجاد میشه برای ذخیره جاب های صف ها. با دستور دوم یه مایگریشن ایجاد میشه برای جابهایی که به خطا خوردن و با دستور سوم…

خب حالا بذارید یه جاب خیلی ساده بنویسیم. با دستور زیر میتونید یک جاب جدید درست کنید. جابها توی فولدر app/Jobs قرار میگیرن که اگه دستور زیر رو ران کنید فولدر خودش ساخته میشه.

php artisan make:job MyFirstJob

الان اگه فایل MyFirstJob.php رو باز کنید یچی مثل این میبینید:

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;

class MyFristJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        //
    }
}

داخل متد handle این رو بنویسید:

$seconds = rand(0, 15);
         sleep($seconds);
         Log::info('job ran ' . Carbon::now()->toDateTimeString());

توی این قسمت گفتم که یک عدد تصادفی بین ۰ تا ۱۵ تولید کن و بعد به اندازه اون عدده ثانیه صبر کن و یه خروجی رو توی فایل لاگ بنویس و فرض کنید اون اسلیپ شدنه یه جاب سنگین مثل پردازش ویدیو و… هست. و یادتون نره که Carbon و Log رو use کنید.

گذاشتن جاب در صف

برای گذاشتن جاب توی صف در لاراول کافیه متد dispatch از اون جاب رو صدا بزنیم. برای مثال توی فایل routes/web.php قطعه کد زیر رو اضافه کنید:

Route::get('put', function () {
   \App\Jobs\MyFristJob::dispatch();
});

گفتم هر بار روت /put با متد get فراخوانی شد یدونه از این جاب رو بذار توی صف. پس کافیه روت /put رو get کنید. بعد از این کار باید توی جدول jobs یه رکورد ایجاد شده باشه. فیلد هایی که جدول jobs داره خیلی پیچیده نیستن و با یه نگاه میتونید ببینید که داره چه اتفاقی میفته.

صف های ایجاد شده در دیتابیس لاراول

تنظیمات درایور صف در لاراول

خب حالا نوبت این رسیده که صف رو توی پروژه ران کنیم. ولی قبلش یه سر به فایل config/queue.php بزنیم. اولین چیزی که احتمالا میبینید خط زیر هست:

'default' => env('QUEUE_CONNECTION', 'sync'),

این خط میگه که کانکشن پیشفرض من برای اجرای صف ها چی باشه که بصورت پیشفرض روی درایور sync تنظیم شده. درایور sync که یکم پایینتر هم اینجا و هم توی فایل کانفیگ میبینیدش میگه هر جابی که دیسپچ شد همون لحظه شروع بشه به ران شدن. در واقع اصلا صف حساب نمیشه.

 'sync' => [
            'driver' => 'sync',
        ],

یسری کانشکن هم پایین تر از اون و اینسری فقط توی فایل کانفیگ میبینید 🙂 اونها کانکشن های مختلف به سیستم های مدیریت صف مختلف هستن. ما توی اینجا کانکشن پیشفرض رو تنظیمش میکنیم روی database و پایین تر در قسمت failed میتونید مشخص کنید که جابهایی که با خطا مواجه میشن کجا ذخیره بشن.

اجرای یک صف در لاراول

برای اجرای صف خیلی ساده دستور زیر رو اجرا کنید:

php artisan queue:work

این دستور شروع میکنه دونه دونه جابهایی که توی جدول jobs هستند رو اجرا میکنه. و بعد از تموم شدن جابهای صف، بازم منتظر میمونه که جاب جدید dispatch شه.

اجرای صف ها در لاراول

اگه فایل لاگتون رو چک کنید باید یچیزی مثل این رو ببینید که نشون میده هر جاب بعد از جاب قبلی اجرا شده.

خوشحال میشم اگه نکته ای هست کامنت کنید. موفق باشید.

نصب MongoDB و استفاده در لاراول

نوشته‌شده در توسط .

اگه قصد دارید به MongoDB روی بیارید کاره بدی نمیکنید ولی یکم دنگ و فنگ داره این قضیه. توی این پست میخوام تجربه خودم رو از مهاجرت از مای اس کیو ال به مانگو دی بی رو بگم. البته خیلی تجربه عمیقی نیست و فعلا در حد معرفی و نحوه نصب و رفع مشکلات اولیه میگم. بعد ها به جاهای خفنش رسیدم بازم در مورد اونا هم میگم.

توجه: همه کارایی که من میگم روی Ubuntu 18.04.3 تست شده و بقیه جاها رو نمیدونم.

بعد از اینکه لاراول رو نصب کردید خیلی راحت با دستور زیر مانگو رو هم نصب کنید (البته برای این بخش بهتره از طریق داکیومنت مانگو دی بی پیش برید).

sudo apt-get install -y mongodb-org 

معروف ترین پکیجی که لاراولی ها برای کار با مانگو باهاش کار میکنن jenssegers/laravel-mongodb هست که میتونید نصبش کنید ولی قبلش باید یکار دیگه هم بکنید و اون هم اینه که درایور PHP برای مانگو رو نصب کنید. من چند تا راه رو رفتم و این پست از داکیومنت PHP واسم جواب داد. در واقع اگه PECL داشته باشید خیلی راحت با این کامند کارتون راه میفته:

sudo pecl install mongodb

حالا پکیج jenssegers رو نصب کنید و کارایی که گفته رو انجام بدید. حالا قانونا باید همه چی اوکی باشه ولی بازم واسه من اوکی نبود. اولین کاری که میکنید یبار سرویس مانگو رو استارت کنید.

sudo service mongod start

اگه دستور بالا بدون هیچ پیامی اجرا شد ینی کارتون درسته. بعد باید وارد اینترفیس مانگو بشید و یه یوزر بسازید. برای این کار mongo رو تایپ کنید و اینتر کنید. یه دیتابیس به صورت زیر بسازید.

use test

دستور بالا اگه دیتابیس رو داشته باشید سلکتش میکنه اگه نداشته باشید میسازه. چقد کامند خوبیه 🙂 برای اینکه دیتابیس ها رو ببینید هم میتونید از دستور زیر استفاده کنید.

show dbs

حالا با دستور زیر میتونید یوزر های این دیتابیس رو ببینید:

db.getUsers()

توجه کنید که db نباید اسم دیتابیستون باشه و همین db باید باشه. اگه یوزری ندارید باید بسازیدش. برای این کار این شکلی میتونید عمل کنید:

db.createUser({user:'admin', pwd:'Aa123', roles: [{role:"readWrite", db:"test"}]})

و حالا برید کانکشن دیتابیس رو توی فایل database.php بسازید. و بعدش دیفالت کانکشن رو هم تغییر بدید.

    'mongodb' => [
        'driver'   => 'mongodb',
        'host'     => env('DB_HOST', 'localhost'),
        'port'     => env('DB_PORT', 27017),
        'database' => 'test',
        'options'  => [
            'database' => 'admin' 
        ]
    ],
'default' => env('DB_CONNECTION', 'mongodb'),

من یوزر و پسورد رو هم اینجا گذاشتم و اررور داد. شما اون یکی دو تا رو توی فایل .env بذارید.

DB_CONNECTION=mongodb
DB_HOST=localhost
DB_PORT=27017
DB_DATABASE=test
DB_USERNAME=admin
DB_PASSWORD=Aa123

و حالا php artisan migrate کنید. ایشالا که همه چی اوکی باشه.

اگه از قبل دیتابیس مانگو دی بی دارید و میخواید ایمپورتش کنید یه راه ساده استفاده از روش زیر هست که کل کالکشن هاتون رو ایمپورت میکنه:

mongorestore --db test ./orgdictionary

استفاده از Eloquent در لاراول با MongoDB

اگه میخواید از Eloquent توی لاراول استفاده کنید باید مدل هاتون رو از Eloquent پکیج اسکتند کنید. بعنوان مثال برای مدل Post بصورت زیر عمل کنید:

use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
class Post extends Eloquent
{

}

حالا میتونید توی کنترلرتون از App\Post::all() و… استفاده کنید. البته برای جدول یوزر باید یه حرکت بیشتر هم بکنید و اون اینه:

use Illuminate\Contracts\Auth\Authenticatable;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;

use Illuminate\Auth\Authenticatable as AuthenticableTrait;
class User extends Eloquent implements Authenticatable
{
use Notifiable;
use AuthenticableTrait;
{

این باعث میشه که توی مرحله Auth هم به اررور نخورید و مثل حالت معمولی با Auth::attempt لاگین کنید.

نصب پکیج لاراول بدون ssh

نوشته‌شده در توسط .

البته عنوان خیلی سکسی شد چون مجبور بودم کوتاه باشه ولی منظورم اینه که اگه مثلا دسترسی ssh نداریم ولی دسترسی آپلود داریم بتونیم پکیج رو نصب کنیم.

آپلود پوشه‌ی ریپازیتوری

من خودم یک سایت داشتم روی هاست اشتراکی و لازم داشتم که یک پکیج که تازه نصب کردم رو آپلود کنم. برای این کار خیلی راحت اول رفتم توی فولدر vendor و پوشه‌ی ریپازیتوری رو آپلود کردم. مثلا من پکیج barryvdh/cors رو نصب کرده بودم و رفتم پیداش کردم از روتی که داره.

آپدیت کردن فایل autoload

همونطور که میدونید ما بعد از نصب یک پکیج یه dump-autoload میکنیم که فایل های autoload رو آپدیت کنه کامپوزر. ولی چون دسترسی نداریم میریم و فایل vendor/composer/autoload_psr4.php رو پیدا میکنیم و خط هایی که توی فایل لوکالمون هستن رو بهش اضافه میکنیم. برای مثال توی پکیج cors که من نصب کردم خط های زیر بهش ربط داشتن و من آپدیت کردم.

‘Barryvdh\Cors\’ => array($vendorDir . ‘/barryvdh/laravel-cors/src’),
‘Asm89\Stack\’ => array($vendorDir . ‘/asm89/stack-cors/src/Asm89/Stack’),

فکر میکنم برای شما هم همین کار کنه. البته من خیلی دقیق نمیدونم کامپوزر چجوری کار میکنه و ممکنه برای یسری پکیج های دیگه این شکلی کار نکنه. تست کنید.

خطای لاراول: Prepared statement needs to be re-prepared

نوشته‌شده در توسط .
خطای لاراول

من هر چند وقت یبار میبینم سایت بالا نمیاد و لاگ رو چک میکنم میبینم یچی مثل خط زیر رو پروژه ی لاراول لاگ داده:

SQLSTATE[HY000]: General error: 1615 Prepared statement needs to be re-prepared (SQL:...

من نه میدونم این اررور چیه و نه میدونم از کجا میاد یهو. تا جایی که خوندم یه باگه. برای حلش این کار رو خوندم که میشه انجام داد. به کانکشن مای اس کیو ال این آپشن رو اضافه کنید و احتمالا مشکل حل خواهد شد.

'options'   => [
				\PDO::ATTR_EMULATE_PREPARES => true
			]

یعنی الان کانکشنتون باید یچی مثل این بشه:

'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
			'options'   => [
				\PDO::ATTR_EMULATE_PREPARES => true
			]
        ],

من کلی گشتم تا پیدا کردم گفتم دیگه شما نگردید 🙂

استخدام برنامه نویس لاراول

نوشته‌شده در توسط .

لاراول یه فریمورک خیلی محبوب و ترند برای زبان پی اچ پی هست، این فریمورک این روزها خیلی سر و صدا کرده و آگهی های استخدام برنامه نویس لاراول رو میتونید تو خیلی جاها ببینید. اگه شما هم برنامه نویس PHP و فریمورک Laravel هستید اینجا فرصت مناسبی هست که بتونید یه کار خوب، بدون دردسر و با درآمد خوب پیدا کنید. یا اگه دنبال برنامه نویس خوب هستید که کارتون رو بی درد سر به اون بسپرید و کار خوب تحویل بگیرید با ما تماس بگیرید.

نحوه ی همکاری چگونه خواهد بود؟

از نظر من در حال حاضر با وضعیت فعلی جامعه، استخدام شدن در یک شرکت با حقوق ثابت خیلی به صرفه نیست. تهران جای خوبی برای کار هست ولی برای زندگی نه! و شهرستان ها هم برعکس. من خودم یه فریلنسر هستم و با توجه به حجم بالای پروژه ای که بهم پیشنهاد میشه ترجیه میدم با همکاری شما کارهام رو انجام بدم، با مبلغ مناسب و مدیریت دقیق و حساب شده…

اگه برنامه نویس لاراول هستید (الزاما نه خیلی حرفه ای) با من تماس بگیرید که بتونیم همکاریمون رو شروع کنیم. اگه لاراول دوست دارید با من تماس بگیرید که بگم چیکار کنید که چند وقت دیگه بتونیم کار کنیم و نهایتا اگه پروژه ای دارید که میخواید به برنامه نویس واستون انجام بده، با من تماس بگیرید، بگید و تحویل بگیرید :)))

برنامه نویس حرفه ای لاراول!

نوشته‌شده در توسط .

لاراول یه فریمورک خیلی محبوب پی اچ پی هست و هر روز به تعداد پروژه هایی که باهاش کار میشه اضافه میشه و برنامه نویس های زیادی هم به سمت این فریمورک کشیده میشن، یاد گرفتن لاراول نسبتا آسون هست و خیلی از برنامه نویس ها که PHP رو خیلی هم خوب بلد نیستن خیلی زود میرن سمت لاراول و این باعث میشه که خیلی درک درستی از نحوه کار این فریمورک نداشته باشن و بعد ها پروژه ها رو نیمه کاره رها کنند و ما این روزها شاهد پروژه های ناقص خیلی زیادی هستیم که به ما مراجعه میکنند و میگن یه برنامه نویس لاراول داشتیم که کارمون رو نیمه کاره رها کرد و میخوایم یکی دیگه تکمیلش کنه…

لاراول یک فریمورک برای توسعه سریع و تمیز

من و گروهی که باهاش کار میکنم سالهاست که با فریمورک لاراول بصورت تجاری و حرفه ای کار میکنیم و میتونیم نیاز های شما رو در این زمنیه رفع کنیم. اگر قصد شروع یک استارت آپ جدید رو دارید و یا قصد دارید کار لاراولی قبلیتون رو توسعه بدید با ما تماس بگیرید که شروع کنیم کارمون رو.

منابع یادگیری فریمورک لاراول

نوشته‌شده در توسط .
منابع یادگیری لاراول

امروز دیگه خیلی حس هیچ کاری نبود گفتم یچی بنویسم که اینجا خالی نباشه، کلا این روزا خیلی خوب شدم، هر چند چرت و پرت، ولی باز خوبه که مینویسم. لاراول فریمورک خیلی خوبه که به زبان PHP نوشته شده که میتونید ازش استفاده کنید و اپلیکیشن های تحت وبتون رو خیلی سریع و آسون و بدون دردسر راه بندازید. اگه تازه دارید شروع میکنید که لاراول یاد بگیرید باید بدونید که کارتون زیادم سخت نیست و اگه PHP بلدید خیلی راحت میتونید یاد بگیرید لاراول رو هم. میتونید از طریق منابع زیر لاراول رو یاد بگیرید:

داکیومنت های خود سایت لاراول

سایت خود لاراول بهترین جا هست که ازش یاد بگیرید. البته میتونید بعنوان مرجع داشته باشیدش و ازش استفاده کنید : https://laravel.com/docs/5.5 و میتونید هر جور که دوست دارید یه نسخه آفلاین ازش تهیه کنید و استفاده کنید ازش

ویدئو های آموزشی لاراکستس

سایت لاراکستس توسط یکی از توسعه دهنده های لاراول به نام جفری وی مدیریت میشه و کورس های آموزشیش بی نظیر هست در مقایسه با ویدئو هایی که برخی از دوستان وطنی ارائه میدن و… آدرس سایت : http://laracasts.com

سایت لاراول نیوز

اکه میخواید از روند تغییرات و اخبار لاراول با خیر باشید سایت لاراول نیوز رو دنبال کنید : https://laravel-news.com

سایت لاراول تریکس

این سایتم کلی تریک لاراولی داره و میتونه به دردتون بخوره، فقط من نمیدونم چرا ایرانیها بیشتر از همه استفاده میکنن از این سایت(الکساش روی ایران ست شده) : http://laravel-tricks.com

سابتهای ایرانی از جمله سایت git.ir هم کلی ویدئو گذاشتن که میتونید دانلودشون کنید اگه به حلال و حروم اعتقاد ندارید 🙂

و کلی منبع دیگه که میتونید با سرچ برسید بهشون

ساختن توابع Helper در لاراول

نوشته‌شده در توسط .

هلپر در لاراول به توابعی گفته میشن که همه جای پروژه بهشون دسترسی داریم بدون اینکه هر بار لودشون کنیم.

لاراول کلی هلپر خوب بصورت آماده داره که خیلی از کارهارو براتون آسون میکنه، مثل کار با آرایه ها، فایل ها، رشته ها، روت ها و یکی از پر کاربرترینشون هم همین dd  خودمون :). شما میتونید هلپر های خودتون رو بصورت دستی هم تعریف کنید و با کمپوزر بصورت خودکار لودشون کنید.

نحوه ساختن فایل Helper در لاراول

همونطور که گفتم هلپر ها تابع هستند پس باید داخل یه فایل نوشته بشن. لاراول هیچ دایرکتوری خاصی برای helper ها در نظر نگرفته و شما میتونید بصورت دلخواه براش جا در نظر بگیرید. من مثلا داخل app/Http/Helpers  رو برای این کار در نظر میگیرم و داخلش فایل main.php  رو قرار میدم.

لود خودکار فایل ها در لاراول با کمپوزر

یکی از کاربردهای باحال کمپوزر جدا از مدیریت نیازمندی ها، همین autoload هست که به شما این امکان رو میده که در ران تایم فایل های دلخواهتون رو توی کدتون لود کنید بدون اینکه اون بالا بنویسید require_once any.php . در پروژه لاراولتون یه فایل دارید به اسم composer.json ، توی این فایل یه key به اسم autoload وجود داره و داخلش میتونید مشخص کنید که چه فایل هایی به autoload اضافه بشن. یه مثال واستون میزنم که کاملا بدونید چی به چیه :

"autoload": {
    "files": [
        "app/Http/Helpers/main.php"
    ],
    "classmap": [
        "database/seeds",
        "database/factories"
    ],
    "psr-4": {
        "App\\": "app/"
    }
},

به کمپوزر گفتم که فایل main.php  رو بذار توی autoload. حالا باید به کامپوزر بگیم که فایل های autoload رو از اول بسازه، برای این کار توی روت پروژه این کامند رو اجرا کنید :

composer dump-autoload

حالا main.php  و فانکشن هایی که داخلش تعریف میکنید همیشه در دسترس خواهند بود.

تعریف توابع helper در لاراول

توابع هلپر مثل بقیه توابع هستند فقط باید حواسمون باشه که تابع دیگه ای رو رونوشت نکنیم :

if (! function_exists('test')) {
    function test($key, $default = null) {
        // ...
    }
}

هلپر ها خیلی(خیلی خیلی) جاها به دردتون میخورن ولی حواستون باشه که هر چی که لازم بود رو نذارید توی هلپر و فقط توابعی که خیلی ازشون استفاده میکنید رو بذارید داخلش و لذت ببرید.

 

موفق باشید 🙂

یک ربات ساده تلگرام با لاراول

نوشته‌شده در توسط .

امروز میخوام یه اطلاعات کلی در مورد ربات تلگرام و یه ربات ساده با تلگرام رو بهتون بگم. تلگرام یه api داره که میتونید یه ربات بر اساس همین api بنویسید و به رباتتون بگید که در حالتهای مختلف چیکارا بکنه. ربات در اصل اون پشت به سرور شما وصله و در نتیجه شما هر دستوری رو میتونید به ربات بگید و ربات دستور رو به سرور ارسال کنه و جواب رو برگردونه…

تصور غلط در مورد ربات تلگرام

یه سری از افراد چون به اسم ربات میرسن، فکر میکنن که ربات دستش برای همه چیز بازه و من خیلی ها رو دیدم که رباتی میخوان که یک خواسته نامعقول رو انجام بده. ربات با api تلگرام کار میکنه و هر درخواستی که توی api تلگرام وجود داره رو میشه با ربات صادر کرد و نه بیشتر. برای اطلاعات بیشتر میتونید به مستندات تلگرام در مورد ربات تلگرام مراجعه کنید.

ساخت یک ربات خام در تلگرام

عملیات ساخت ربات تلگرام خودش از طریق یه ربات انجام میشه، بات فادر اسم رباتی هست که این کار رو انجام میده و برای دیدن اون میتونید به این آیدی مراجعه کنید : @BotFather، نحوه ساخت ربات با botfather خیلی مشخصه و نیازی به توضیح نیست. بعد از ساخت ربات یه توکن به ربات تعلق میگیره و از این به بعد این توکن بعنوان شناسه ربات شما استفاده میشه. توکن شما یه چیزی شبیه ۱۲۳۴۵۶:ABC-DEF1234ghIkl-zyx57W2v1u123ew11 هست که توی این نوشته به اختصار از <token>  برای نشون دادنش استفاده میکنیم.

نحوه ی اهراز هویت ربات توسط تلگرام

همه درخواست های شما به آدرس زیر ارسال خواهد شد :

https://api.telegram.org/bot<token>/METHOD_NAME

که METHOD_NAME  نام متدی هست که قراره در هر درخواست ازش استفاده کنید.

شما میتونید با هر زبان سمت سروری بک اند رباتتون رو بنویسید. برای اینکه درخواست هایی که از طریق کاربران ربات به ربات ارسال شدن رو دریافت کنید دو روش دارید:

  1. دریافت آپدیت ها با ارسال لحظه ای درخواست از طرف شما
  2. تنظیم وب هوک برای دریافت آپدیت بدون ارسال درخواست لحظه ای

در روش اول شما به صورت بروت فورس هر چند لحظه یکبار درخواست ارسال میکنید و پیام های جدیدی ک اومدن رو دریافت میکنید ولی در روش دوم یه وب هوک تنظیم میکنید و هرلحظه که پیامی به ربات اومد اون هوک در اسکریپت شما اجرا میشه و اینجوری دیگ خیلی خوش بحالتونه. چون درخواست ها همون لحظه به دستتون میرسن ولی یه خوبی که روش اول داره اینه که نیازی به داشتن ssl روی هاست نیست ولی روش دوم ssl میخواد.

درخواست getUpdates ربات تلگرام

در این روش شما offset و limit رو میدید و آپدیت های مورد نظر رو دریافت میکنید. توجه کنید که offset بر اساس آیدی پیام ارسال میشه نه چیز دیگری.

تنظیم setWebhook برای ربات تلگرام

برای این کار شما باید آدرسی که میخواید هوک روی اون fire بشه رو میفرستید و تلگرام به محض دریافت پیام جدید درخواست رو به این آدرس ارسال میکنه. برای ارسال درخواست هاتون میتونید از افزونه postman برای کروم استفاده کنید که کارتون رو راحتتر میکنه. توجه داشت باشید که برای این کار شما حتما باید گواهینامه ssl داشته باشید و آدرس بصورت https ارسال بشه.

استفاده از پکیج irazasyed/telegram-bot-sdk

اگه توی لاراول دارید کار میکنید میتونید از irazasyed/telegram-bot-sdk استفاده کنید. این پکیج کارتون رو خیلی راحتتر میکنه… بعد از نصب این پکیج میتونید برای تست اون از طریق زیر عمل کنید

ابتدا توی فایل .env  توکنی که برای ربات دریافت کردید رو بصورت زیر وارد کنید

TELEGRAM_BOT_TOKEN=<token>

و توی کدتون هم یچیزی مثل این رو بنویسید

$telegram = new \Telegram\Bot\Api();
$response = $telegram->getMe();
	
$botId = $response->getId();
$firstName = $response->getFirstName();
$username = $response->getUsername();
	
dd($botId, $firstName, $username);

در صورتی که اطلاعات ربات رو دریافت کردید ینی ربات شما درست ایجاد شده است. تنها کاری که الان باید بکنید اینه که یه route رو از csrf protection در بیارید و اون روت رو بعنوان url برای هوکتون در نظر بگیرید و درخواست ها رو هندل بکنید.