MATLAB Answers

Problem using webwrite to send image in telegram API

조회 수: 168(최근 30일)
Abolfazl Nejatian
Abolfazl Nejatian 2021년 5월 7일
댓글: Jogger 2021년 6월 29일
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

채택된 답변

Kojiro Saito
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.
  댓글 수: 7
Jogger
Jogger 2021년 6월 29일
@Kojiro Saito, I hope you had a look to above link.

댓글을 달려면 로그인하십시오.

추가 답변(0개)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by