Skip to content

SendFileByUpload#

Test

עבור שיטת SendFileByUpload, אנו ממליצים להשתמש במארח media.green-api.com

השיטה מכוונת לשליחת קובץ שהועלה באמצעות טופס (טופס-נתונים). ההודעה תתווסף לתור השליחה, בתגובה תקבלו קישור לקובץ שהורד. קצב שליחת ההודעות מהתור מנוהל על ידי עיכוב בשליחת הודעה פָּרָמֶטֶר.

הקישור תקף ל-15 יום.

ניתן לעשות שימוש חוזר בקישור באמצעות SendFileByUrl שִׁיטָה.

Vקבצי אידיאו, אודיו ותמונה הזמינים לצפייה והאזנה נשלחים כמו ב-WhatsApp במצב מקורי. מסמכים נשלחים באותו אופן כמו ב-WhatsApp במצב מקורי. סוג הקובץ היוצא ושיטת השליחה נקבעים לפי סיומת הקובץ. תיאור נוסף רק לתמונות ולווידאו.

הגודל המרבי של קבצים יוצאים הוא 100 MB.

שליחת קבצים מרובים עם בקשה אחת אינה אפשרית. נשלח קובץ אחד עם הודעה אחת בלבד. היכולת לשלוח מספר קבצים בו זמנית נוצרת רק בצד של אפליקציית WhatsApp.

אין הגבלות על רזולוציות תמונה. עם זאת, בעת שליחת תמונות דרך ה-API ברזולוציה העולה על 3000x3000 פיקסלים, תמונות ממוזערות לא יופקו.

בַּקָשָׁה#

כדי לשלוח קובץ, עליך לבצע בקשה בכתובת:

POST
{{mediaUrl}}/waInstance{{idInstance}}/sendFileByUpload/{{apiTokenInstance}}
TEST

לפרמטרים של בקשת mediaUrl, idInstance ו-apiTokenInstance, עיין ב לפני שמתחילים section.

בקש פרמטרים#

פָּרָמֶטֶר סוּג הֶכְרֵחִי תֵאוּר
chatId string כֵּן זיהוי צ'אט
file file כֵּן קובץ יוצא
fileName string לֹא שם הקובץ. חייב להכיל סיומת קובץ. דורש קידוד UTF-8 ללא BOM. לְדוּגמָה: test.jpg
caption string לֹא כיתוב קובץ. כיתוב נוסף לסרטון, תמונות. אורך השדה המרבי הוא 20000 תווים.
quotedMessageId string לֹא זיהוי הודעה מצוטטת. אם קיימת, ההודעה תישלח בציטוט הודעת הצ'אט שצוינה.

הגיע הזמן לשלוח קובץ

שליחת קבצים מתרחשת במספר שלבים:

  1. קבלו את הקובץ
  2. העלאת קובץ לשרת WhatsApp
  3. בקשה לשלוח קובץ לוואטסאפ

זמן שליחת הקובץ תלוי בגודל הקובץ, מהירות קבלת הקובץ ועיבוד הקובץ בוואטסאפ. בהתאם לגורמים אלה, הזמן לשליחת קובץ יכול להשתנות בין 1 ל-20 שניות.

בקש אפשרות תשובה#

בקש דוגמאות

import requests

url = "{{mediaUrl}}/waInstance{{idInstance}}/sendFileByUpload/{{apiTokenInstance}}"

payload = {'chatId': '11001234567@c.us',
'caption': 'Описание'}
files = [
  ('file', ('window.jpg', open('C:/window.jpg','rb'),'image/jpeg'))
]
headers= {}

response = requests.post(url, data=payload, files=files)

print(response.text.encode('utf8'))
curl --location '{{mediaUrl}}/waInstance{{idInstance}}/sendFileByUpload/{{apiTokenInstance}}' \
--form 'chatId="12345678910@c.us"' \
--form 'file=@"/Users/you/files/file.jpeg"' \
--form 'fileName="file.jpg"'
var restTemplate = new RestTemplate();
var requestUrl = new StringBuilder();
requestUrl
    .append({{mediaUrl}})
    .append("/waInstance").append({{idInstance}})
    .append("/sendFileByUpload/")
    .append({{apiTokenInstance}});

var headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);

var form = new LinkedMultiValueMap<>();
    form.add("chatId", "12345678910@c.us");
    form.add("file", new FileSystemResource(new File("/Users/you/files/file.jpeg")));
    form.add("fileName", file.jpg);
    form.add("caption", "Описание");
    form.add("quotedMessageId", "BAE5F4886F6F2D05");

var requestEntity = new HttpEntity<>(form, headers);

var response = restTemplate.exchange(requestUrl.toString(), HttpMethod.POST, requestEntity, String.class);
System.out.println(response);
var file = new File("/Users/user/Desktop/fileExample.jpeg");
var requestUrl = new StringBuilder();
requestUrl
    .append({{mediaUrl}})
    .append("/waInstance").append({{idInstance}})
    .append("/sendFileByUpload/")
    .append({{apiTokenInstance}});

var form = new HashMap<String, Object>();
    form.put("chatId", dto.getChatId());
    form.put("file", dto.getFile());
    form.put("fileName", dto.getFileName());
    form.put("caption", dto.getCaption());
    form.put("quotedMessageId", dto.getQuotedMessageId());

var response = Unirest.post(requestUrl.toString())
    .fields(form)
    .asString();

System.out.println(response);
program sendFileByUpload;

{$APPTYPE CONSOLE}

uses
  System.SysUtils,
  System.Classes, System.Net.HttpClient, System.Net.Mime, System.Net.URLClient, System.Net.HttpClientComponent;

var
  HttpClient: TNetHTTPClient;
  Response: IHTTPResponse;
  FormData: TMultipartFormData;
  EndpointURL, MEDIA_URL, ID_INSTANCE, API_TOKEN_INSTANCE: string;

begin
  MEDIA_URL := 'https://media.green-api.com';
  ID_INSTANCE := '110100001';
  API_TOKEN_INSTANCE := 'd75b3a66374942c5b3c019c698abc2067e151558acbd451234';

  EndpointURL := MEDIA_URL +'/waInstance' + ID_INSTANCE + '/sendFileByUpload/' + API_TOKEN_INSTANCE;

  HttpClient := TNetHTTPClient.Create(nil);

  FormData := TMultipartFormData.Create();
  FormData.AddField('chatId', '71234567890@c.us');
  FormData.AddField('caption', 'test');
  FormData.AddFile('file', 'C:\tmp\bp.png');

  try
    Response := HTTPClient.Post(EndpointURL, FormData, nil);

    if Response.StatusCode = 200 then
      Writeln('[Response]: ' + Response.ContentAsString)
    else
      Writeln('[ERROR ' + IntToStr(Response.StatusCode) + ']:' + Response.StatusText + '' + Response.ContentAsString);

    readln;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;

  HttpClient.Free;
  FormData.Free;

end.

Response#

Response parameters#

Parameter Type Description
idMessage string Sent message Id
urlFile string Link to file (link expires 15 days)

Response body example#

{
    "idMessage": "3EB0C767D097B7C7C030",
    "urlFile": "https://sw-media-out.storage.yandexcloud.net/1101776123/c1aabd48-c1c2-49b1-8f2d-f575a41777be.jpg"
}

SendFileByUpload errors#

For a list of errors common to all methods, refer to Common errors section

HTTP code Error ID Description
400 file should not be empty The user submitted an empty file. The uploaded file must not be empty.
413 request entity too large Occurs when sending files in 1C processing (version 8.3.22.1923). Possible solution: Change 1C version.