Przejdź do treści
Intum

Support Chat Widget

Aktualizacja: 2 min czytania

Endpointy widgetów

| Metoda | Ścieżka | Opis |
|——–|———|——|
| GET | /webchat/widgets.json | Lista widgetów |
| GET | /webchat/widgets/:id.json | Pojedynczy widget |
| POST | /webchat/widgets.json | Utworzenie widgetu |
| PATCH | /webchat/widgets/:id.json | Aktualizacja widgetu |
| DELETE | /webchat/widgets/:id.json | Usunięcie widgetu |

Autoryzacja: Authorization: Bearer TOKEN (uprawnienie: webchat)

Pola widget

| Pole | Typ | Opis |
|——|—–|——|
| name | string | Nazwa widgetu (wymagane) |
| title | string | Tytuł wyświetlany w czacie |
| description | text | Opis pod tytułem |
| color | string | Kolor HEX |
| active | boolean | Czy aktywny (domyślnie true) |
| orientation | string | Pozycja widgetu |
| placeholder | string | Tekst zastępczy w polu wiadomości |
| user_name | string | Wyświetlane imię operatora |
| locale | string | Język widgetu |
| email | string | E-mail kontaktowy |
| own_css | text | Własny CSS |
| introduce | boolean | Czy wymagać przedstawienia się |
| any_user | boolean | Czy wszyscy użytkownicy obsługują |
| offline_messages | boolean | Czy przyjmować wiadomości offline |
| offline_messages_welcome | string | Wiadomość powitalna offline |
| offline_messages_reply | string | Tekst po wysłaniu wiadomości offline |
| poke | text | Tekst attention grabbera |
| selected_responsible_id | string | ID domyślnej grupy/zespołu |
| department_id | integer | ID działu |
| opening_time | object | Harmonogram godzin pracy |

Pola w fields (JSONB)

| Klucz | Typ | Opis |
|——-|—–|——|
| sound_notifications | boolean | Powiadomienia dźwiękowe |
| use_avatar | boolean | Wyświetlaj avatar |
| avatar_option | string | widget lub user |
| just_name | boolean | Tylko imię (bez nazwiska) |
| require_client_data | boolean | Wymagaj imienia/e-maila |
| allow_client_attachments | boolean | Zezwól na załączniki |
| allow_auto_assign | boolean | Auto-przydzielanie do operatora |

Publiczny endpoint (bez autoryzacji)

GET /webchat/widget_data

Pobiera dane widgetu i wiadomości dla sesji czatu.

| Parametr | Opis |
|———-|——|
| token | Token sesji (space_token) |
| widget_id | ID widgetu |

Odpowiedź:

{
  "messages": [...],
  "description": "Opis widgetu",
  "user_name": "Jan",
  "title": "Pomoc",
  "active": true,
  "open": true,
  "messages_after_hours": true,
  "closed_message": "Jesteśmy offline",
  "widget_avatar": "https://...",
  "require_client_data": false,
  "allow_client_attachments": true
}

Godziny pracy (opening_time)

{
  "opening_time": {
    "timezone": "Europe/Warsaw",
    "monday": { "from": "08:00", "to": "17:00" },
    "tuesday": { "from": "08:00", "to": "17:00" },
    "wednesday": { "from": "08:00", "to": "17:00" },
    "thursday": { "from": "08:00", "to": "17:00" },
    "friday": { "from": "08:00", "to": "16:00" }
  }
}

Kod osadzenia

<link rel="stylesheet" href="STYLESHEET_URL">
<div class="sugester-widget" id="intum-webchat-widget"></div>
<script>
  var intumEchoOrigin = "wss://echo.intum.net";
  var intumChatConfig = {
    accountUrl: "https://konto.intum.pl",
    account_id: 123,
    widget_id: 1,
    widget_token: "TOKEN",
    email: "",
    checksum: "SHA256_HASH",
    sound_notifications: true,
    locale: "pl"
  };
</script>
<script src="WIDGET_URL"></script>
<script>webChatWidget = new IntumWebchatWidget(intumChatConfig, intumEchoOrigin);</script>

Komunikacja WebSocket

Widget łączy się z serwerem echo przez Phoenix Channels:

  • Kanał: webchat:user/{widget_token}/{room_token}
  • Wysyłanie: push("new_msg", { message, widget_id, ... })
  • Odbieranie: event new_msg z wiadomością operatora