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

SendMessage#

Test Postman Apidog

Метод предназначен для отправки текстового сообщения в чат.

Перед отправкой сообщения требуется получить Идентификатор чата из своей информационной системы, либо использовать метод CheckAccount.

Сообщение будет добавлено в очередь на отправку.

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

Также ознакомьтесь с Рекомендациями по отправке сообщений.

Для метода используются ограничения на частоту запросов в секунду.

Запрос#

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

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

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

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

Параметр Тип Обязательный Описание
chatId string Да Идентификатор чата
message string Да Текст сообщения.
Поддерживаются символы emoji 😃.
Максимальная длина текстового сообщения составляет 4000 символов. Требуется использовать кодировку UTF-8 без BOM.
typingTime integer Нет Время показа уведомления набора сообщения в чате собеседника.
Время ограничено значениями от 1000 до 20000 миллисекунд (от 1 до 20 секунд).

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

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

{
    "chatId": "10000000",
    "message": "Я использую GREEN-API для отправки этого сообщения!"
}

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

{
    "chatId": "79991234567@c.us",
    "message": "Я использую GREEN-API для отправки этого сообщения!"
}

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

{
    "chatId": "-10000000000000",
    "message": "Я использую GREEN-API для отправки этого сообщения!"
}

Ответ#

Поля ответа#

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

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

{
    "idMessage": "115206687571465794"
}

Ошибки SendMessage#

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

Код HTTP Идентификатор ошибки Описание
400 Bad Request
Validation failed
Ошибка валидации
400 Validation failed.
Details: 'message' length must be less than or equal to 4000 characters long
Текст сообщения должен быть меньше или равен 4000 символам
403 Your account is suspended На аккаунте временные ограничения (частичный запрет отправки сообщений)
Отправка возможна только на номера, сохранённые в контактах

Время окончания ограничений указано в поле ответа GetAccountSettings suspendedUntil
500 request entity too large Превышение допустимой длины json (>100кб)

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

import requests

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

payload = {
    "chatId": "10000000",
    "message": "Я использую GREEN-API для отправки этого сообщения!"
}
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}}/v3/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' => '10000000',
    'message' => 'Я использую GREEN-API для отправки этого сообщения!'
);

$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}}/v3/waInstance{{idInstance}}/sendMessage/{{apiTokenInstance}}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "chatId": "10000000",
    "message": "Я использую GREEN-API для отправки этого сообщения!"
}'
var restTemplate = new RestTemplate();
var requestUrl = new StringBuilder();
requestUrl
    .append({{apiUrl}})
    .append("/v3/waInstance").append({{idInstance}})
    .append("/sendMessage/")
    .append({{apiTokenInstance}});

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

var jsonBody = "{\r\n\t\"chatId\": \"10000000\",\r\n\t\"message\": \"Я использую GREEN-API для отправки этого сообщения!\"\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("/v3/waInstance").append({{idInstance}})
    .append("/sendMessage/")
    .append({{apiTokenInstance}});

var response = Unirest.post(requestUrl.toString())
    .header("Content-Type", "application/json")
    .body("{\r\n\t\"chatId\": \"10000000\",\r\n\t\"message\": \"Я использую GREEN-API для отправки этого сообщения!\"\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}}/v3/waInstance{{idInstance}}/sendMessage/{{apiTokenInstance}}"

' chatId is the number to send the message to (@c.us for private chats, - for group chats)
RequestBody = "{""chatId"":""10000000"",""message"":""Я использую GREEN-API для отправки этого сообщения!""}"

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/v3/waInstance' + ID_INSTANCE + '/sendMessage/' + API_TOKEN_INSTANCE;

HttpClient := TNetHTTPClient.Create(nil);
RequestBody := TStringStream.Create('{ "chatId": "10000000", "message": "Я использую GREEN-API для отправки этого сообщения!" }', 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.

Cимволы emoji 😃#

Существует несколько способов отправить смайлик или другие символы через API:

  1. Горячими клавишами
  2. Копированием
  3. С использованием кодов символов

1. Горячими клавишами#

Cамый простой способ сделать это - использовать встроенные в вашу операционную систему эмодзи.

Для этого поставьте курсор в поле для текста и используйте горячие клавиши:

  • Для Windows: Win + ю
  • Для MacOS: control + command + space

Затем выберите интересующий символ во всплывшем окне.

К сожалению, данный способ работает не везде.

2. Копированием#

Иногда самое простое решение - скопировать эмодзи из мессенджера, браузера или любого другого источника.

Пример: 😃😎🤯

Пример сайта с эмодзи.

3. С использованием кодов символов#

Если поле не поддерживает вставку, или вставленные смайлики отображаются некорректно, попробуйте использовать кодировку символов.

Чтобы отправить смайлики рекомендуем использовать UTF-16. Для этого, вам нужно представить символ в виде шестнадцатеричного числа или суррогатной пары, двух шестнадцатеричных чисел.

\uD83D\uDE01 - пример суррогатной пары

Эти числа есть в таблице символов Unicode.