Zdarzenia od klienta do serwera

Wysyłaj informacje kontekstowe z klienta, by ulepszać aplikacje konwersacyjne w czasie rzeczywistym.

Zdarzenia od klienta do serwera to wiadomości, które twoja aplikacja proaktywnie wysyła do serwera, by przekazać dodatkowy kontekst podczas rozmów. Pozwalają wzbogacić rozmowę o istotne informacje bez przerywania jej toku.

Informacje o zdarzeniach wysyłanych przez serwer do klienta znajdziesz w dokumentacji zdarzeń klienta.

Omówienie

Twoja aplikacja może w dowolnym momencie rozmowy wysyłać do serwera informacje kontekstowe, aby poprawić jakość i trafność rozmowy. Nie musi to być odpowiedź na zdarzenie klienta odebrane z serwera. Jest to szczególnie przydatne do udostępniania stanu UI, działań użytkownika lub innych danych środowiskowych, których nie da się przekazać bezpośrednio głosem.

Nasze SDK oferują metody pomocnicze do wysyłania tych zdarzeń, ale znajomość bazowego protokołu jest przydatna w niestandardowych implementacjach i zaawansowanych przypadkach użycia.

Typy zdarzeń

Aktualizacje kontekstowe

Aktualizacje kontekstowe pozwalają aplikacji wysyłać do rozmowy nieprzerywające informacje w tle.

Najważniejsze cechy:

  • Aktualizacje są uwzględniane jako informacje w tle rozmowy.
  • Nie przerywają bieżącego toku rozmowy.
  • Przydają się do wysyłania stanu UI, działań użytkownika lub danych środowiskowych.
// Contextual update event structure
{
"type": "contextual_update",
"text": "User appears to be looking at pricing page"
}
// Example sending contextual updates
function sendContextUpdate(information) {
websocket.send(
JSON.stringify({
type: "contextual_update",
text: information,
})
);
}
// Usage examples
sendContextUpdate("Customer status: Premium tier");
sendContextUpdate("User navigated to Help section");
sendContextUpdate("Shopping cart contains 3 items");

Wiadomości użytkownika

Wiadomości użytkownika pozwalają wysyłać tekst bezpośrednio do rozmowy, tak jakby użytkownik go wypowiedział. Jest to przydatne w interakcjach tekstowych lub gdy chcesz wstawić konkretny tekst do toku rozmowy.

Najważniejsze cechy:

  • Tekst jest przetwarzany jako dane wejściowe użytkownika w rozmowie.
  • Wywołuje ten sam tok odpowiedzi co wypowiedź użytkownika.
  • Przydaje się w interfejsach tekstowych lub przy programowym wprowadzaniu danych użytkownika.
// User message event structure
{
"type": "user_message",
"text": "I would like to upgrade my account"
}
// Example sending user messages
function sendUserMessage(text) {
websocket.send(
JSON.stringify({
type: "user_message",
text: text,
})
);
}
// Usage examples
sendUserMessage("I need help with billing");
sendUserMessage("What are your pricing options?");
sendUserMessage("Cancel my subscription");

Aktywność użytkownika

Zdarzenia aktywności użytkownika działają jako sygnały zapobiegające przerywaniu przez agenta.

Najważniejsze cechy:

  • Resetują licznik limitu czasu tury.
  • Nie wpływają na treść ani tok rozmowy.
  • Przydają się do utrzymywania długich rozmów w okresach ciszy.
// User activity event structure
{
"type": "user_activity"
}
// Example sending user activity
function sendUserActivity() {
websocket.send(
JSON.stringify({
type: "user_activity",
})
);
}
// Usage example - send activity ping every 30 seconds
setInterval(sendUserActivity, 30000);

Dobre praktyki

  1. Aktualizacje kontekstowe

    • Wysyłaj istotne, ale zwięzłe informacje kontekstowe.
    • Nie zasypuj LLM zbyt dużą liczbą aktualizacji.
    • Skup się na informacjach wpływających na tok rozmowy lub ważnym kontekście z działań w UI niedostępnym dla agenta głosowego.
  2. Wiadomości użytkownika

    • Używaj ich do tekstowych danych wejściowych użytkownika, gdy audio nie jest dostępne lub odpowiednie.
    • Dbaj o jasną i dobrze sformatowaną treść tekstu.
    • Przy wstawianiu programowych wiadomości uwzględniaj kontekst rozmowy.
  3. Aktywność użytkownika

    • Wysyłaj sygnały aktywności podczas interakcji użytkownika, aby utrzymać sesję.
    • Stosuj rozsądne interwały (np. 30–60 sekund), aby uniknąć niepotrzebnego ruchu sieciowego.
    • Wykrywaj aktywność na podstawie faktycznego zaangażowania użytkownika (ruch myszy, pisanie itp.).
  4. Kwestie czasu

    • Wysyłaj aktualizacje w odpowiednich momentach.
    • Rozważ łączenie wielu aktualizacji kontekstowych w jedną (zamiast wysyłać każdą drobną zmianę osobno).
    • Zachowaj równowagę między utrzymaniem aktywnej sesji a unikaniem nadmiaru wiadomości.

Szczegółowe przykłady implementacji znajdziesz w naszej dokumentacji SDK.