NetSendo
Platform Updates

NetSendo v2.11.2: czat webinarowy i poprawki stref czasowych

NetSendo Team6 min czytania

Wyobraź sobie, że Twój auto-webinar trwa i pokój wygląda dobrze: wideo działa, odliczanie też. Ale panel czatu pokazuje „Ładowanie czatu…” i nigdy się nie ładuje. Zaplanowane pytania się nie pojawiają, widzowie nie mogą o nic zapytać, a w pokoju widać „0 widzów”. Do tego sesja zarezerwowana na 19:00 zaczyna się o 20:00.

NetSendo v2.11.2 to wydanie poprawkowe, które usuwa te problemy. Uruchamia czat w pokoju webinaru, poprawia obsługę stref czasowych w całym module webinarów i naprawia obliczenia dat, które przestały działać po aktualizacji do Carbon 3.

TL;DR: NetSendo v2.11.2 uruchamia czat w pokoju webinaru: odpytywanie, moderację, tryb powolny i skrypty czatu odtwarzane według zegara sesji każdego widza. Naprawia godziny webinarów zapisywane jako UTC zamiast w strefie webinaru i poprawia liczenie czasu oglądania, więc lista „obecnych” jest dokładna. Naprawia też różnice dat ze znakiem w Carbon 3, które psuły warunek automatyzacji subscribed_days_ago, priorytety CRON Brain i przypomnienia w Google Calendar. Prowadzący powinni sprawdzić nadchodzące webinary na żywo i hybrydowe.

🚀 Co nowego w v2.11.2

💬

Czat webinaru działa

Pokój ma publiczny endpoint czatu z odpytywaniem, wysyłaniem wiadomości i moderacją.

🕖

Poprawne strefy czasowe

Wpisane godziny są odczytywane w strefie webinaru i zapisywane w UTC.

⏱️

Dokładny czas oglądania

Czas oglądania jest liczony dla każdej wizyty, więc za obecnych uznaje się tylko osoby, które obejrzały wymagane minimum.

🧮

Poprawki dat dla Carbon 3

Warunki automatyzacji, punktacja CRON i przypomnienia w kalendarzu znów poprawnie liczą czas.

Czat w pokoju webinaru

Pokój pod adresem /webinar/{slug}/watch/{token} miał panel czatu, ale bez kodu i endpointu za nim. Teraz pokój co 4 sekundy sprawdza nowe wiadomości i wysyła wiadomości na ten sam adres. Wysyłanie ma limit dla każdej rejestracji:

GET  /webinar/{slug}/chat/{token}   # pobieranie wiadomości (co 4 s)
POST /webinar/{slug}/chat/{token}   # wysyłanie wiadomości (z limitem)

W auto-webinarach i webinarach hybrydowych skrypt czatu jest odtwarzany według zegara sesji każdego widza. To trochę jak napisy zsynchronizowane z odtwarzaniem u każdego widza:

  • Linia ustawiona na 00:25 pojawia się 25 sekund po rozpoczęciu sesji danego widza.
  • Widzowie, którzy dołączą później, widzą to, co „powiedziano” przed ich przyjściem.
  • Linie, na które jeszcze nie pora, nigdy nie trafiają do przeglądarki, więc widz nie przeczyta ich wcześniej w źródle strony.
  • Linie „pokaż losowo” są wybierane raz dla każdego widza, więc nie zmieniają się między odpytaniami.

Tryby czatu ze Studia działają teraz w pokoju:

  • Tylko prowadzący: widzowie nie mogą wysyłać wiadomości.
  • Tylko Q&A: wiadomości są zapisywane jako pytania.
  • Moderowany / wymaga zatwierdzenia: inni widzowie nie widzą wiadomości, dopóki jej nie zatwierdzisz. Wiadomość czekająca na zatwierdzenie nie jest już wcześniej pokazywana innym widzom.
  • Tryb powolny: widzowie muszą odczekać między wiadomościami.

Nagrania pokazują liczbę widzów ze Studia (bazowa ± wariancja) zamiast „0 widzów”. Gdy wyłączysz Czat włączony, panel znika z pokoju, a w już otwartych pokojach znika przy następnym odpytaniu. Studio nie pokazuje już surowego klucza webinars.chat.disabled, a jego teksty czatu są przetłumaczone na wszystkie cztery języki.

Obsługa stref czasowych

Godziny webinarów psuły dwa błędy stref czasowych. Panel wysyła godzinę rozpoczęcia bez strefy, a była ona odczytywana jako UTC. Webinar w Warszawie ustawiony na 19:00 zaczynał się więc o 20:00 zimą (o 21:00 latem). Tymczasem strona zapisu i e-maile wyświetlały zapisane cyfry i nadal podawały 19:00.

Wpisana godzina jest teraz odczytywana w strefie webinaru (albo w strefie Twojego konta, jeśli webinar nie ma własnej) i zapisywana w UTC. Sloty auto-webinarów zawierają teraz przesunięcie względem UTC:

{
  "slot": "2026-11-12T18:40:00+01:00"
}

Wartość z przesunięciem, np. 2026-11-20T18:00:00Z, je zachowuje. Formularz edycji pokazuje teraz, w jakiej strefie edytujesz, a utworzenie webinaru z godziną, która już minęła, jest odrzucane. Każde miejsce, które pokazuje godzinę, przelicza ją na właściwą strefę: strona zapisu, ekran podziękowania, strona oglądania, e-maile, bloki dat w kreatorze stron oraz tokeny {{webinar_date}} i {{webinar_time}}.

⚠️ Prowadzący: sprawdźcie nadchodzące webinary na żywo i hybrydowe. Webinary zaplanowane przed tą wersją zachowują zapisaną godzinę, czyli tę, której już używały odliczanie i przypomnienia. Webinar wpisany jako 19:00 w Warszawie pokazuje teraz wszędzie 20:00. Jeśli chodziło o 19:00, otwórz webinar, ustaw ponownie 19:00 i zapisz.

Obliczenia dat w Carbon 3

Carbon 3 zwraca różnice ze znakiem. $later->diffInDays($earlier) jest teraz ujemne, a Carbon 2 zawsze zwracał liczbę dodatnią. To zepsuło kilka funkcji:

  • subscribed_days_ago nigdy nie pasował, więc automatyzacje, które go używały, nigdy się nie uruchamiały. Teraz liczy pełne dni od dołączenia subskrybenta do listy zdarzenia.
  • CRON Brain dawał najniższy priorytet agentom, które najdłużej były bezczynne. Agent uruchomiony ostatnio 14 dni temu dostawał −16 zamiast 25. Teraz priorytet rośnie z liczbą dni od ostatniego udanego uruchomienia agenta.
  • Przypomnienia w Google Calendar dla zadań CRM docierały jako „0 minut przed”. Zadania z przypomnieniem, ale bez terminu, synchronizują się teraz z domyślnymi przypomnieniami kalendarza.
  • Wyjście z pokoju webinaru zwracało HTTP 500, bo czas oglądania był ujemny, a MySQL odrzucał go w kolumnie bez znaku.
  • Import czatu sesji na żywo do skryptu czatu auto-webinaru kończył się błędem, bo każda wiadomość dostawała ujemny czas wyświetlenia. Teraz wiadomości zachowują swoje przesunięcie względem początku sesji.
  • „Śr. czas trwania” w Ustawienia → CRON nie jest już ujemny.

💼 Korzyści i przypadki użycia

🎓

SaaS: wiecznie zielone webinary onboardingowe

Prowadź codzienny auto-webinar, który wygląda jak sesja na żywo:

  • Zaplanuj częste pytania na momenty, w których pojawiają się w demo.
  • Używaj trybu tylko Q&A, aby zbierać prawdziwe obiekcje użytkowników wersji próbnej.
  • Taguj osoby, które naprawdę obejrzały webinar, i wysyłaj im sekwencję konwersyjną opartą na dokładnym czasie oglądania.
🛒

E-commerce: komunikacja zależna od czasu

Użyj naprawionego warunku subscribed_days_ago, aby:

  • wysłać rabat lojalnościowy 30 dni po dołączeniu subskrybenta,
  • zaprosić starszych subskrybentów na webinar premierowy o właściwej godzinie lokalnej.
🏢

Agencje: klienci w wielu strefach czasowych

Webinar każdego klienta używa teraz własnej strefy czasowej, od strony zapisu po przypomnienia e-mail i plik kalendarza. To mniej zgłoszeń od uczestników, którzy przyszli godzinę za wcześnie lub za późno.

🛠️ Krok po kroku: aktualizacja i weryfikacja

  1. Zrób kopię bazy danych

    Przed aktualizacją wykonaj zrzut MySQL. To zawsze dobry nawyk przy instalacjach self-hosted.

  2. Pobierz nową wersję

    Zaktualizuj wdrożenie Docker:

    docker compose pull
    docker compose up -d

    Automatyczna migracja dodaje nową kolumnę webinar_registrations.visit_started_at.

  3. Sprawdź nadchodzące webinary

    Otwórz każdy nadchodzący webinar na żywo lub hybrydowy. Formularz edycji pokazuje teraz jego strefę czasową. Jeśli godzina jest błędna, wpisz ją ponownie i zapisz.

  4. Skonfiguruj czat

    W Studiu sprawdź, czy opcja Czat włączony jest aktywna, wybierz tryb czatu i w razie potrzeby ustaw tryb powolny.

  5. Przetestuj jako widz

    Zarejestruj się testowym adresem e-mail, wejdź do pokoju i sprawdź, czy linie skryptu pojawiają się we właściwych momentach, a wysyłane wiadomości podlegają Twoim ustawieniom moderacji.

  6. Sprawdź automatyzacje

    Reguły z subscribed_days_ago zaczną teraz pasować. Przejrzyj je, aby zaległa grupa pasujących subskrybentów nie dostała wiadomości, których nie chcesz im wysyłać.

ℹ️ Uwaga: Sesje auto-webinarów zarezerwowane przed tym wydaniem zachowują zapisane godziny. Tylko nowe rezerwacje używają poprawionej strefy slotów.

🎯 Wskazówki ekspertów

1
Zagęść skrypt w pierwszych dwóch minutach

Widzowie, którzy dołączą później, widzą wcześniejsze linie, więc aktywny początek sprawia, że pokój wydaje się żywy dla wszystkich.

2
Łącz moderację z trybem powolnym

Przy większych sesjach na żywo moderowany czat z trybem powolnym ogranicza spam i utrzymuje kolejkę do zatwierdzenia w rozsądnych rozmiarach.

3
Wykorzystaj najlepsze czaty na żywo

Import czatu znów działa, więc możesz skopiować czat udanej sesji na żywo do skryptu auto-webinaru. Czas wiadomości zostaje zachowany.

4
Ustawiaj strefę czasową wprost

Nadaj każdemu webinarowi i harmonogramowi własną strefę czasową zamiast polegać na ustawieniach konta, zwłaszcza w agencjach.

5
Sprawdź własny kod pod kątem Carbon 3

Jeśli masz własne rozszerzenia, wyszukaj wywołania diffIn* i otocz je abs() albo zamień kolejność argumentów tam, gdzie potrzebujesz wartości dodatniej.

Inne poprawki: publiczne strony webinarów deklarują teraz swój rzeczywisty język zamiast zawsze lang="pl", ekran podziękowania pokazuje godzinę jako „12.11.2026 · 21:25” w każdym języku, a komunikat pokoju „Twoja przeglądarka nie może odtworzyć tego wideo” jest przetłumaczony.

✅ Podsumowanie

v2.11.2 sprawia, że webinary NetSendo są bardziej niezawodne. Czat działa, a skrypty auto-webinarów odtwarzają się według osi czasu każdego widza. Godziny webinarów odpowiadają ustawionej strefie czasowej, a lista „obecnych” odzwierciedla rzeczywisty czas oglądania. Ponieważ NetSendo jest self-hosted, dane webinarów, logi czatu i listy subskrybentów zostają na Twoim serwerze.

Gotowy na aktualizację?

Zaktualizuj do v2.11.2 i sprawdź nadchodzące webinary:

Poznaj więcej integracji, a jeśli NetSendo pomaga Twojej firmie, daj nam gwiazdkę na GitHubie.

#webinars#release-notes#timezones#automation#bug-fixes#self-hosted
Udostępnij