The support-ticket.lua skrypt udostępnia użytkownikom małe polecenie pomocy w centrum Verlihub. Użytkownik wpisuje polecenie takie jak !helpme za pomocą krótkiej wiadomości, a operatorzy otrzymają sformatowane powiadomienie z pseudonimem użytkownika i tekstem żądania.
Ten skrypt nie jest kasą biletową opartą na bazie danych. Jest to narzędzie pomagające powiadamiać po stronie centrum o problemach z rejestracją, pytaniach o połączenie, raportach nadużyć, pytaniach o reguły i innych problemach, które wymagają uwagi operatora.
Co robi ten skrypt
Skrypt obserwuje główny czat pod kątem skonfigurowanego polecenia wsparcia i obsługuje pasujące wiadomości, zanim przejdą przez normalny czat.
Przykładowe polecenie użytkownika:
!helpme I cannot connect to the correct hublist.
Przykładowa uwaga operatora:
[SupportTicket] Help request from SomeUser: I cannot connect to the correct hublist.
Typowe zastosowania obejmują:
- Umożliwianie użytkownikom kontaktowania się z operatorami bez znajomości pseudonimu operatora.
- Zgłaszanie problemów z połączeniem koncentratora lub hublist.
- Zgłaszanie nadużyć użytkowników.
- Prośba o pomoc dotyczącą konta lub rejestracji.
- Prośba o wyjaśnienie zasad.
- Tworzenie prostego przepływu pracy pomocy technicznej w centrum.
Skrypt wysyła tylko sformatowane powiadomienia. Nie tworzy identyfikatorów biletów, historii sklepu, roszczeń własności ani nie zastępuje systemu wsparcia internetowego.
Wymagania
Ten skrypt wymaga:
- Verlihub zainstalowany i działa.
- Zainstalowana wtyczka Verlihub Lua.
- Wtyczka Lua włączona w Verlihub.
- Zezwolenie na ładowanie i rozładowywanie Lua skryptów.
- Zapisywalny katalog skryptów dla plików Verlihub Lua.
- Kompilacja Verlihub Lua, która udostępnia haki do wiadomości czatu, takie jak
VH_OnParsedMsgChat.
Przed załadowaniem skryptu upewnij się, że wtyczka Lua jest aktywna:
!pluglist
Jeśli wtyczki Lua nie ma na liście, załaduj ją lub włącz najpierw z nadrzędnego artykułu instalacyjnego Lua.
Zalecana lokalizacja pliku
Użyj dedykowanego katalogu skryptów:
mkdir -p /PATH/TO/HUB/scripts
Umieść skrypt pod adresem:
/PATH/TO/HUB/scripts/support-ticket.lua
W przypadku systemów produkcyjnych do tego katalogu powinni zapisywać tylko zaufani administratorzy lub użytkownik usługi Verlihub. Nie używaj uprawnień do zapisu na całym świecie.
Polecenia ładowania i rozładowywania
Załaduj skrypt:
!luaload /PATH/TO/HUB/scripts/support-ticket.lua
Wyładuj skrypt:
!luaunload /PATH/TO/HUB/scripts/support-ticket.lua
Jeśli edytujesz skrypt, wyładuj go i załaduj ponownie:
!luaunload /PATH/TO/HUB/scripts/support-ticket.lua
!luaload /PATH/TO/HUB/scripts/support-ticket.lua
Użyj pełnej ścieżki bezwzględnej, chyba że konfiguracja wtyczki Verlihub Lua obsługuje ścieżki względne.
Kod skryptu
-- Script: support-ticket.lua
-- Purpose: Lets users send simple help requests to hub operators.
-- Scope: Lightweight support notices only.
-- Notes: This is not a database-backed ticket system.
command = "!helpme"
botname = "SupportTicket"
min_message_length = 10
cooldown_seconds = 180
last_request = {}
function Trim(text)
return string.gsub(text, "^%s*(.-)%s*$", "%1")
end
function StartsWith(text, prefix)
return string.sub(text, 1, string.len(prefix)) == prefix
end
function GetMessageAfterCommand(text)
return Trim(string.sub(text, string.len(command) + 1))
end
function CanSendRequest(nick)
local now = os.time()
if last_request[nick] == nil then
last_request[nick] = now
return true
end
if now - last_request[nick] >= cooldown_seconds then
last_request[nick] = now
return true
end
return false
end
function SendUserMessage(user, message)
VH:SendToUser("<" .. botname .. "> " .. message, user)
end
function SendOperatorNotice(message)
-- Depending on your Verlihub Lua API version, this may need to be changed
-- to the operator or private-message helper function supported by your build.
VH:SendToClass("<" .. botname .. "> " .. message, 3, 10)
end
function HandleSupportRequest(user, text)
local nick = user.sNick
local request = GetMessageAfterCommand(text)
if string.len(request) < min_message_length then
SendUserMessage(user, "Usage: " .. command .. " <describe your issue>")
return 1
end
if not CanSendRequest(nick) then
SendUserMessage(user, "Please wait before sending another help request.")
return 1
end
SendOperatorNotice("Help request from " .. nick .. ": " .. request)
SendUserMessage(user, "Your help request was sent to the operators. Please wait for a response.")
return 1
end
function VH_OnParsedMsgChat(user, text)
if StartsWith(text, command) then
return HandleSupportRequest(user, text)
end
return 0
end
Opcje konfiguracji
command
command = "!helpme"
Polecenie, które użytkownicy wpisują, aby poprosić o pomoc. Wybierz jedno polecenie i opublikuj je w regułach centrum lub MOTD.
Przykłady:
command = "!helpme"
command = "!support"
command = "!ticket"
command = "!ophelp"
botname
botname = "SupportTicket"
Nazwa wyświetlana w odpowiedziach automatycznych i powiadomieniach operatora.
Przykłady:
botname = "SupportTicket"
botname = "HelpBot"
botname = "OperatorHelp"
botname = "HubSupport"
min_message_length
min_message_length = 10
Minimalna liczba znaków wymagana po poleceniu. Blokuje to puste żądania, takie jak:
!helpme
Blokuje również słabe wiadomości, takie jak:
!helpme hi
Zalecane wartości:
| Wartość | Oznaczający |
|---|---|
5 | Dozwalający. Przydatne podczas testów. |
10 | Dobre ustawienie domyślne dla zwykłych próśb o pomoc. |
20 | Lepiej, gdy użytkownicy wysyłają niejasne żądania. |
cooldown_seconds
cooldown_seconds = 180
Jak długo użytkownik musi czekać przed wysłaniem kolejnej prośby o pomoc.
Zalecane wartości:
| Wartość | Oznaczający |
|---|---|
60 | 1 minuta. |
180 | 3 minuty. |
300 | 5 minut. |
Użyj dłuższego czasu odnowienia w przypadku zajętych koncentratorów lub gdy użytkownicy powtarzają to samo żądanie.
last_request
last_request = {}
Wewnętrzna tabela używana do śledzenia czasów odnowienia użytkownika. Nie edytuj tego, chyba że zmieniasz logikę skryptu.
Przykładowe konfiguracje
Podstawowa prośba o pomoc
command = "!helpme"
botname = "SupportTicket"
min_message_length = 10
cooldown_seconds = 180
Przykład użytkownika:
!helpme I need help with registration.
Polecenie Pomocy Operatora
command = "!ophelp"
botname = "OperatorHelp"
min_message_length = 10
cooldown_seconds = 180
Przykład użytkownika:
!ophelp Someone is flooding main chat.
Polecenie stylu biletu
command = "!ticket"
botname = "HubSupport"
min_message_length = 20
cooldown_seconds = 300
Przykład użytkownika:
!ticket I cannot connect after changing my client settings.
Zalecane ustawienia produkcyjne
W przypadku większości koncentratorów zacznij od:
command = "!helpme"
botname = "SupportTicket"
min_message_length = 10
cooldown_seconds = 180
Daje to użytkownikom łatwe polecenie, jednocześnie redukując puste lub powtarzające się żądania.
W przypadku ruchliwych węzłów użyj:
cooldown_seconds = 300
W przypadku małego prywatnego centrum użyj:
cooldown_seconds = 60
Testowanie skryptu
Po załadowaniu skryptu przetestuj jako zwykły użytkownik:
!helpme I need help testing this command.
Potwierdź, że:
- Użytkownik otrzymuje wiadomość z potwierdzeniem.
- Operatorzy otrzymują prośbę o pomoc.
- Puste żądania są odrzucane.
- Krótkie żądania są odrzucane, jeśli znajdują się poniżej
min_message_length. - Cooldown zapobiega powtarzającemu się spamowi.
- Skrypt ładuje się czysto.
Przetestuj także nieprawidłowe użycie:
!helpme
Oczekiwany wynik:
Usage: !helpme <describe your issue>
Rozwiązywanie problemów
Skrypt nie ładuje się
Sprawdź, czy wtyczka Lua jest aktywna:
!pluglist
Sprawdź ścieżkę pliku:
!luaload /PATH/TO/HUB/scripts/support-ticket.lua
Użyj ścieżki bezwzględnej, jeśli ścieżki względne nie działają.
Polecenie nie odpowiada
Sprawdzać:
- Skrypt został załadowany.
- Polecenie pasuje dokładnie.
- Wtyczka Lua obsługuje
VH_OnParsedMsgChat. - Użytkownik wpisuje polecenie na czacie głównym.
Wypróbuj krótkie polecenie testowe:
command = "!testhelp"
Następnie załaduj ponownie skrypt i przetestuj ponownie.
Operatorzy nie otrzymują powiadomień
W przykładzie zastosowano:
VH:SendToClass("<" .. botname .. "> " .. message, 3, 10)
Twoja wersja wtyczki Verlihub Lua może wykorzystywać inną funkcję dla wiadomości operatorskich lub wiadomości opartych na klasach. Sprawdź przykłady API Lua dla swojej wersji Verlihub i wymień SendOperatorNotice() z funkcją obsługiwaną przez twoją kompilację.
Funkcja do regulacji to:
function SendOperatorNotice(message)
VH:SendToClass("<" .. botname .. "> " .. message, 3, 10)
end
Użytkownicy mogą wysyłać prośby o spam
Zwiększ czas odnowienia:
cooldown_seconds = 300
Zwiększ minimalną długość wiadomości:
min_message_length = 20
Prośby o pomoc są zbyt niejasne
Zaktualizuj komunikat dotyczący użycia:
SendUserMessage(user, "Usage: " .. command .. " <describe the issue, nickname involved, and what happened>")
Spowoduje to wyświetlenie prośby o podanie problemu, pseudonimu i wydarzenia zamiast żądania składającego się z jednego słowa.
Uwagi dotyczące bezpieczeństwa
Ten skrypt powinien pozostać lekki. Nie dodawaj:
- Zewnętrzne żądania HTTP.
- Blokowanie połączeń sieciowych.
- Baza danych zapisuje każdą wiadomość.
- Plik jest zapisywany dla każdego żądania, chyba że istnieje rotacja dziennika.
- Długie pętle.
- Wezwania do snu.
- Duże przetwarzanie wiadomości.
Jeśli potrzebujesz systemu zgłoszeń opartego na bazie danych, użyj tego skryptu tylko jako punktu wejścia po stronie centrum do oddzielnego procesu wsparcia.
Uwagi dotyczące prywatności
Prośby o pomoc mogą zawierać skargi, pseudonimy, problemy z połączeniem, raporty moderacji lub pytania dotyczące konta.
Zalecane praktyki:
- Wysyłaj zapytania tylko do operatorów.
- Nie wysyłaj próśb o pomoc do wszystkich użytkowników.
- Nie rejestruj prywatnych danych, chyba że zasady centrum wyjaśniają, dlaczego.
- Obróć lub usuń dzienniki, jeśli rejestrowanie plików zostanie dodane później.
- Poinformuj użytkowników, aby nie podawali haseł ani prywatnych danych uwierzytelniających.
Sugerowane ostrzeżenie dla użytkownika:
Do not include passwords or private credentials in help requests.
Uwagi dotyczące konserwacji
Zachowaj kopię zapasową przed zmianą skryptu:
cp /PATH/TO/HUB/scripts/support-ticket.lua /PATH/TO/HUB/scripts/support-ticket.lua.bak
Jeśli używasz Gita:
cd /PATH/TO/HUB/scripts
git add support-ticket.lua
git commit -m "Update support-ticket.lua settings"
Zmieniając tylko polecenie, nazwę bota, czas odnowienia lub minimalną długość wiadomości, nie są wymagane żadne zmiany logiczne.
Sugerowane przyszłe ulepszenia
Możliwe późniejsze wersje mogłyby dodać:
- Numery identyfikacyjne biletów.
- Rejestrowanie oparte na plikach z rotacją.
- Polecenie żądania operatora.
- Potwierdzenie użytkownika z numerem biletu.
- Oddzielne polecenia dla raportów nadużyć.
- Powiadomienia tylko dla prywatnych operatorów.
- Limity szybkości według adresu IP lub konta.
- Integracja z zewnętrznym systemem wsparcia.
Zachowaj małą wersję pierwszej wersji. Dodawaj funkcję tylko wtedy, gdy rozwiązuje ona rzeczywisty problem z zarządzaniem koncentratorem.