telegram-php-2

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

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

دریافت پیام از کاربر در ربات تلگرام

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

ویدئو آموزشی حاوی فایل هایی که در طول آموزش کدنویسی میشوند نیز خواهد بود.

آموزش ارسال پیام به ربات تلگرام

ارسال پیام به ربات تلگرام با استفاده از متد sendMessage

پس از اینکه پیام را از کاربر دریافت نمودیم و آی دی او در تلگرام را دانستیم میتوانید متناسب با متن دریافتی یک پیام برای او ارسال کنیم. بعنوان مثال اگر کاربر عبارت “سلام” را برای ربات ما فرستاد ربات هم میتواند از جواب او بگوید “سلام از ماست!” و به همین شکل پاسخ های از پیش تعیین شده برای ربات تعریف کنیم.

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

  • parse_mode یعنی آیا پیام ارسالی حاوی کدهای HTML هست یا نه، اگر این گزینه فعال باشد تگ های HTML در متن ارسالی اجرا میشوند و میتوان از تگ های b,i,a,pre,code در پیام ارسالی استفاده نمود یعنی مثلا کلمات را بولد شده نمایش داد.
  • disable_web_page_preview با فعال کردن این گزینه باکس اضافی که چکیده ای از آدرس اینترنتی را به کاربر نمایش میدهد، نشان داده نمیشود. این قابلیت زمانیکه یک لینک برای کاربران ارسال میکنید کاربرد دارد.
  • disable_notification ارسال notification به کاربر را غیرفعال میکند، بعنوان مثال اگر پیام شما قرار است نیمه شب به کاربران ارسال شود میتوانید آن را بصورت silent (بدون صدا و ویبره) به آنها ارسال کنید.
  • reply_to_message_id پیام ارسالی توسط ربات تلگرام میتواند در پاسخ به یکی از پیام های قبلی در چت شما با کاربر باشد، همانطور که کاربران عادی میتوانند پیام خود را در پاسخ به یک پیام ارسال کنند.
  • reply_markup پیام شما میتواند همراه با یک کیبورد اختصاصی به کاربران ارسال شود که در ادامه آموزش بصورت کامل در مورد آن صحبت خواهیم کرد.
افزودن کیبورد اختصاصی به ربات تلگرام

تغییر کیبورد کاربران در ربات تلگرام

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

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

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

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

استفاده از inline keyboards در ربات تلگرام

نسخه های قدیمی تر اندروید و ios کیبوردهای اختصاصی تلگرام را نمایش نمیدهند ولی inline keyboards بر روی هر گوشی دارای تلگرامی قابل استفاده است، ظاهر زیبایی دارد و قابلیت های جدیدی در مقایسه با کیبوردهای عادی به آن اضافه شده است.

فیلم آموزش ارسال پیام به ربات تلگرام در 35 دقیقه و با حجم 175 مگابایت ارائه شده است.

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*
*

دیدگاه ها

    • امین اسماعیلی

      سلام دوست عزیز
      بله به زودی قسمت های بعدی تهیه و منتشر میشن، تا اینجا رباتی ساختید؟ بنظرتون مبحث بعدی در مورد چی باید باشه؟

    • علی حسین شهابی

      بعله تا اینجا یه ربات درست کردم تقریبا کارم رو راه انداخته و شدیدا دنبال مباحث جدیدم جناب اسماعیلی عزیز

    • امین اسماعیلی

      بله حتما به زودی منتشر میشه، یکم درگیر مسائل کاری بودم.

  1. mo paliz

    با سلام و خدا قوت
    چطور می توان شماره موبایل افرادی که برای یک ربات متن اراسال کرده اند را تشخیص داد

    پاسخ دادن
    • امین اسماعیلی

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

  2. mo paliz

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

    پاسخ دادن
    • امین اسماعیلی

      سلام دوست عزیز
      بطور حتم کاربر برای ادامه کار باید با ربات شما ارتباط برقرار کنه، با اولین پیامی که به ربات ارسال کنه میتونه کیبورد را هم دریافت کنه.

  3. mo paliz

    با سلام
    چطور می توانم در پاسخ یک متن ارسالی از طریق کاربر ، ربات من ترکیبی از اعداد و ایکون وشکل در قالب دو یا چند سر به کاربر ارسال نمود.

    پاسخ دادن
    • امین اسماعیلی

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

  4. مجید آی تی

    من یه ربات ساختم با همین آموزشها فقط میخوام از emoji استفاده کنم توی کیبورد ربات. چجوری باید این کار رو انجام بدم؟
    راستی نحوه آموزش عالی بود. مرسی.

    پاسخ دادن
    • امین اسماعیلی

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

  5. علی حسین شهابی

    سلام مهندس
    میخوام دکمه های کیبوردم یه value دلخواه برگردونن بهم.مثلا وقتی روی دیکمه کلیک کرد , عدد ۵ رو بهم بگردونه…. لطفا راهنمایی کنید مرسی

    پاسخ دادن
    • امین اسماعیلی

      سلام دوست عزیز
      متاسفانه چنین قابلیتی وجود نداره. البته توی inline_keyboard هست و بصورت callback data برمیگردونه

    • امین اسماعیلی

      اگر کل مجموعه رو خریداری کنید 20 درصد تخفیف دریافت میکنید

  6. محمدرضا ملایی

    سلام ، من دو تا مشکل دارم
    1) از teletter استفاده می کنم و ربات خیلی دیر جواب میده ، مثلا حدود 15 ثانیه برای هر پیام طول میده تا پاسخی به کاربر بده
    2) متن های چند خطی رو وقتی از طریق sendMessage می فرستم برای کاربر همه رو تو یک خط نشون میده و به جای این که بیاد خط پایین ، یک کاراکتر _ در متن می گذاره.

    پاسخ دادن
    • امین اسماعیلی

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

  7. ابوالفضل خطیب

    با سلام
    من دو قسمت پیش رو دیدم و در حال آموزش این بخش به مشکل برخوردم.
    در ابتدا توضیح دهم که من یک هاست لینوکس با دامنه com و یک سایت word-press دارم (imenrun.com)
    مشکل اصلی اینجاست که هر کاری میکنم طبق دستورات ابتدای آموزش نمی توانم از ربات برای خودم پیام ارسال کنم. (با url مطابق جلسه پیش می توانم)
    اما نکته ای که وجود دارد اینکه شما به ftp سایت teletter متصل می شوید اما من به ftp سایت خودم. آیا مشکل از اینجاست؟ اگر بله من از کجا اطلاعات ftp این سایت رو داشته باشم؟
    ممنون

    پاسخ دادن
    • امین اسماعیلی

      سلام دوست عزیز
      اینکه من به ftp سایت teletter متصل میشم برای اینه که من روی این سایت تست کردم لازم نیست شما هم به سایت من متصل بشید. باید به سایت خود وصل بشید.
      پیشنهاد میکنم عینا فایل مربوط به این مرحله را در هاست خود قرار دهید و با تغییر token و chat_id فانکشن های مختلف را تست کنید. سعی کنید با ارسال یک پیام متنی ساده و بدون کیبورد آغاز کنید.

  8. ابوالفضل خطیب

    با سلام
    بنده دقیقا همین کاری که شما فرمودید رو انجام دادم اما هنوز در ارسال پیام ساده (نه با کیبورد) مشکل دارم.
    یک پوشه به نام phlnbot در زیر مجموعه public_html درست کردم و پوشه telegram.php رو اونجا کپی کردم.

    این هم کد مربوطه:

    ***

    از این URL هم token و chat_id رو تست کردم ارسال پیام درست انجام می شود:

    ***
    این هم آدرس teletter که گرفتم:

    ***
    نمی دانم مشکل از کجاست!!!
    لطفا راهنمایی فرمایید

    پاسخ دادن
    • امین اسماعیلی

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

  9. ابوالفضل خطیب

    با سلام
    با یک اکانت تلتر میشه دو آدرس ثبت کرد یا ادرس قبلی رو اصلاح کرد؟ من هرچی میگردم چیزی بابت این موضوع تو اکانتم پیدا نمی کنم
    باتشکر

    پاسخ دادن
    • امین اسماعیلی

      سلام دوست عزیز
      در حال حاضر خیر. میتونید ادیت کنید ولی حذف نه

  10. محسن

    با سلام و خسته نباشید.بنده طبق گفته شما رباتو ساختم و webhook رو دقیق ست کردم و تو فایل telegram.php شما توکن و چت آیدی خودم رو اصلاح کردم و تو تلتر هم آدرس دقیق فایل رو دادم.اما با ربات نمیتونم هیچ پیامی حتی بدون کیبورد اختصاصی ارسال کنم.لطفا راهنمایی کنید

    پاسخ دادن
    • امین اسماعیلی

      سلام دوست عزیز
      امکان ایجاد دسترسی به کدهای خودتون دارید که من بتونم بررسی کنم؟

  11. mohsen farjami

    دقیقا کد های شما رو وارد کردم اما رفتم فولدر محل کدها و دیدم ارور لاگی با متن زیر تولید شده.لطفا راهنمایی کنید
    file_get_contents(): https:// wrapper is disabled in the server configuration by allow_url_fopen=0 in …

    پاسخ دادن
    • امین اسماعیلی

      مشخصا تابع file_get_contents توی سرور شما غیرفعال است

  12. امیرحسین بینش پژوه

    سلام خسته نباشید
    وقتی با inline keyboards کار میکنیم کاربر میتونه چند دکمه رو بزنه یعنی مثلا من یه سوالی میپرسم با دو دکمه “اره” و “نه” میتونه جواب بده. کاربر به هر دلیلی هر دو دکمه رو میزنه ولی من میخام اولین جوابش رو ثبت کنم و جواب های بعدیش دیگه بررسی نشه ایا این امکان هست که کاربر یک بار جواب بده؟
    اگه هست یا با کد نویسی میشه اینکارو کرد ممنون میشم راهنمایی کنین 🙂
    موفق باشین

    پاسخ دادن
    • امین اسماعیلی

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

  13. mohammadrezaei

    سلام و عرض ادب
    شما در این آموزش روش دریافت پاسخ های مختلف با پیام های متفاوت رو با if فرمودید. ولی چطور برای هر پیام، کیبورد متفاوتی ارسال کنیم ؟
    ممنون میشم دقیق راهنمایی بفرمایید. چون من به php مسلط نیستم.
    سپاس

    پاسخ دادن
    • امین اسماعیلی

      سلام دوست عزیز
      همونطور که متن پیام توی if اومده میتونید کد مربوط به کیبورد رو بیارید داخل شرط و برای هر حالت کیبورد متفاوتی بسازید

  14. mohammadrezaei

    سلام. وقت بخیر
    میخواستم خواهش کنم در صورت امکان ساخت نظرسنجی در ربات رو هم آموزش بدین.
    ممنون

    پاسخ دادن
    • امین اسماعیلی

      سلام دوست عزیز
      ممکنه بعداز پایان دوره مثال های کاربردی رو هم توی آموزش بذارم

  15. علی

    سلام . در تابع websima_keyboardmessage ، از parse_mode=HTML استفاده میکنم اما تگ های b و u در متن ارسالی اعمال نمیشه و فقط i اعمال می شود .
    $url = ‘https://api.telegram.org/bot’.$token.’/sendMessage?chat_id=’.$user_id.’&text=’.$message.’&parse_mode=HTML&reply_markup=’.$encodedMarkup;

    پاسخ دادن
    • امین اسماعیلی

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