Уведомления после ответа Claude Code
Claude Code поддерживает хук Stop, который запускается после завершения ответа основного агента. Через него можно отправить последний ответ в Депешер и получить уведомление на телефоне или в командном чате. Формат хука описан в официальной документации Claude Code.
Подготовьте Депешер
Сначала создайте и подтвердите исходящий канал: Email, Telegram, группу Telegram или Пачку. Затем создайте входящий канал для этого инструмента, свяжите его с выбранным получателем и скопируйте публичный URL. Выполните проверку из статьи «Первое уведомление».
Сохраните скрипт отправки
В Python-примере замените DEPESHER_URL адресом своего канала. Для защищённого канала заполните DEPESHER_TOKEN токеном без префикса Bearer; иначе оставьте пустую строку. Нужен Python 3, дополнительных Python-пакетов для HTTP-запроса не требуется.
Сохраните следующий код как ~/.claude/notify-depesher.py. Claude Code передаёт JSON-событие через стандартный ввод:
python
import json
import sys
from urllib.request import Request, urlopen
DEPESHER_URL = "https://depesher.ru/w/ВАШ_PUBLIC_ID"
DEPESHER_TOKEN = ""
def send_notification(message):
headers = {"Content-Type": "text/plain"}
if DEPESHER_TOKEN:
headers["Authorization"] = f"Bearer {DEPESHER_TOKEN}"
request = Request(
DEPESHER_URL,
data=message.encode("utf-8"),
headers=headers,
method="POST",
)
with urlopen(request, timeout=15):
pass
event = json.load(sys.stdin)
message = event.get("last_assistant_message") or "Claude Code завершил ответ"
send_notification(message)Подключите Stop hook
Добавьте обработчик в ~/.claude/settings.json. Если файл содержит другие настройки или хуки, объедините записи, сохранив существующие:
json
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "python3 /home/user/.claude/notify-depesher.py"
}
]
}
]
}
}Замените путь к скрипту и при необходимости команду Python. Не передавайте текст ответа через подстановку в shell-команду: скрипт читает его как данные из JSON.
Проверьте отправку
Пример ручной проверки для Bash:
bash
printf '%s' '{"last_assistant_message":"Проверка уведомления Claude Code"}' |
python3 /home/user/.claude/notify-depesher.pyЗатем откройте новую сессию Claude Code, выполните короткое задание и проверьте уведомление после ответа.
Ограничения сценария
Stop не срабатывает при ручном прерывании ответа. Ошибки API покрываются отдельным событием StopFailure, поэтому этот пример не является обработчиком всех сбоев. Завершение ответа также не гарантирует успешность задачи: смотрите присланный текст.
Если обработчик запускается, но сообщение не приходит, проверьте URL, токен и доставку Депешера. Если вручную всё работает, проверьте путь к скрипту и настройки хука в Claude Code.