Problem using webwrite to send image in telegram API
    10 次查看(过去 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 个)
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Call Python from MATLAB 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!