Vai al contenuto

Widget B2B — historia na innych urządzeniach

Ta sekcja opisuje przywrócenie osobistej historii widgetu, gdy ta sama osoba otwiera stronę z innej przeglądarki albo innego urządzenia.

Strona musi uwierzytelnić osobę. Jej backend pobiera i prywatnie przechowuje poświadczenie przywrócenia dla tego użytkownika i tego widgetu. Przeglądarka przekazuje je do init() razem z profilem.

Sam skrypt albo wstępne wypełnienie profilu i firmy z pozostaniem w sesji gościa: Widget B2C. Endpointy, trwałość i współbieżność restore_id: Integracja techniczna.


Co dochodzi względem sesji gościa

Gość Przywrócenie
Logowanie na stronie Niewymagane Wymagane, bo poświadczenie wychodzi z Twojego backendu
Dane, które identyfikują czat Poświadczenie gościa w przeglądarce albo profil przekazany do init() external_user_id i restore_id razem
Ciągłość Ta sama przeglądarka Inne przeglądarki i urządzenia, na uprawnionym kanale widget
Kto wystawia poświadczenie Loader Backend strony, przez Quoting24

name, phone, email, external_id, company_name i external_user_id same nie przywracają historii. external_user_id bez restore_id nie wystarcza. Pole nazywa się restore_id, w snake case: restoreId nie jest polem loadera.

Przywrócenie nie scala starych sesji gościa i nie udostępnia historii współpracownikom tej samej firmy. Dotyczy tylko kanału widget.

Pola firmy można wysłać w tym samym init(). Powiązanie albo utworzenie idzie według zasad payloadu gościa: jest niezależne od przywrócenia i nie dowodzi tożsamości.


Przebieg

  1. Klient loguje się w portalu
  2. Uwierzytelniony backend prosi Quoting24 o poświadczenie (provisionRestoreId) albo używa już zapisanego
  3. Strona wywołuje init() z tym samym external_user_id, restore_id i, gdy trzeba, danymi firmy
  4. Quoting24 sprawdza poświadczenie i pokazuje rozmowy widgetu widoczne dla tej osoby, także już zamknięte
  5. Przy wylogowaniu albo zmianie osoby strona wywołuje reset(), żeby poprzedni czat nie został w przeglądarce
widget.init({
  external_id: "52",
  company_name: "Ricambi Stella S.r.l.",
  name: "Mario Rossi",
  phone: "+393331234567",
  email: "mario.rossi@ricambi-stella.example",
  external_user_id: "1042",
  restore_id: session.restore_id,
});

restore_id to odpowiedź backendu dla uwierzytelnionego użytkownika. Użyj jej bez zmian. Najwyżej 200 znaków. Wymaga odpowiadającego external_user_id: stabilnego ID jednej osoby, niepustego, najwyżej 100 znaków po trim. To nie jest wspólne ID firmy.

external_id jest porównywane z web_code. Razem z company_name może utworzyć brakującą firmę. Nie uwierzytelnia użytkownika i nie zastępuje restore_id.


Wymagania

Oprócz brandingu, domen i kodu osadzenia:

  • integracja backendu dopuszczona w Quoting24
  • prywatny sekret integracji, tylko na serwerze
  • endpoint provisioningu, zwykle widget.provisionRestoreId
  • prywatny magazyn w bazie strony, jedno poświadczenie na użytkownika i widget

Publiczny klucz w URL skryptu i sekret integracji to różne wartości. Zobacz przegląd.


Endpoint w backendzie strony

/api/widget/session to przykład do wdrożenia w portalu. To nie jest publiczny URL Quoting24.

POST /api/widget/session
Content-Type: application/json

{}
{
  "external_user_id": "1042",
  "external_id": "52",
  "company_name": "Ricambi Stella S.r.l.",
  "name": "Mario Rossi",
  "phone": "+393331234567",
  "email": "mario.rossi@ricambi-stella.example",
  "restore_id": "<poswiadczenie-zwrocone-przez-quoting24>"
}
  • Tożsamość bierze się z sesji serwera, nie z ID wybranego przez przeglądarkę
  • Cache-Control: no-store
  • Nie loguj i nie zapisuj w pamięci podręcznej restore_id
  • Nie umieszczaj sekretów w URL skryptu ani w atrybutach data-*
  • Zapisz poświadczenie zanim odeślesz je do przeglądarki

Kontrakt wobec Quoting24 (attempt_id, saved_restore_id, blokada, ponowne użycie klucza) jest w integracji technicznej.

Jeśli portal ma już uwierzytelniony endpoint, który dla bieżącego użytkownika zwraca restore_id tego widgetu, użyj tej odpowiedzi. Połącz ją z ID osoby i odniesieniem firmy w wywołaniu init().


Logowanie, przeładowanie, zmiana konta, wylogowanie

Odróżnij przeładowanie strony od rzeczywistej zmiany osoby albo konta.

  • Przeładowanie przy nadal aktywnym logowaniu: init() bez reset(), żeby została zapisana sesja gościa, jeśli tylko ponownie podajesz profil. Przy przywróceniu użyj już utrwalonego poświadczenia: nie generuj nowego przy każdym wyświetleniu strony
  • Zmiana osoby, zmiana konta, wylogowanie: natychmiast reset(), potem nowy profil albo brak init(), jeśli użytkownik wyszedł
  • Odrzuć odpowiedzi przywrócenia, które dojdą po zmianie: stara odpowiedź nie jest nowym logowaniem
  • W SPA trzymaj jedną instancję w głównym układzie. Zmiana trasy nie uruchamia provisioningu ponownie

Gdy przywrócenie jest niedostępne, możesz zaproponować czat gościa: reset(), potem init() bez restore_id. Ten czat pozostaje oddzielony od przywróconej historii.

Poświadczenie nieważne, należące do innego użytkownika albo unieważnione jest odrzucane. Quoting24 nie zamienia go w sesję gościa. Przycisk «Riprova» widgetu sam nie prosi Twojego backendu o nowe restore_id. Bieżący interfejs jest po włosku, więc ta etykieta jest po włosku.

Przykład applyWidgetAuth i demontażu: Integracja techniczna.

reset() zapomina sesję gościa tej instancji i poświadczenie zapisane w przeglądarce. Nie unieważnia restore_id na serwerze i nie zamyka sesji na innych urządzeniach. Strona musi zaktualizować pozostałe otwarte karty.


Poprzednie rozmowy

W przywróconej historii zamknięte czaty mogą pojawić się jako poprzednia rozmowa.

  • Otwarcie ich do odczytu nie otwiera starej rozmowy na nowo
  • Nowe wiadomości zostają w aktywnej rozmowie

Lista kontrolna przed wdrożeniem

  • [ ] Sekret integracji tylko na serwerze
  • [ ] external_user_id stabilne i na osobę, identyczne między provisioningiem a init()
  • [ ] restore_id utrwalone przed odpowiedzią do przeglądarki i używane ponownie przy kolejnych wizytach
  • [ ] Ten sam użytkownik w drugiej przeglądarce: ta sama historia
  • [ ] Dwóch użytkowników tej samej firmy: osobne historie
  • [ ] external_id i company_name sprawdzone w kartotece, bez oczekiwania, że przywrócą czat
  • [ ] Wylogowanie albo zmiana konta w trakcie pobierania: na ekranie nie zostaje czat poprzedniego użytkownika
  • [ ] Przejście gość ↔ przywrócenie z reset() pośrodku
  • [ ] Poświadczenie unieważnione albo nieważne: błąd, bez cichego powrotu do gościa

Testy i objawy: Sprawdzenie integracji · Rozwiązywanie problemów.