Перейти к содержимому

Уведомления из OpenClaw через плагин

В OpenClaw можно отправлять уведомление в Депешер из хука agent_end нативного плагина. Обработчик вызывается при завершении запуска агента. Пример ниже отправляет короткий статус без пересылки диалога. Регистрация обработчика описана в документации хуков OpenClaw.

Подготовьте Депешер

Сначала создайте и подтвердите исходящий канал: Email, Telegram, группу Telegram или Пачку. Затем создайте входящий канал для этого инструмента, свяжите его с выбранным получателем и скопируйте публичный URL. Выполните проверку из статьи «Первое уведомление».

Подготовьте локальный плагин

Нужен установленный OpenClaw с работающим Gateway. Создайте отдельный каталог depesher-notify с тремя файлами.

package.json:

json
{
  "name": "depesher-notify",
  "version": "1.0.0",
  "type": "module",
  "openclaw": {
    "extensions": ["./index.ts"]
  }
}

openclaw.plugin.json:

json
{
  "id": "depesher-notify",
  "name": "Уведомления Депешера",
  "activation": {
    "onStartup": true
  },
  "configSchema": {
    "type": "object",
    "additionalProperties": false
  }
}

Манифест нужен для загрузки и проверки конфигурации плагина. Его назначение описано в документации OpenClaw.

index.ts:

typescript
import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";

const depesherUrl = "https://depesher.ru/w/ВАШ_PUBLIC_ID";
const depesherToken = "";

export default definePluginEntry({
  id: "depesher-notify",
  name: "Уведомления Депешера",
  register(api) {
    api.on("agent_end", async () => {
      const headers: Record<string, string> = {
        "Content-Type": "text/plain",
      };

      if (depesherToken) {
        headers.Authorization = `Bearer ${depesherToken}`;
      }

      try {
        const response = await fetch(depesherUrl, {
          method: "POST",
          headers,
          body: "OpenClaw: запуск агента завершён",
          signal: AbortSignal.timeout(15000),
        });

        if (!response.ok) {
          throw new Error(`Депешер вернул HTTP ${response.status}`);
        }
      } catch (error) {
        console.error("Не удалось отправить уведомление в Депешер", error);
      }
    });
  },
});

Замените URL адресом своего входящего канала. Если у канала включена защита, заполните depesherToken без префикса Bearer. Для канала без защиты оставьте пустую строку.

Подключите плагин

Из родительского каталога выполните:

bash
openclaw plugins install --link ./depesher-notify --force
openclaw plugins enable depesher-notify

Здесь --force подтверждает установку локального исходного кода. В openclaw.json объедините эту запись с существующими настройками:

json
{
  "plugins": {
    "entries": {
      "depesher-notify": {
        "enabled": true,
        "hooks": {
          "allowConversationAccess": true
        }
      }
    }
  }
}

Доступ к conversation hooks требуется и для agent_end. После изменения кода перезапустите Gateway. Если у вас настроены списки разрешённых или запрещённых плагинов, проверьте, что они допускают этот плагин.

Проверьте уведомление

Выполните короткую агентную задачу и найдите уведомление в истории Депешера и у получателя. Для проверки загрузки плагина используйте:

bash
openclaw plugins inspect depesher-notify --runtime --json

Если обработчик не вызывается, проверьте включение плагина и allowConversationAccess. Ошибки отправки пример записывает в журнал Gateway; для проверки URL и получателей используйте диагностику доставки.

Текст «запуск завершён» не различает успех и ошибку. Он сообщает о событии хука; подробный результат смотрите в OpenClaw. Сценарий не добавляет управление агентом из Депешера.