Hi zusammen,
ich würde gerne eine Datei Uploaden und mit dem Telegram Bot versenden. Doch leider bekomme ich dies nicht hin. Habe jetzt schon viele Sachen durchprobiert aber bin nicht zum erfolg gekommen.
Eine Nachricht kann ich über einen HTTP Request versenden, das Funktioniert. Aber sobald es um eine Datei mit Upload geht scheitert es.
Der Request für die Text-Nachricht sieht so aus.
Spoiler anzeigen
$BotToken =XXXXXXXXXXXXX:XXXXXXXXXXXXX
$sendto = 1837568
$sendtext= "Hallo"
https://api.telegram.org/bot' & $BotToken & '/sendmessage?chat_id=' & $sendto & '&text=' & $sendtext
Jetzt meine Versuche eine Datei Hochzuladen:
Spoiler anzeigen
Func _Test1()
Global Const $fTestMode = false ; testmode will delete images after 15 minutes
Global Const $sAPIURL = "/bot1718sdfer7:AAGVRavnvnvnv/sendphoto?chat_id=183783345"
Global Const $sURL = "api.telegram.org"
Global $hOpen = _WinHttpOpen("")
Global $hConnect = _WinHttpConnect($hOpen, $sURL)
Global $hRequest = _WinHttpOpenRequest($hConnect, "POST", $sAPIURL)
Global $sData = ""
If $fTestMode Then
$sData &= '----------darker' & @CRLF
$sData &= 'Content-Disposition: multipart/form-data; name="testMode"' & @CRLF & @CRLF
$sData &= '1' & @CRLF
EndIf
$sData &= '----------darker' & @CRLF
$sData &= 'Content-Disposition: form-data; name="xmlOutput"' & @CRLF & @CRLF
$sData &= '1' & @CRLF
$sData &= '----------darker' & @CRLF
$sData &= 'Content-Disposition: multipart/form-data; name="imageMD5"' & @CRLF & @CRLF
$sData &= StringLower(Hex(_Crypt_HashFile("C:\Users\Pictures\342_640x960_net.jpg", $CALG_MD5))) & @CRLF
$sData &= '----------darker' & @CRLF
$sData &= 'Content-Disposition: multipart/form-data; name="photo"; filename="testimage.jpg"' & @CRLF
$sData &= 'Content-Type: image/jpg' & @CRLF & @CRLF
$sData &= FileRead("C:\Users\Pictures\342_640x960_net.jpg") & @CRLF
$sData &= '----------darker--'
_WinHttpSendRequest($hRequest, "Content-Type: multipart/form-data; boundary=--------darker", Binary($sData))
_WinHttpReceiveResponse($hRequest)
$sResult = _WinHttpReadData($hRequest)
MsgBox(0, "", $sResult)
ConsoleWrite($sResult & @CRLF)
_WinHttpCloseHandle($hRequest)
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
EndFunc
Alles anzeigen
Spoiler anzeigen
Func Test2()
$sFilePath = "C:\Users\Pictures\342_640x960_iphonehdwallpapers_net.jpg"
Local $sFile = FileOpen($sFilePath, 16)
If $sFile = -1 Then
MsgBox($MB_SYSTEMMODAL, "", "An error occurred when reading the file.")
EndIf
$sFileRead = BinaryToString(FileRead($sFile))
FileClose($sFile)
$sBoundary = "mymultipartboundary"
Local $sPD
$sPD = '--' & $sBoundary & @CRLF & _
'Content-Type: form-data; charset=UTF-8' & @CRLF & @CRLF & _
'--' & $sBoundary & @CRLF & _
'Content-Disposition: form-data; name="photo"; filename="342_640x960_iphonehdwallpapers_net.jpg"' & @CRLF & @CRLF & _
'--' & $sBoundary & @CRLF & _
'Content-Type: image/jpeg' & @CRLF & _
'Content-Transfer-Encoding: binary' & @CRLF & @CRLF & _
$sFileRead & @CRLF & '--' & $sBoundary & '--' & @CRLF
;~ MsgBox(0, "", $sPD)
$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("POST", "https://api.telegram.org/bot1718348737597:AAGVRaSolrajhDi06j7u5hjotdgdge/sendphoto?chat_id=183785459", False)
$oHTTP.setRequestHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1;)")
$oHTTP.SetRequestHeader("Content-Type", 'multipart/form-data; boundary="' & $sBoundary & '"')
$oHTTP.setRequestHeader("Content-Length", StringLen($sPD))
$oHTTP.Send(BinaryToString($sPD))
$oHeaderResponses = $oHTTP.GetAllResponseHeaders()
$oReceived = $oHTTP.ResponseText
$oStatusCode = $oHTTP.Status
ConsoleWrite($oStatusCode & @CRLF)
ConsoleWrite($oReceived)
ConsoleWrite($oHeaderResponses)
EndFunc
Alles anzeigen
Der Link zur Telegram Bot API
Kann mir dabei jemand weiterhelfen? Es geht letztendlich nur darum das Telegram den Http Request an nimmt und das File Hoch lädt.
In PHP geht das wohl ganz einfach so -----> PHP SendPhoto