Метод msg_get_last возвращает до 100 последних сообщений канала, к которому привязан API-токен (входящие и исходящие, без служебных записей журнала). Удобен для периодической синхронизации переписки с CRM, отчётов и аналитики: опрашивайте API с интервалом в несколько минут и на своей стороне отсекайте уже обработанные сообщения по полю msg_id. Опциональный параметр from_me позволяет получить только входящие или только исходящие сообщения.
Историю по одному контакту или чату смотрите в методе Получение сообщений по номеру телефона (msg_get). Для доставки событий в реальном времени настройте WebHook — тогда опрос API не обязателен. Актуальный статус исходящего сообщения можно запросить отдельно: Получение статуса сообщения.
Поддерживаемые мессенджеры
Метод доступен для каналов: WhatsApp, MAX Personal, Telegram Personal, Telegram Bot (и других типов, подключённых к WAMM.chat с API-токеном).
Пример запроса
GET https://wamm.chat/api2/msg_get_last/{token}/?col={count} или
GET https://wamm.chat/api2/msg_get_last/{token}/{count} Фильтр по направлению (необязательно):
GET https://wamm.chat/api2/msg_get_last/{token}/?col=20&from_me=0 Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| token | string | Да | API-токен канала (Настройки > Управление > API) |
| col | integer | Да | Количество сообщений (от 1 до 100). В URL можно передать в query col или вторым сегментом пути после токена. По умолчанию в коде — 20, если не указано иное |
| from_me | integer | Нет | 1 — только исходящие, 0 — только входящие. Если параметр не передан — все сообщения |
Ответ при успехе
{
"err": 0,
"msg_data": [
{
"msg_id": 1234567,
"from_me": 1,
"from_api": 1,
"phone_acc": "79001112233",
"phone": "79001234567",
"phone_real": "",
"chat_name": "Иван Петров",
"tip_msg": "textMessage",
"msg_text": "Добрый день!",
"msg_link": "",
"date_ins": "2023-05-24 19:52:00",
"state": "delivered",
"rassilka_id": 1234
},
{
"msg_id": 1234566,
"from_me": 0,
"from_api": 0,
"phone_acc": "79001112233",
"phone": "79001234567",
"phone_real": "",
"chat_name": "Иван Петров",
"tip_msg": "textMessage",
"msg_text": "Здравствуйте!",
"msg_link": "",
"date_ins": "2023-05-24 19:50:15",
"state": "received",
"rassilka_id": null
}
]
} Описание полей ответа
| Поле | Описание |
|---|---|
| msg_id | Уникальный идентификатор сообщения в WAMM.chat |
| from_me | Направление: 0 — входящее, 1 — исходящее |
| from_api | Отправлено через API: 0 — нет, 1 — да |
| phone_acc | Номер или идентификатор подключённого к WAMM канала (аккаунта отправителя) |
| phone | Контакт / чат: номер в международном формате; для Telegram и MAX часто ID чата |
| phone_real | Телефон или никнейм контакта, если известен (для Telegram/MAX, когда phone — ID чата) |
| chat_name | Имя контакта или название чата |
| tip_msg | Тип: textMessage, file_link (файл/медиа), documentMessage и др.; вложения часто приходят как file_link |
| msg_text | Текст сообщения; для файлов без текста может быть файл |
| msg_link | Ссылка на файл или медиа (если есть) |
| date_ins | Дата и время отправки или получения (YYYY-MM-DD HH:MM:SS, часовой пояс сервера — Москва) |
| state | Статус: для входящих обычно received; для исходящих — sending или значение доставки (sent, delivered, viewed, read и др.) |
| rassilka_id | ID рассылки, если сообщение отправлено из рассылки; иначе null |
Обновление статуса исходящих сообщений в реальном времени приходит на WebHook (событие msg_state с полем date_upd), а не в ответе этого метода.
Возможные ошибки
| Код ошибки | Описание |
|---|---|
| token fail | Токен недействителен, отсутствует или канал не в статусе оплаты active |
| acc not authorized | Канал не готов к работе (нет связи). Чтение доступно при состоянии authorized или suspended |
| col fail or more 100 | Параметр col не указан, меньше 1 или больше 100 |
| msgs not be | Сообщения не найдены (пустая выборка) |
Примеры использования
function getLastMessages($token, $count, $fromMe = null) {
$url = "https://wamm.chat/api2/msg_get_last/$token/?col=" . (int)$count;
if ($fromMe !== null) {
$url .= "&from_me=" . ((int)$fromMe ? 1 : 0);
}
$response = @file_get_contents($url);
if ($response === false) {
return false;
}
$data = json_decode($response, true);
if (!is_array($data) || !isset($data['err'])) {
return false;
}
if ($data['err'] === 0 && isset($data['msg_data'])) {
return $data['msg_data'];
}
return false;
}
$token = "YOUR_TOKEN";
$messages = getLastMessages($token, 20);
$incomingOnly = getLastMessages($token, 50, 0);