Skip to content

UploadFile#

Test

עבור שיטת UploadFile, אנו ממליצים להשתמש במארח mediaUrl מהמסוף

השיטה נועדה להעלות קובץ לאחסון הענן, אותו ניתן לשלוח באמצעות sendFileByUrl שִׁיטָה. זה גם מאפשר לך להימנע משגיאות בקבלת קבצים מאחסון חיצוני ולהאיץ את שליחת הודעות, למשל, בסקריפט דיוור.

דרך חלופית לשלוח קובץ על ידי העלאה מהדיסק: sendFileByUpload.

מומלץ להשתמש בשיטה בעת שליחת הודעות מאותו סוג:

  1. בשיטת UploadFile העלו את הקובץ הנדרש לאחסון Green-API, קבלו קישור לקובץ בתגובה.
  2. השתמש ב- SendFileByUrl שיטה לשליחה באמצעות הקישור שהתקבל.

משך חיי הקישור הוא 15 ימים.

גודל הקובץ המרבי שניתן לשלוח הוא 100 MB.

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

בַּקָשָׁה#

כדי להוריד קובץ, עליך להגיש בקשה לכתובת:

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

ראה את לפני שמתחילים קטע כדי להשיג את פרמטרי השאילתה 'mediaUrl', 'idInstance' ו-'apiTokenInstance'.

כותרות בקשה#

פָּרָמֶטֶר הֶכְרֵחִי תֵאוּר
Content-Type כֵּן סוג הקובץ בהתאם ל- רשימה של סוגי MIME . (אם סוג הקובץ אינו מופיע ברשימה, 'GA-Filename' מועבר במקום המחרוזת הזו)
GA-Filename לֹא שם הקובץ עם הסיומת, אם הקובץ אינו ברשימת סוגי MIME. לדוגמה, קבצים כמו .go או .py. (אם סוג הקובץ תואם ל רְשִׁימָה, the string is not transmitted, only Content-Type is used)

אם המערכת לא יכולה לקבוע את סוג הקובץ, הוא יישלח עם סוג ברירת המחדל (קובץ בינארי): .bin

בקש פרמטרים#

פָּרָמֶטֶר הֶכְרֵחִי הֶכְרֵחִי תֵאוּר
file binary כֵּן העלה קובץ

טקסט בקשה לדוגמה#

עליך לציין את הקובץ עצמו כגוף הבקשה.

תְגוּבָה#

שדות תגובה#

שָׂדֶה סוּג תֵאוּר
urlFile string קישור לקובץ שהועלה
כיצד להשיג מידע על המועד האחרון להעלאת קבצים

כדי לקבל את המידע על המועד האחרון להעלאת הקובץ, עליך לאחזר מידע מכותרת הקישור

כדי לעשות זאת:

  1. קבל את הקישור לקובץ
  2. בצע בקשת 'HEAD' עם הקישור שהתקבל

    head-request

3.מהתוצאה, אחזר את הערך של השדה 'X-Amz-Expiration' 4. הערך שהתקבל מציין עד מתי הקישור יהיה זמין.

כדוגמה, השדה X-Amz-Expiration, מכיל את הנתונים expiry-date="Fri, 31 May 2024 00:00:00 GMT". מה שמציין שהקישור זמין עד 31/05/2024 00:00:00 לפי אזור הזמן של GMT.

<center>
![head-result](../../assets/expiration-eng.png)
</center>

דוגמה תגובה#

{
     "urlFile": "https://sw-media-out.storage.yandexcloud.net/1101123456/c1aabd48-c1c2-49b1-8f2d-f575a41777be.jpg"
}

שגיאות בהעלאת קובץ#

לרשימה של שגיאות נפוצות עבור כל השיטות, עיין ב- שגיאות נפוצות סָעִיף

קוד HTTP מזהה שגיאה תֵאוּר
400 file should not be empty המשתמש שלח קובץ ריק. הקובץ שהועלה לא יכול להיות ריק.
413 request entity too large מתרחש בעת שליחת קבצים בעיבוד 1C (גרסה 8.3.22.1923). פתרון אפשרי: שינוי גרסת 1C.

דוגמאות קוד#

דוגמה לקוד באמצעות שיטות uploadFile + sendFileByUrl#

<?php
// Need to use SDK https://github.com/green-api/whatsapp-api-client-php
require './vendor/autoload.php';

use GreenApi\RestApi\GreenApiClient;

define( "ID_INSTANCE", "1101123456" );
define( "API_TOKEN_INSTANCE", "d75b3a66374942c5b3c019c698abc2067e151558acbd412345" );

$greenApi = new GreenApiClient( ID_INSTANCE, API_TOKEN_INSTANCE, 'http://127.0.0.1:8080' );

$result = $greenApi->sending->uploadFile(
     'C:\Games\PicFromDisk.png'
);

print_r( $result->data );

$result = $greenApi->sending->sendFileByUrl(
     '11001234567@c.us',
     $result->data->urlFile,
     'googlelogo_color_272x92dp.png',
     'Google logo'
);

print_r( $result->data );

דוגמאות קוד uploadFile#

import requests
url = "{{mediaUrl}}/waInstance{{idInstance}}/uploadFile/{{apiTokenInstance}}"

files = [
('file', ('window.jpg', open('C:/window.jpg','rb'),'image/jpeg'))
]
headers = {
'Content-Type': 'image/jpeg'
}

response = requests.post(url, files=files, headers=headers)

print(response.text.encode('utf8'))
curl --location '{{mediaUrl}}/{{idInstance}}/uploadFile/{{apiTokenInstance}}' \
--header 'Content-Type: image/jpeg' \
--data-binary "@/Users/user/Desktop/fileExample.jpeg"
var file = new File("/Users/user/Desktop/fileExample.jpeg");
var restTemplate = new RestTemplate();
var requestUrl = new StringBuilder();
requestUrl
    .append({{mediaUrl}})
    .append("/waInstance").append({{idInstance}})
    .append("/uploadFile/")
    .append({{apiTokenInstance}});

var byteArrayResource = new ByteArrayResource(Files.readAllBytes(file.toPath()));

var headers = new HttpHeaders();
headers.setContentType(MediaTypeFactory.getMediaType(file.getName())
    .orElse(MediaType.APPLICATION_OCTET_STREAM));

var requestEntity = new HttpEntity<>(byteArrayResource, 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("/uploadFile/")
    .append({{apiTokenInstance}});

var response = Unirest.post(requestUrl.toString())
    .header("Content-Type", Files.probeContentType(file.toPath()))
    .body(Files.readAllBytes(file.toPath()))
    .asString();

System.out.println(response);
<?php
// Need to use SDK https://github.com/green-api/whatsapp-api-client-php
require './vendor/autoload.php';

use GreenApi\RestApi\GreenApiClient;

define( "ID_INSTANCE", "1101123456" );
define( "API_TOKEN_INSTANCE", "d75b3a66374942c5b3c019c698abc2067e151558acbd412345" );

$greenApi = new GreenApiClient( ID_INSTANCE, API_TOKEN_INSTANCE );

$result = $greenApi->sending->uploadFile(
    'C:\Games\PicFromDisk.png'
);

print_r( $result->data );