Короткий ответ: **напрямую сам по себе `.bat` файл принимать вебхуки не может**.
Классический `.bat` файл (CMD) — это просто интерпретатор команд. У него нет встроенного сетевого сокета, который мог бы постоянно «слушать» входящий HTTP-порт (например, `:80` или `:8080`) и ожидать `POST`-запросы от сторонних сервисов.
Однако эту задачу легко решить, запустив из батника минимальный веб-сервер.
---
### Вариант 1. Моментальный сервер через PowerShell (без установки софта)
PowerShell встроен во все современные Windows и умеет слушать порты с помощью `HttpListener`. Вы можете запустить его прямо внутри `.bat` файла.
Создайте файл `webhook_server.bat`:
```bat
@echo off
chcp 65001 > nul
echo Запуск вебхук-сервера на
http://localhost:8080/webhook/
echo Нажмите Ctrl+C для остановки.
powershell -NoProfile -ExecutionPolicy Bypass -Command "^
$listener = New-Object System.Net.HttpListener; ^
$listener.Prefixes.Add('
http://localhost:8080/webhook/'); ^
$listener.Start(); ^
while ($listener.IsListening) { ^
$context = $listener.GetContext(); ^
$request = $context.Request; ^
$reader = New-Object System.IO.StreamReader($request.InputStream, $request.ContentEncoding); ^
$body = $reader.ReadToEnd(); ^
Write-Host '[+] Вебхук получен:' -ForegroundColor Green; ^
Write-Host $body; ^
$response = $context.Response; ^
$buffer = [System.Text.Encoding]::UTF8.GetBytes('OK'); ^
$response.ContentLength64 = $buffer.Length; ^
$response.OutputStream.Write($buffer, 0, $buffer.Length); ^
$response.Close(); ^
}"
```
**Как это работает:**
1. Батник вызывает PowerShell и поднимает служебный HTTP-сервер на порту `8080`.
2. При поступлении запроса на `
http://localhost:8080/webhook/` скрипт выводит тело (payload) вебхука прямо в консоль батника и возвращает ответ `200 OK`.
---
### Вариант 2. Использование утилиты `webhook` (для автоматизации)
Если вам нужно не просто посмотреть вебхук, а **автоматически запускать другой `.bat` файл или скрипт при получении вебхука**, проще всего использовать готовый легкий бинарник **webhook** (написан на Go).
1. Скачайте `webhook.exe` (от adnanh).
2. Создайте файл конфигурации `hooks.json`:
```json
[
{
"id": "my-hook",
"execute-command": "C:\\path\\to\\your_script.bat",
"command-working-directory": "C:\\path\\to"
}
]
```
3. Запустите его через батник:
```bat
webhook.exe -hooks hooks.json -verbose
```
Теперь при отправке запроса на `
http://your-ip:9000/hooks/my-hook` автоматически выполнится ваш `your_script.bat`.
---
### Как принять вебхук из внешнего интернета?
Если сервису (например, Telegram, GitHub, Stripe) нужно отправить вебхук на ваш локальный компьютер:
1. Используйте туннелирование через **ngrok** или **pinggy**:
```cmd
ngrok http 8080
```
2. Укажите полученный адрес (вида `[
https://xxxx.ngrok-free.app/webhook/](https://xxxx.ngrok-free.app/webhook/)`) в настройках вебхука на стороннем сервисе.
вот что-то такое мне gemini сгенерировал на промпт "скажи, а можно батником получать вебхуку?"