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
- Klient loguje się w portalu
- Uwierzytelniony backend prosi Quoting24 o poświadczenie (
provisionRestoreId) albo używa już zapisanego - Strona wywołuje
init()z tym samymexternal_user_id,restore_idi, gdy trzeba, danymi firmy - Quoting24 sprawdza poświadczenie i pokazuje rozmowy widgetu widoczne dla tej osoby, także już zamknięte
- 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.
{
"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()bezreset(), ż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 brakinit(), 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_idstabilne i na osobę, identyczne między provisioningiem ainit() - [ ]
restore_idutrwalone 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_idicompany_namesprawdzone 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.