PDA

View Full Version : سوال: ارسال عکس و یا یک متن در تلگرام به وسیله آی دی و یا شماره تلفن



Rezvane.R
سه شنبه 07 آذر 1396, 23:30 عصر
سلام.
من می خوام توی صفحه محصول یک دکمه بذارم که با کلیک کردن روی اون عکس محصول وارد تلگرام بشه و اون عکس به آیدی یا شماره تلفنی که براش تعریف کردیم ارسال بشه.
کسی می تونه راهنماببم کنه چطوری باید این کارو بکنم ؟؟

amir_T_2008
چهارشنبه 08 آذر 1396, 09:54 صبح
http://www.hypersource.ir/post.aspx?id=189

Tekyegah
چهارشنبه 08 آذر 1396, 23:28 عصر
سلام
من خودم کار نکردم بصورت حرفه ای که بتونم دقیقا به سوالتون پاسخ بدم اما میتونم تو مسیر درست قرارتون بدم .

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

بعد از زدن start گزینه newbot رو بزنید ، سپس یه اسم برای روباتتون انتخاب کنید ، اصولش هم این هست که آخرش باید عبارت bot باشه ، مثلا test_bot

سپس بهتون یه token میده ، مثلا برای من این هست:

Use this token to access the HTTP API:
482554744:AAF2WEjHxdl9R48MkLjgqfok_###############

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

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

خب تا اینجا ما روباتمون رو داریم و حالا میخوایم برای شخصی مطلبی ارسال کنیم .

اصول ارسال مطلب این هست که شما به username پیام نمیدید ، پیام به این شکل هست که شما به userID یا channelID پیام ارسال میکنید . یعنی باید کد خاص اون کاربر تلگرام یا کانال تلگرام رو داشته باشید .
برای بدست آوردن userID یا channelID به این روبات یه پیام ارسال کنید .
مثلا با تلگرام خودت به این روبات یه پیام ارسال کن : ChannelIdBot
چیزی که بهت برمیگردونه مثلا برای من این هست :

User ID:
111703847

نکته : اگه برای کانال میخوای با روباتت مطلب ارسال کنید . باید یکی از پیام های ارسالی کانال رو براش forward کنی . channelID کانال ها یک عدد منفی هست ، مثلا :

Channel ID:
-1001185621102

http://upload-free.ir/MediaUploader/hamed/ASP/telegram_channelid.jpg

خب ...
حالا ما هم token رو داریم
هم channelID

الان روباتت میدونه میخواد به کی پیام ارسال کنه ... میتونی باهاش به اکانت خودت پیام ارسال کنی ، هم میتونی باهاش به کانالت پیام ارسال کنی .

حالا میریم سراغ کد ( به زبان شیرین VB )

ابتدا این 3 کتابخونه رو به صفحه اضافه کنید :

Imports System
Imports System.Net
Imports System.IO
توی #C باید بجای Imports اگه اشتباه نکنم از using استفاده کنید .
یه button توی صفحه قرار بدید و رویداد کلیکش رو اینطوری بنویسید :


Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim token As String = "482554744:AAF2WEjHxdl9R48MkLjgqfok_###############"
Dim channelId As String = "-1001185621102"
'Dim channelId As String = "111703847"
Dim message As String = "<b>bold</b>,<i>italic</i>, <em>italic</em><a href='http://www.example.com/'>inline URL</a>"
Dim uri As String = String.Format("https://api.telegram.org/bot{0}/sendMessage?chat_id={1}&text={2}&parse_mode=HTML", token, channelId, message)

Dim client As WebClient = New WebClient()
Dim responseString As String = client.DownloadString(uri)

Response.Write(responseString)

End Sub

حالا کد هم که مشخصه چی هست اما واسه توضیح :
Token و ChannelID رو که توضیح دادم .

message هم که متن پیامتون هست که میتونه بصورت text باشه و اگه خواستین به صورت HTML ارسال کنید فقط از tag های مشخص شده ای میشه استفاده کرد . مثلا کد <br> رو اگه بزنید یا img رو ، خطا میگیره .

uri هم که آدرس API تلگرام هست که اطلاعات token و channelID و message رو در بر میگیره .
و همچنین میتونید option ها خاصی رو بهش اضافه کنید .
مثلا من برای ارسال HTML عبارت : parse_mode=HTML رو اضافه کردم .

حالا باید درخواست رو به API ارسال کنید . برای این کار فقط کافیه آدرسی که توی uri هست رو باز کنید ( یعنی میتونید اطلاعات رو دستی هم در address bar مرورگر بزنید و مطلب ارسال شه )

که من از WebClient استفاده کردم .

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

محتوای برگشتی به این شکل هست :

{"ok":true,"result":{"message_id":16,"chat":{"id":-1001185621102,"title":"Hhh","username":"hamedabdjsndbx","type":"channel"},"date":1511986763,"text":"bold,italic, italicinline URL","entities":
[{"offset":0,"length":4,"type":"bold"},{"offset":5,"length":6,"type":"italic"},{"offset":13,"length":6,"type":"italic"},
{"offset":19,"length":10,"type":"text_link","url":"http://www.example.com/"}]}}
که وضعیت درخواست ارسالی ، چندمین پیام ارسالی روبات هست ، به کدوم channelID ارسال کردی ، اسم گروه چی بود ( من به کانال تلگرام ارسال کردم ) ، چی اطلاعاتی ارسال کردی و ...

خب ، تا اینجا من در مورد send message توضیح دادم .

برای ارسال عکس به آموزش خود تلگرام یه سر بزن : https://core.telegram.org/bots/api#sendphoto

برای ارسال عکس کافیه این تغییرات رو ایجاد کنی در کد بالا :

Dim message As String = "http://upload-free.ir/MediaUploader/hamed/ASP/telegram_channelid.jpg"
Dim uri As String = String.Format("https://api.telegram.org/bot{0}/sendPhoto?chat_id={1}&photo={2}", token, channelId, message)

( سوالی بود در خدمتم )

Rezvane.R
سه شنبه 05 دی 1396, 22:48 عصر
خیلی خیلی ممنووون .