Dokumentace

Nauč se TicketsX rychleji

Návody k nastavení, přehled všech příkazů, funkce Premium a REST API na jednom místě.

13.19

Hledání v přepisech

GET/<guild_id>/api/transcripts/search

Prohledá každý zavřený tiket na serveru, a to nejen jeho metadata: co v něm padlo, kdo to napsal, kdo se ho účastnil, kdy vznikl a kdy se zavřel, ke kterému panelu patří, jaké má hodnocení nebo jaké ID kanálu na Discordu používal. Jde o stejný nástroj jako hloubkové hledání na nástěnce. Vyžaduje oprávnění `search_transcripts` (ve výchozím stavu vypnuté).

POST/<guild_id>/api/transcripts/search

Totéž, jen s filtry poslanými v těle JSON místo v parametrech dotazu. Hodí se u dlouhých dotazů a seznamů účastníků. Když pošlete obojí, platí tělo.

Každý výsledek nese metadata tiketu, nejvýše 8 účastníků, a pokud jste hledali podle obsahu, i nejvýše 3 odpovídající úryvky zpráv, ať vidíte, *proč* se tiket našel. Hodnotu TicketId z libovolného výsledku předejte rovnou do Načtení přepisu pro úplný seznam zpráv, nebo do Načtení přepisu v HTML pro hotový archiv.

Filtry (všechny nepovinné, kombinujte, kolik chcete)

NázevTypPovinnéPopis
qstring
volitelné
Volné hledání v obsahu zpráv, nejvýše 200 znaků. Slova kratší než 3 znaky index přeskakuje.
said_bystring
volitelné
Zahrne jen obsah napsaný tímto ID uživatele na Discordu. Kombinujte s polem q.
participantsstring[]
volitelné
Nejvýše 5 uživatelů, kteří v tiketu psali, každý jako ID uživatele na Discordu nebo část uživatelského jména. U GET oddělené čárkami, u POST jako pole.
participants_modestring
volitelné
Hodnota all (výchozí) vyžaduje, aby v témže tiketu psali všichni uvedení účastníci; any najde tikety, kde psal aspoň jeden z nich.
include_botsboolean
volitelné
Zahrne do hledání i zprávy a účastníky, kteří jsou boti. Výchozí hodnota je false.
opened_bystring
volitelné
Zakladatel tiketu jako ID uživatele na Discordu nebo část uživatelského jména.
closed_bystring
volitelné
ID uživatele na Discordu, který tiket zavřel.
channel_idstring
volitelné
ID kanálu nebo vlákna na Discordu, kde tiket probíhal.
panel_idnumber
volitelné
Jen tikety založené z tohoto panelu.
opened_fromnumber
volitelné
Unixové časové razítko: jen tikety založené v tomto čase nebo později.
opened_tonumber
volitelné
Unixové časové razítko: jen tikety založené v tomto čase nebo dříve.
closed_fromnumber
volitelné
Unixové časové razítko: jen tikety zavřené v tomto čase nebo později.
closed_tonumber
volitelné
Unixové časové razítko: jen tikety zavřené v tomto čase nebo dříve.
rating_minnumber
volitelné
Nejnižší hodnocení, 1 až 5.
rating_maxnumber
volitelné
Nejvyšší hodnocení, 1 až 5.
limitnumber
volitelné
Počet výsledků na stránku, 1 až 50 (výchozí 25).
offsetnumber
volitelné
Počet výsledků přeskočených kvůli stránkování, nejvýše 10000 (výchozí 0).

Hledání má limit 10 požadavků za minutu na token, počítaný zvlášť od ostatního čtení, a běží v přísně omezeném čase. Hledání, které se nestihne dokončit, vrací 504. Místo opakování stejného dotazu filtry zužte (přidejte časové rozmezí nebo panel) a zkuste to znovu. Hodnoty, které neprojdou kontrolou, se zahodí a požadavek se kvůli nim neodmítne, takže si v odpovědi projděte vrácený objekt filters, ať víte, co se opravdu použilo.

Hledání čte index přepisů, který vzniká, dokud má server Premium, a při prvním pořízení se doplní i o váš dosavadní archiv. Objekt coverage v každé odpovědi říká, kolik vašich přepisů je zaindexovaných (indexed) z celkového uloženého počtu (total). Pokud doplňování indexu ještě běží, čísla se zatím neshodují.

Příklad požadavku: co uživatel řekl v tiketech, na kterých pracoval i určitý člen podpory
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"
Příklad požadavku: stejné hledání v těle 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
Příklad odpovědi
{
  "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 }
}