Метод file_to отправляет получателю файл по публичной ссылке (документ, изображение, видео, аудио и т.п.) через подключённый канал связи. Файл должен открываться по URL без авторизации; сервер WAMM.chat перед отправкой проверяет доступность ссылки (ожидается ответ HTTP 200). Проверка номера или ID чата в мессенджере выполняется автоматически, как при отправке текстовых сообщений; отдельно вызывать проверку наличия мессенджера не обязательно. Если файла в открытом доступе нет, используйте отправку файлов в формате BASE64. Статус доставки можно получить методом получения статуса сообщения по возвращённому msg_id.
При нескольких запросах подряд сообщения ставятся в очередь с интервалом около 8–12 секунд между отправками. На тестовых тарифах действует ограничение — не более 30 исходящих сообщений по API в сутки (включая текст и файлы).
Поддерживаемые мессенджеры
Метод доступен для каналов: WhatsApp, MAX Personal, Telegram Personal, Telegram Bot.
Для Telegram Bot и MAX Bot получатель должен уже быть в контактах WAMM.chat (новый диалог через API без существующего контакта не создаётся). Каналы VK, Avito и другие типы через этот метод не отправляют файлы.
Пример запроса
GET https://wamm.chat/api2/file_to/{token}/?phone={phone}&url={url} или
GET https://wamm.chat/api2/file_to/{token}/{phone}/{url} Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| token | string | Да | API-токен канала из раздела «Настройки > Управление > API» |
| phone | string | Да | Номер в международном формате (например, 79001234567). Для Telegram — ID чата или никнейм; для MAX — ID чата |
| url | string | Да | Публичная ссылка на файл (http:// или https://), доступная без авторизации. Передавайте через urlencode. Сервер должен отдавать файл с кодом 200 |
| file_name | string | Нет | Имя файла для получателя. Если не указано — берётся из URL. Недопустимые символы и расширения .php, .sh удаляются |
| quote_msg_id | integer | Нет | ID сообщения в WAMM.chat (msg_id из ответа отправки), на которое отправляется ответ с файлом |
Ответ при успехе
{"err":0,"msg_id":1234567} msg_id — идентификатор сообщения в WAMM.chat; используйте его для проверки статуса или цитирования.
Возможные ошибки
| Код ошибки | Описание |
|---|---|
| token fail | Неверный или неактивный API-токен |
| acc not authorized | Канал не авторизован или не готов к отправке |
| phone fail | Некорректный номер или идентификатор получателя |
| no WhatsApp on the number | На номере нет WhatsApp (канал WhatsApp) |
| no Account on the number | Нет аккаунта в мессенджере на указанном идентификаторе (Telegram, MAX и др.) |
| phone not checked for WhatsApp, please retry | Не удалось проверить номер для WhatsApp — повторите запрос |
| phone not checked, please retry | Не удалось проверить идентификатор — повторите запрос |
| url fail | Пустая ссылка, нет http:// / https:// или файл недоступен по URL |
| quote_msg_id fail, not found | Сообщение для цитирования не найдено |
| chat banned | Чат с получателем заблокирован в WAMM.chat |
| Limit 30 send messages per 1 day on TEST accounts | Превышен дневной лимит отправки на тестовом тарифе |
Примеры использования
function sendFile($token, $phone, $fileUrl, $fileName = null, $quoteMsgId = null) {
$params = [
'phone' => $phone,
'url' => $fileUrl,
];
if ($fileName !== null) {
$params['file_name'] = $fileName;
}
if ($quoteMsgId !== null) {
$params['quote_msg_id'] = $quoteMsgId;
}
$url = 'https://wamm.chat/api2/file_to/' . rawurlencode($token) . '/?' . http_build_query($params);
$response = file_get_contents($url);
if ($response === false) {
throw new RuntimeException('Не удалось выполнить запрос к API');
}
$json = json_decode($response, true);
if (!is_array($json) || !array_key_exists('err', $json)) {
throw new RuntimeException('Некорректный ответ API');
}
if ($json['err'] === 0 && isset($json['msg_id'])) {
return (int) $json['msg_id'];
}
throw new RuntimeException('Ошибка API: ' . $json['err']);
}
$msgId = sendFile(
'YOUR_TOKEN',
'79001234567',
'https://example.com/files/document.pdf',
'document.pdf'
);
echo 'Файл поставлен в очередь, msg_id: ' . $msgId;