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_msgz wiadomością operatora