SendMessage#
Метод предназначен для отправки текстового сообщения в чат.
Сообщение добавляется в очередь на отправку.
Скорость отправки сообщений из очереди устанавливает интервал отправки сообщений.
Для метода используются ограничения на частоту запросов в секунду.
Запрос#
Для отправки текстового сообщения требуется выполнить запрос по адресу:
{{apiUrl}}/waInstance{{idInstance}}/sendMessage/{{apiTokenInstance}}
Для получения параметров запроса apiUrl, idInstance и apiTokenInstance обратитесь к разделу Перед началом работы.
Параметры запроса#
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
chatId | string | Да | Идентификатор чата |
message | string | Да | Текст сообщения. Поддерживаются символы emoji 😃. Максимальная длина текстового сообщения составляет 4096 символов. |
quotedMessageId | string | Нет | Идентификатор цитируемого сообщения |
typingTime | integer | Нет | Время показа уведомления набора сообщения в чате собеседника. Принимает значение в диапазоне от 1000 до 20000 миллисекунд (от 1 до 20 секунд) |
typingType | string | Нет | Тип набора сообщения. Возможные значения: |
text - "печатает..." (по умолчанию) | |||
record_voice_note - "записывает голосовое..." | |||
upload_voice_note - "отправляет голосовое..." | |||
record_video_note - "записывает видео-сообщение..". | |||
upload_video_note - "отправляет видео-сообщение..." | |||
record_video - "записывает видео..." | |||
upload_video - "отправляет видео..." | |||
upload_photo - "отправляет фото..." | |||
upload_document - "отправляет файл..." | |||
choose_sticker - "выбирает стикер..." | |||
choose_location - "выбирает локацию..." | |||
choose_contact - "выбирает контакт..." |
Пример тела запроса#
Отправка сообщения в личный чат#
{
"chatId": "10000000",
"message": "Я использую GREEN-API для отправки этого сообщения!"
}
Отправка сообщения по номеру телефона#
{
"chatId": "79876543210@c.us",
"message": "Я использую GREEN-API для отправки этого сообщения!"
}
Отправка сообщения в групповой чат#
{
"chatId": "-10000000000000",
"message": "Я использую GREEN-API для отправки этого сообщения!"
}
Отправка сообщения с цитированием#
{
"chatId": "10000000",
"message": "I use Green-API to send this message to you!",
"quotedMessageId": "1769676078000"
}
Ответ#
Поля ответа#
| Поле | Тип | Описание |
|---|---|---|
idMessage | string | Идентификатор отправленного сообщения |
Пример тела ответа#
{
"idMessage": "1769676078000"
}
Ошибки#
Перечень общих для всех методов ошибок смотрите в разделе Стандартные ошибки
| Код HTTP | Идентификатор ошибки | Описание |
|---|---|---|
| 400 | Bad Request Validation failed | Ошибка валидации |
| 400 | Validation failed. Details: 'message' length must be less than or equal to 4096 characters long | Текст сообщения должен быть меньше или равен 4096 символам |
Отправка в сервисный чат
Отправка в сервисный чат (например, "Сервисные уведомления") будет приводить к ошибке. Система вернёт код 200 и id сообщения, но сообщение не отправится, по нему придет вебхук outgoingMessageStatus с "status": "failed".
Примеры кода#
import requests
url = "{{apiUrl}}/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
$url = '{{apiUrl}}/waInstance{{idInstance}}/sendMessage/{{apiTokenInstance}}';
$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}}/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("/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("/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
URL = "{{apiUrl}}/waInstance{{idInstance}}/sendMessage/{{apiTokenInstance}}"
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/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. Горячими клавишами#
Cамый простой способ сделать это - использовать встроенные в вашу операционную систему эмодзи.
Для этого поставьте курсор в поле для текста и используйте горячие клавиши:
- Для Windows:
Win + ю - Для MacOS:
control + command + space
Затем выберите интересующий символ во всплывшем окне.
К сожалению, данный способ работает не везде.
2. Копированием#
Иногда самое простое решение - скопировать эмодзи из мессенджера, браузера или любого другого источника.
Пример: 😃😎🤯
Пример сайта с эмодзи.
3. С использованием кодов символов#
Если поле не поддерживает вставку, или вставленные смайлики отображаются некорректно, попробуйте использовать кодировку символов.
Чтобы отправить смайлики рекомендуем использовать UTF-16. Для этого, вам нужно представить символ в виде шестнадцатеричного числа или суррогатной пары, двух шестнадцатеричных чисел.
\uD83D\uDE01 - пример суррогатной пары
Эти числа есть в таблице символов Unicode.