Problem using webwrite to send image in telegram API
조회 수: 15 (최근 30일)
이전 댓글 표시
Hey everyone,
i need to send some messages with image throuout the REST API of telegram.
here is my code for text sending, and it works correctly.
token = '1769425585:AAGPOrIaLTKYr9THQDkehlwrjdxfiJxHNuw';
requestType = 'sendMessage?';
id = 54573663;
url = ['https://api.telegram.org/bot' token '/' requestType 'chat_id=' num2str(id) '&text=' msg];
options = weboptions('ContentType','json','UserAgent','Abolfazl','RequestMethod','post','ArrayFormat','json');
resp
onse = webwrite(url,options);
but the problem is with regard to sending photos
here is the python code for photo sending.
the code uses a dictionary for the photo section but I don't know how to convert it to the Matlab code.
here is the python code,
import requests
import json
bot_token = 'BOT TOKEN'
chat_id = "CHAT ID"
file = r"C:\Users\name\OneDrive\Desktop\Capture.PNG"
files = {
'photo': open(file, 'rb')
}
message = ('https://api.telegram.org/bot'+ bot_token + '/sendPhoto?chat_id='
+ chat_id)
send = requests.post(message, files = files)
I will appreciate your help.
kind regards,
Abolfazl Nejatian
댓글 수: 0
채택된 답변
Kojiro Saito
2021년 5월 11일
There are MATLAB codes for Telegram Bot APIs.
In this URL, sendPhoto function in telegram_bot.m is very helpful for your case.
I've changed the code so that it fits you as below.
bot_token = "XXX";
chat_id = "XXX";
url = "https://api.telegram.org/bot" + bot_token + "/sendPhoto?chat_id=" + chat_id;
photoname = 'XXX.png';
% Create file provider
fileProvider = matlab.net.http.io.FileProvider(photoname);
% Set media type to multipart/form-data
mediaType = matlab.net.http.MediaType('multipart/form-data');
% Set HTTP header
header = matlab.net.http.field.AcceptField(mediaType);
% Crete multipart form provider
formProvider = matlab.net.http.io.MultipartFormProvider('photo', fileProvider);
% Create HTTP request message
request = matlab.net.http.RequestMessage(matlab.net.http.RequestMethod.POST, header, formProvider);
% Set HTTP options and enable SavePayload for debugging
options = matlab.net.http.HTTPOptions('SavePayload', true);
% Send HTTP request
resp = request.send(url, options);
% Get result
if resp.StatusCode == 200
disp('Uploading is successful!')
response = resp.Body.Data;
end
At the beggining, I tried webwrite, but using matlab.net.http classes works well in this case.
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!