Документация

Вебхуки

Быстрый старт по вебхукам

Вебхуки предназначены для самого простого сценария: отправить payload в один текстовый канал Chattr.

Что вы получаете

После создания вебхука портал показывает:

  • ID приложения
  • канал назначения
  • полный runtime URL вебхука

Как отправлять сообщения

  1. Создайте вебхук на странице нужного сервера.
  2. Скопируйте runtime URL.
  3. Отправляйте POST-запросы с JSON в этот URL.

Примеры кода

cURL

curl -X POST "https://chattr.example.com/webhooks/APP_ID/WEBHOOK_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"content": "Деплой завершён успешно."}'

JavaScript (Node.js)

const WEBHOOK_URL = "https://chattr.example.com/webhooks/APP_ID/WEBHOOK_TOKEN";

const res = await fetch(WEBHOOK_URL, {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    content: "Деплой завершён успешно.",
    name: "CI Bot",            // необязательно
    avatarUrl: null             // необязательно
  })
});

const data = await res.json();
console.log("Message ID:", data.message.id);

Python

import requests

WEBHOOK_URL = "https://chattr.example.com/webhooks/APP_ID/WEBHOOK_TOKEN"

res = requests.post(WEBHOOK_URL, json={
    "content": "Деплой завершён успешно.",
    "name": "CI Bot",            # необязательно
    "avatarUrl": None            # необязательно
})

data = res.json()
print("Message ID:", data["message"]["id"])

Go

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"net/http"
)

func main() {
	webhookURL := "https://chattr.example.com/webhooks/APP_ID/WEBHOOK_TOKEN"

	body, _ := json.Marshal(map[string]any{
		"content": "Деплой завершён успешно.",
		"name":    "CI Bot",
	})

	resp, err := http.Post(webhookURL, "application/json", bytes.NewReader(body))
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	fmt.Println("Status:", resp.StatusCode)
}

PHP

$webhookUrl = "https://chattr.example.com/webhooks/APP_ID/WEBHOOK_TOKEN";

$ch = curl_init($webhookUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Content-Type: application/json"]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
    "content"   => "Деплой завершён успешно.",
    "name"      => "CI Bot",       // необязательно
    "avatarUrl" => null            // необязательно
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
echo "Message ID: " . $data["message"]["id"];

Права доступа

Для создания и управления вебхуками требуется право manage_server на целевом сервере. Владельцы серверов и администраторы получают это право автоматически.

Что важно помнить

  • Каждый вебхук привязан к одному текстовому каналу.
  • При регенерации URL старый runtime URL перестаёт работать.
  • Управление вебхуками доступно только пользователям с правом manage_server.