Przejdź do treści
Intum
Aktualizacja: 2 min czytania

Widget komunikuje się z serwerem przez publiczne endpointy JSON. Nie wymagają autoryzacji Bearer — identyfikacja odbywa się przez token desku.

Endpointy widgetu

| Metoda | Ścieżka | Opis |
|——–|———|——|
| GET | /helpdesk/widget/data.json?token=DESK_TOKEN | Dane desku (nazwa, kolor, kategorie) |
| POST | /helpdesk/widget/create_ticket.json?token=DESK_TOKEN | Utworzenie zgłoszenia |
| GET | /helpdesk/widget/show_ticket.json?token=DESK_TOKEN&ticket_token=TT | Szczegóły zgłoszenia z komentarzami |
| GET | /helpdesk/widget/client_tickets.json?token=DESK_TOKEN | Lista zgłoszeń klienta |
| POST | /helpdesk/widget/add_comment.json?token=DESK_TOKEN&ticket_token=TT | Dodanie komentarza |

Publiczny widok zgłoszenia

| Metoda | Ścieżka | Opis |
|——–|———|——|
| GET | /helpdesk/ticket/:token | Widok HTML zgłoszenia |
| POST | /helpdesk/ticket/:token/comments | Dodanie komentarza (formularz HTML) |

GET /helpdesk/widget/data

Zwraca konfigurację desku:

{
  "name": "Support",
  "description": "Pomoc techniczna",
  "color": "#3b82f6",
  "active": true,
  "locale": "pl",
  "help_content": "Opisz swój problem...",
  "attachments_enabled": true,
  "categories": [
    { "id": 1, "name": "Błąd", "color": "red", "help_content": "..." }
  ]
}

POST /helpdesk/widget/create_ticket

| Pole | Typ | Opis |
|——|—–|——|
| title | string | Tytuł zgłoszenia (wymagane) |
| content | text | Treść |
| priority | string | low, normal, high, urgent |
| category_id | integer | ID kategorii |
| client_email | string | E-mail klienta |
| client_name | string | Imię klienta |
| client_external_id | string | Zewnętrzne ID klienta |
| client_url | string | URL klienta |
| client_plan | string | Plan klienta |
| user_external_id | string | ID użytkownika końcowego |
| user_email | string | E-mail użytkownika |
| user_name | string | Imię użytkownika |
| user_phone | string | Telefon użytkownika |
| attachment_signed_ids | array | ID załączników (DirectUpload) |
| signature | string | Podpis HMAC (jeśli wymagany) |

GET /helpdesk/widget/client_tickets

Wymaga client_external_id lub email + signature (jeśli desk wymaga).

Odpowiedź:

[
  {
    "id": 123,
    "token": "xyz",
    "number": "#T-001",
    "title": "Problem",
    "status": "open",
    "priority": "normal",
    "read": true,
    "waiting_for_client": false,
    "created_at": "2026-03-05T09:00:00Z",
    "updated_at": "2026-03-05T09:15:00Z"
  }
]

Podpis HMAC-SHA256

Gdy desk ma security_level: "signature", żądania muszą zawierać podpis.

Algorytm:

  1. Zbierz parametry tożsamości: client_email, client_external_id, client_name, client_plan, client_url, user_email, user_external_id, user_name, user_phone
  2. Usuń puste wartości
  3. Posortuj alfabetycznie po kluczu
  4. Połącz jako key1=value1&key2=value2
  5. Oblicz HMAC-SHA256 z secret_key desku
data = params.compact_blank.sort_by { \|k, _\| k.to_s }.map { \|k, v\| "#{k}=#{v}" }.join("&")
signature = OpenSSL::HMAC.hexdigest("sha256", desk.secret_key, data)

Kod osadzenia

<div id="intum-helpdesk-widget"></div>
<script>
  var IntumHelpdeskWidget = {
    account_url: "https://konto.intum.pl",
    desk_token: "TOKEN_DESKU",
    client_external_id: "CRM-123",
    client_email: "jan@firma.pl",
    client_name: "Jan Kowalski",
    locale: "pl",
    signature: "HMAC_SIGNATURE"
  };
</script>
<script src="WIDGET_URL"></script>