Перейти к содержанию

SendMessage#

Test Postman Apidog

Метод предназначен для отправки текстового сообщения в личный или групповой чат. Сообщение будет добавлено в очередь на отправку. Сообщение на отправку хранится 24 часа в очереди и будет отправлено сразу же после авторизации телефона. Скорость отправки сообщений из очереди регулирует параметр Интервал отправки сообщений.

Видеоинструкция#

Отправка сообщения себе

При отправке сообщений себе на номер или в группу с одним участником, статус сообщения будет sent (одна галочка).

Запрос#

Для отправки текстового сообщения требуется выполнить запрос по адресу:

POST
{{apiUrl}}/waInstance{{idInstance}}/sendMessage/{{apiTokenInstance}}

Для получения параметров запроса apiUrl, idInstance и apiTokenInstance обратитесь к разделу Перед началом работы.

Параметры запроса#

Параметр Тип Обязательный Описание
chatId string Да Идентификатор чата
message string Да Текст сообщения.
Поддерживаются символы emoji 😃. Требуется использовать кодировку UTF-8 без BOM.
quotedMessageId string Нет Идентификатор цитируемого сообщения. При заполнении параметра сообщение отправится с цитированием указанного сообщения чата.
Цитирование сообщения возможно только из того же чата, в который производится отправка.
Для отправки сообщений из другого чата используется метод ForwardMessages
linkPreview boolean Нет Параметр включает отображение превью и описание ссылки. По умолчанию включен.
Принимает значения: true/false
Превью ссылки не будет добавлено, если оно весит более 2Мб
typePreview string Нет Размер превью. Возможные значения: large для большого превью и small для маленького.
Если typePreview: large и передается jpegThumbnail, вместо urlFile, то превью ссылки будет маленькое
customPreview object Нет Объект пользовательского превью

Поля объекта customPreview:

Поле Тип Обязательный Описание
title string Да Заголовок превью (до 300 символов)
description string Нет Описание (до 300 символов)
link string Нет Доменное имя сайта со ссылкой (до 300 символов)
urlFile string Нет Ссылка на файл с картинкой для создания большого превью. Рекомендуемый формат изображения - jpeg
jpegThumbnail string Нет Предпросмотр изображения в base64
typingTime integer Нет Время показа уведомления набора сообщения в чате собеседника. Время ограничено значениями от 1 до 20 секунд. Если поле отсутствует, то набор будет продолжаться в течение 1 секунды.

Максимальная длина текстового сообщения составляет 20000 символов. Форматирование текста производится в соответствии с правилами, указанными в нашей статье.

Цитирование сообщений

Для корректной работы с механизмом цитирования сообщений система должна знать о сообщении, которое будет процитировано. Убедится о том что сообщение доступно к цитированию можно запросив метод журналирования getMessage, если сообщение отсутствует в системе, то цитировать такое сообщение невозможно.

  • Для цитирования входящих сообщений необходимо включить настройку Получать уведомления о входящих сообщениях и файлах.

  • Для цитирования исходящих сообщений отправленных с телефона, включите настройку Получать уведомления о сообщениях, отправленных с телефона.
    Так сообщения будут попадать в систему и их можно будет цитировать.

Установку настроек можно сделать методом SetSettings или через личный кабинет.

Пример тела запроса#

Отправка сообщения в личный чат:

{
    "chatId": "79876543210@c.us",
    "message": "I use Green-API to send this message to you!"
}

Отправка сообщения в групповой чат:

{
    "chatId": "120363043968066561@g.us",
    "message": "I use Green-API to send this message to you!"
}

Отправка сообщения с цитированием:

{
    "chatId": "79876543210@с.us",
    "message": "I use Green-API to send this message to you!",
    "quotedMessageId": "361B0E63F2FDF95903B6A9C9A102F34B"
}

Отправка сообщения с большим пользовательским превью:

{
    "chatId": "79876543210@c.us",
    "message": "ссылка 1: https://green-api.com/docs/api/sending/SendMessage/ \n ссылка 2: https://green-api.com",
    "linkPreview": true,
    "typePreview": "large", 
    "customPreview": { 
        "title": "Пользовательское превью", 
        "description": "Уау", 
        "link": "https://green-api.com", 
        "urlFile": "https://storage.yandexcloud.net/green-api.com/logo/Logo_GREEN-API.jpg"
    }
}

Отправка сообщения с маленьким пользовательским превью:

{
    "chatId": "79876543210@c.us",
    "message": "ссылка 1: https://green-api.com/docs/api/sending/SendMessage/ \n ссылка 2: https://green-api.com",
    "linkPreview": true,
    "typePreview": "small", 
    "customPreview": { 
        "title": "Пользовательское превью", 
        "description": "Уау", 
        "link": "https://green-api.com", 
        "jpegThumbnail": "https://storage.yandexcloud.net/green-api.com/logo/Logo_GREEN-API.jpg"
    }
}

Ответ#

Поля ответа#

Поле Тип Описание
idMessage string Идентификатор отправленного сообщения

Пример тела ответа#

{
    "idMessage": "3EB0C767D097B7C7C030"
}

Ошибки SendMessage#

Перечень общих для всех методов ошибок смотрите в разделе Стандартные ошибки

Код HTTP Идентификатор ошибки Описание
400 Bad Request
Validation failed
Ошибка валидации
400 Validation failed.
Details: 'message' length must be less than or equal to 20000 characters long
Текст сообщения должен быть меньше или равен 20000 символам
500 request entity too large Превышение допустимой длины json (>100кб)

Отправка с неверным идентификатором цитируемого сообщения

В случае некорректного указания quotedMessageId, система вернёт код 200 и id отправляемого сообщения, но оно не будет доставлено получателю.

Примеры кода#

import requests

url = "{{apiUrl}}/waInstance{{idInstance}}/sendMessage/{{apiTokenInstance}}"

payload = {
    "chatId": "79876543210@c.us",
    "message": "I use Green-API to send this message to you!"
}
headers = {
'Content-Type': 'application/json'
}

response = requests.post(url, json=payload, headers=headers)

print(response.text.encode('utf8'))
<?php
//The apiUrl, idInstance and apiTokenInstance values are available in console, double brackets must be removed
$url = '{{apiUrl}}/waInstance{{idInstance}}/sendMessage/{{apiTokenInstance}}';

//chatId is the number to send the message to (@c.us for private chats, @g.us for group chats)
$data = array(
    'chatId' => '71234567890@c.us',
    'message' => 'Hello World'
);

$options = array(
    'http' => array(
        'header' => "Content-Type: application/json\r\n",
        'method' => 'POST',
        'content' => json_encode($data)
    )
);

$context = stream_context_create($options);

$response = file_get_contents($url, false, $context);

echo $response;
?>
curl --location '{{apiUrl}}/waInstance{{idInstance}}/sendMessage/{{apiTokenInstance}}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "chatId": "71234567890@c.us",
    "message": "Hello World"
}'
var restTemplate = new RestTemplate();
var requestUrl = new StringBuilder();
requestUrl
    .append({{apiUrl}})
    .append("/waInstance").append({{idInstance}})
    .append("/sendMessage/")
    .append({{apiTokenInstance}});

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

var jsonBody = "{\r\n\t\"chatId\": \"79876543210@c.us\",\r\n\t\"message\": \"I use Green-API to send this message to you!\"\r\n}";

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

var response = restTemplate.exchange(requestUrl.toString(), HttpMethod.POST, requestEntity, String.class);
System.out.println(response);
var requestUrl = new StringBuilder();
requestUrl
    .append({{apiUrl}})
    .append("/waInstance").append({{idInstance}})
    .append("/sendMessage/")
    .append({{apiTokenInstance}});

var response = Unirest.post(requestUrl.toString())
    .header("Content-Type", "application/json")
    .body("{\r\n\t\"chatId\": \"79876543210@c.us\",\r\n\t\"message\": \"I use Green-API to send this message to you!\"\r\n}")
    .asString();

System.out.println(response);
Sub SendMessage()
Dim URL As String
Dim RequestBody As String
Dim http As Object

' The apiUrl, idInstance and apiTokenInstance values are available in console, double brackets must be removed
URL = "{{apiUrl}}/waInstance{{idInstance}}/sendMessage/{{apiTokenInstance}}"

' chatId is the number to send the message to (@c.us for private chats, @g.us for group chats)
RequestBody = "{""chatId"":""71234567890@c.us"",""message"":""Hello World""}"

Set http = CreateObject("MSXML2.XMLHTTP")

With http
    .Open "POST", URL, False
    .setRequestHeader "Content-Type", "application/json"
    .send RequestBody
End With

Set http = Nothing

End Sub
program sendMessage;

{$APPTYPE CONSOLE}

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

var
HttpClient: TNetHTTPClient;
RequestBody: TStringStream;
RequestHeaders: TNetHeaders;
Response: IHTTPResponse;
EndpointURL, ID_INSTANCE, API_TOKEN_INSTANCE: string;

begin
ID_INSTANCE := '110100001';
API_TOKEN_INSTANCE := 'd75b3a66374942c5b3c019c698abc2067e151558acbd451234';

EndpointURL := 'https://api.green-api.com/waInstance' + ID_INSTANCE + '/sendMessage/' + API_TOKEN_INSTANCE;

HttpClient := TNetHTTPClient.Create(nil);
RequestBody := TStringStream.Create('{ "chatId": "71234567890@c.us", "message": "test" }', TEncoding.UTF8);
RequestHeaders := [
    TNetHeader.Create('Content-Type', 'application/json')
];

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

    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;
RequestBody.Free;

end.