Problem using webwrite to send image in telegram API

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 日

4 投票

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 件のコメント

Abolfazl Nejatian
Abolfazl Nejatian 2021 年 5 月 12 日
Dear Kojiro,
thank you so much for your time and help.
kind regards,
Abolfazl
Life is Wonderful
Life is Wonderful 2021 年 6 月 28 日
Kojiro Saito
Kojiro Saito 2021 年 6 月 28 日
Could you create another question so as to make clear of your issue? I'm confused why JobStorageLocation, MATLAB Compiler SDK and MATLAB Production Server are mentioned.
Life is Wonderful
Life is Wonderful 2021 年 6 月 28 日
編集済み: Life is Wonderful 2021 年 6 月 28 日
I have created a new thread query / Question and I am closing the current one
Kojiro Saito
Kojiro Saito 2021 年 6 月 28 日
It seems that question #866860 has been deleted.
Life is Wonderful
Life is Wonderful 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