Documentație

Învață TicketsX mai repede

Ghiduri de configurare, lista completă de comenzi, funcțiile Premium și API-ul REST într-un singur loc.

13.19

Căutarea transcrierilor

GET/<guild_id>/api/transcripts/search

Caută în fiecare tichet închis de pe server, nu doar în datele despre el: ce s-a spus înăuntru, cine a spus, cine a participat, când a fost deschis sau închis, din ce panou vine, ce evaluare a primit sau ce ID de canal Discord a avut. Este același motor ca la căutarea în adâncime din panou. Cere permisiunea `search_transcripts` (oprită din start).

POST/<guild_id>/api/transcripts/search

La fel, doar că filtrele se trimit într-un corp JSON în loc de parametri de interogare. E mai comod la căutările lungi și la listele de participanți. Dacă le trimiți pe amândouă, câștigă corpul cererii.

Fiecare rezultat aduce datele tichetului, până la 8 participanți și, dacă ai căutat după conținut, până la 3 fragmente potrivite, ca să vezi *de ce* a apărut tichetul. Ia TicketId din orice rezultat și du-l direct la Aducerea unei transcrieri pentru lista completă de mesaje sau la Aducerea transcrierii în HTML pentru arhiva gata făcută.

Filtre (toate opționale; combină câte vrei)

NumeTipObligatoriuDescriere
qstring
opțional
Căutare liberă în conținutul mesajelor, cel mult 200 de caractere. Cuvintele mai scurte de 3 caractere sunt ignorate de index.
said_bystring
opțional
Ia în calcul doar conținutul scris de acest ID de utilizator Discord. Folosește-l împreună cu q.
participantsstring[]
opțional
Până la 5 utilizatori care au scris în tichet, fiecare ca ID de utilizator Discord sau ca parte dintr-un nume. Separați prin virgulă la GET, ca listă la POST.
participants_modestring
opțional
all (implicit) cere ca toți participanții trecuți să fi scris în același tichet; any găsește tichetele în care a scris măcar unul dintre ei.
include_botsboolean
opțional
Include în căutare mesajele și participanții care sunt boți. Implicit este false.
opened_bystring
opțional
Cel care a deschis tichetul, ca ID de utilizator Discord sau ca parte dintr-un nume.
closed_bystring
opțional
ID-ul de Discord al celui care a închis tichetul.
channel_idstring
opțional
ID-ul canalului sau al firului de Discord folosit de tichet.
panel_idnumber
opțional
Doar tichetele deschise din acest panou.
opened_fromnumber
opțional
Marcaj de timp Unix: doar tichetele deschise în acel moment sau după.
opened_tonumber
opțional
Marcaj de timp Unix: doar tichetele deschise în acel moment sau înainte.
closed_fromnumber
opțional
Marcaj de timp Unix: doar tichetele închise în acel moment sau după.
closed_tonumber
opțional
Marcaj de timp Unix: doar tichetele închise în acel moment sau înainte.
rating_minnumber
opțional
Evaluarea minimă, 1-5.
rating_maxnumber
opțional
Evaluarea maximă, 1-5.
limitnumber
opțional
Rezultate pe pagină, 1-50 (implicit 25).
offsetnumber
opțional
Rezultate sărite pentru paginare, cel mult 10000 (implicit 0).

Căutarea este limitată la 10 cereri pe minut pentru fiecare jeton, separat de celelalte citiri, și rulează cu un timp strâns măsurat. O căutare care nu apucă să se termine răspunde cu 504. Restrânge filtrele (adaugă un interval de timp sau un panou) și încearcă din nou, în loc să repeți aceeași căutare. Valorile care nu trec de verificare sunt lăsate deoparte, nu duc la respingerea cererii, așa că uită-te în obiectul filters din răspuns ca să vezi ce s-a aplicat de fapt.

Căutarea citește indexul de transcrieri, care se construiește cât timp serverul are Premium și se completează peste arhiva ta veche la prima trecere la Premium. Obiectul coverage din fiecare răspuns îți spune câte transcrieri sunt indexate (indexed) din totalul păstrat (total). Dacă indexarea arhivei vechi încă rulează, cele două numere nu se potrivesc deocamdată.

Exemplu de cerere: ce a spus un utilizator, în tichetele la care a lucrat și un anumit om din asistență
curl -X GET \
  -H "Authorization: Bearer <API_TOKEN>" \
  "https://api.ticketsx.xyz/<guild_id>/api/transcripts/search?q=refund&participants=123456789,987654321&participants_mode=all&closed_from=1730000000&limit=25"
Exemplu de cerere: aceeași căutare într-un corp JSON
curl -X POST \
  -H "Authorization: Bearer <API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"q":"refund","participants":["123456789","987654321"],"participants_mode":"all","closed_from":1730000000,"limit":25}' \
  https://api.ticketsx.xyz/<guild_id>/api/transcripts/search
Exemplu de răspuns
{
  "transcripts": [
    {
      "TicketId": 42,
      "AuthorId": "123456789",
      "AuthorUsername": "jane",
      "PanelId": 1,
      "PanelName": "Support",
      "Rating": 5,
      "RatingCount": 1,
      "CloseReason": "Resolved",
      "CreatedAt": 1732200000,
      "ClosedAt": 1732210000,
      "ChannelId": "1122334455",
      "ClosedBy": "987654321",
      "Participants": [
        { "UserId": "123456789", "Username": "jane", "MessageCount": 12, "IsBot": false }
      ],
      "Snippets": [
        { "AuthorId": "123456789", "AuthorUsername": "jane", "Content": "my refund never arrived", "CreatedAt": 1732200050 }
      ]
    }
  ],
  "pagination": { "total": 1, "limit": 25, "offset": 0, "returned": 1 },
  "coverage": { "indexed": 480, "total": 480 },
  "filters": { "q": "refund", "participants_mode": "all", "limit": 25 }
}