View Full Version : سوال: ارسال مطلب به کانال تگرام یا به یک کاربر از طریق برنامه نویسی جاوا وب
InformationTechnology
شنبه 11 اردیبهشت 1395, 05:42 صبح
سلام.
من چجوری میتونم با جاوا وب و jsp یه برنامه بنویسم که یه چیزی رو بفرسته روی یه کانال تلگرام خاص یا اینکه بفرسته برای یک کاربر خاص؟!!! کدها و API هاش چی هستن؟! برای شروع باید چیکار کرد؟
vahid-p
شنبه 11 اردیبهشت 1395, 20:55 عصر
یه راهش ساخت یک ربات تلگرامی و ارتباط با اون هست.
اینکار خیلی سادست و چون خودم انجام دادم (البته با php نه جاوا) میدونم که خیلی ساده انجام میشه.
تنها کاری که لازمه انجام بدید با HttpsURLConnection میتونی ریکوئست ارسال کنی. هر چند برای ارسال نیازی به HttpsURLConnection نیست و با HttpURLConnection میشه انچام داد اما برای استفاده از WebHook تلگرام (هر وقت ارسال و دریافت مورد نیاز باشه) باید از Https استفاده کنی.
خب بقیش میشه کار با پارامترهای ارسالی و اینکه چه چیزهایی باید بنویسی.
برای شروع لازمه اول یک بات بسازی. اینم نحوه ساختش: https://core.telegram.org/bots#create-a-new-bot
بعد کافیه بات ساخته شده رو به ادمین های کانالت اضافه کنی.
بعدش انواع api های http-based بات تلگرام رو میتونید باهاش کار کنید: https://core.telegram.org/bots/api
برای شروع سعی کنید از لینکی که دادم یک message رو ارسال کنید. برای اینکار شما باید ریکوئست http بفرستید که حاوی مقادیر زیر باشه (مثل ارسال یک فرم در مد POST یا GET)
برای ارسال پیام متنی sendMessage تو اون صفحه پیدا کنید:
sendMessage
Use this method to send text messages. On success, the sent Message (https://core.telegram.org/bots/api#message) is returned.
Parameters
Type
Required
Description
chat_id
Integer or String
Yes
Unique identifier for the target chat or username of the target channel (in the format @channelusername)
text
String
Yes
Text of the message to be sent
parse_mode
String
Optional
Send Markdown (https://core.telegram.org/bots/api#markdown-style) or HTML (https://core.telegram.org/bots/api#html-style), if you want Telegram apps to show bold, italic, fixed-width text or inline URLs (https://core.telegram.org/bots/api#formatting-options) in your bot's message.
disable_web_page_preview
Boolean
Optional
Disables link previews for links in this message
disable_notification
Boolean
Optional
Sends the message silently (https://telegram.org/blog/channels-2-0#silent-messages). iOS users will not receive a notification, Android users will receive a notification with no sound.
reply_to_message_id
Integer
Optional
If the message is a reply, ID of the original message
reply_markup
InlineKeyboardMarkup (https://core.telegram.org/bots/api#inlinekeyboardmarkup) or ReplyKeyboardMarkup (https://core.telegram.org/bots/api#replykeyboardmarkup) or ReplyKeyboardHide (https://core.telegram.org/bots/api#replykeyboardhide) or ForceReply (https://core.telegram.org/bots/api#forcereply)
Optional
Additional interface options. A JSON-serialized object for an inline keyboard (https://core.telegram.org/bots#inline-keyboards), custom reply keyboard (https://core.telegram.org/bots#keyboards), instructions to hide reply keyboard or to force a reply from the user.
chat_id همون اسم کانالتون هست با یک علامت @ اولش.
آدرسی که باید این رکوئست ارسال بشه: https://api.telegram.org/bot<token>/METHOD_NAME
که توکن رو هنگام ساختن بات بهتون میده و نام متد هم اینجا sendmessage است.
هر چقدر تونستید بنویسید و کدش رو اینجا قرار بدید فقط توکنتون رو در کدها عوض کنید (چون با داشتن توکن شما هر کسی میتونه از طریق ربات تلگرامیتون در کانالتون مطلب بذاره)
InformationTechnology
سه شنبه 14 اردیبهشت 1395, 06:30 صبح
از توضیحاتتون متشکرم.
این ها رو تونستم انجام بدم. ولی برای استارت کد زدن دچار مشکلم. مثلا نمیدونم چجوری ریکوئست ها رو برای تلگرام بفرستم یا وب هوک چیه؟ یا حتما باید وب هوک استفاده کنیم؟
vahid-p
سه شنبه 14 اردیبهشت 1395, 07:31 صبح
برای ارسال ریکوئست نیازی به وب هوک نیست.
کدتون رو اینجا قرار بدید.
InformationTechnology
چهارشنبه 12 خرداد 1395, 13:42 عصر
برای ارسال ریکوئست نیازی به وب هوک نیست.
کدتون رو اینجا قرار بدید.
خب پس وب هوک برای چیه؟ برای اینکه مقادیری که از تلگرام برگردانده (!!! return) میشه رو بگیرم بدون اینکه url عوض بشه چی؟ اون وب هوک میخاد؟
vahid-p
چهارشنبه 12 خرداد 1395, 16:23 عصر
خب پس وب هوک برای چیه؟ برای اینکه مقادیری که از تلگرام برگردانده (!!! return) میشه رو بگیرم بدون اینکه url عوض بشه چی؟ اون وب هوک میخاد؟
در هر request شما یک response خواهید داشت. در نتیجه حتی برای request ای مثل sendMessage هم response ای خواهید داشت که مثلا شماره پیام، موفقیت آمیز بودن و... با فرمت json بهتون میده.
اما وب هوک کی به کار میاد؟
فرض کنید شما رباتی میخواهید داشته باشید که کاربرها بتونن برای ربات پیام ارسال کنند نه فقط ربات برای اونها (یا برای کانال). در نتیجه سرور شما از کجا متوجه بشه پیامی براش اومده یا نه؟ در چنین مواقعی از وب هوک استفاده میکنید که هر وقت کاربری از طریق نرم افزار تلگرام پیامی به ربات شما (واقع در سرور تلگرام) ارسال کرد، سرور تلگرام request ای حاوی اطلاعات لازم رو به سرور شما میده و سرور شما متوجه میشه کاربری درخواستی ارسال کرده و به اون request یک پیام response ارسال میکنه. یه جورایی گوش به زنگه! اما برای ارسال مطلب به کانال نیازی به گوش به زنگ بودن نیست، پس نیازی به وب هوک هم نیست.
پس request از سمت سرور شما به سرور تلگرام و ارسال response از طرف سرور تلگرام => نیازی به webhook نیست.
اما request از سمت سرور تلگرام به سرور شما و ارسال response از طرف سرور شما => به webhook نیاز دارید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.