Τεκμηρίωση

Μάθε το TicketsX πιο γρήγορα

Οδηγοί ρύθμισης, όλες οι εντολές, οι λειτουργίες Premium και το REST API σε ένα σημείο.

13.19

Αναζήτηση σε αρχεία συνομιλίας

GET/<guild_id>/api/transcripts/search

Ψάχνει σε κάθε κλειστό αίτημα του διακομιστή, όχι μόνο στα στοιχεία του: τι ειπώθηκε μέσα, ποιος το είπε, ποιοι συμμετείχαν, πότε άνοιξε ή έκλεισε, σε ποιον πίνακα ανήκει, τι αξιολόγηση πήρε ή ποιο αναγνωριστικό καναλιού Discord είχε. Είναι ο ίδιος μηχανισμός με τη βαθιά αναζήτηση του πίνακα. Απαιτεί το δικαίωμα `search_transcripts` (εξαρχής ανενεργό).

POST/<guild_id>/api/transcripts/search

Το ίδιο, μόνο που τα φίλτρα στέλνονται σε σώμα JSON αντί για παραμέτρους ερωτήματος. Βολεύει σε μεγάλες αναζητήσεις και σε λίστες συμμετεχόντων. Αν στείλεις και τα δύο, μετράει το σώμα.

Κάθε αποτέλεσμα φέρνει τα στοιχεία του αιτήματος, έως 8 συμμετέχοντες και, αν έψαξες με βάση το περιεχόμενο, έως 3 αποσπάσματα μηνυμάτων που ταιριάζουν, ώστε να δεις *γιατί* βρέθηκε. Πάρε το TicketId από όποιο αποτέλεσμα θέλεις και δώσ' το κατευθείαν στην Ανάκτηση αρχείου συνομιλίας για την πλήρη λίστα μηνυμάτων ή στην Ανάκτηση αρχείου σε HTML για το έτοιμο αρχείο.

Φίλτρα (όλα προαιρετικά· συνδύασε όσα θέλεις)

ΌνομαΤύποςΥποχρεωτικόΠεριγραφή
qstring
προαιρετικό
Ελεύθερη αναζήτηση στο περιεχόμενο των μηνυμάτων, έως 200 χαρακτήρες. Οι λέξεις με λιγότερους από 3 χαρακτήρες αγνοούνται από το ευρετήριο.
said_bystring
προαιρετικό
Μετράει μόνο το περιεχόμενο που έγραψε αυτό το αναγνωριστικό χρήστη Discord. Χρησιμοποίησέ το μαζί με το q.
participantsstring[]
προαιρετικό
Έως 5 χρήστες που έγραψαν στο αίτημα, ο καθένας ως αναγνωριστικό Discord ή ως μέρος ονόματος χρήστη. Χωρισμένοι με κόμμα στο GET, ως πίνακας στο POST.
participants_modestring
προαιρετικό
Το all (προεπιλογή) ζητά να έχουν γράψει όλοι οι συμμετέχοντες που ορίζεις στο ίδιο αίτημα· το any βρίσκει τα αιτήματα όπου έγραψε τουλάχιστον ένας.
include_botsboolean
προαιρετικό
Συμπεριλαμβάνει στα αποτελέσματα μηνύματα και συμμετέχοντες που είναι bot. Προεπιλογή false.
opened_bystring
προαιρετικό
Αυτός που άνοιξε το αίτημα, ως αναγνωριστικό Discord ή ως μέρος ονόματος χρήστη.
closed_bystring
προαιρετικό
Το αναγνωριστικό Discord αυτού που έκλεισε το αίτημα.
channel_idstring
προαιρετικό
Το αναγνωριστικό του καναλιού ή του νήματος Discord που χρησιμοποίησε το αίτημα.
panel_idnumber
προαιρετικό
Μόνο τα αιτήματα που άνοιξαν από αυτόν τον πίνακα.
opened_fromnumber
προαιρετικό
Χρονική σήμανση Unix: μόνο τα αιτήματα που άνοιξαν αυτή τη στιγμή ή αργότερα.
opened_tonumber
προαιρετικό
Χρονική σήμανση Unix: μόνο τα αιτήματα που άνοιξαν αυτή τη στιγμή ή νωρίτερα.
closed_fromnumber
προαιρετικό
Χρονική σήμανση Unix: μόνο τα αιτήματα που έκλεισαν αυτή τη στιγμή ή αργότερα.
closed_tonumber
προαιρετικό
Χρονική σήμανση Unix: μόνο τα αιτήματα που έκλεισαν αυτή τη στιγμή ή νωρίτερα.
rating_minnumber
προαιρετικό
Ελάχιστη αξιολόγηση, 1-5.
rating_maxnumber
προαιρετικό
Μέγιστη αξιολόγηση, 1-5.
limitnumber
προαιρετικό
Αποτελέσματα ανά σελίδα, 1-50 (προεπιλογή 25).
offsetnumber
προαιρετικό
Αποτελέσματα που παραλείπονται για τη σελιδοποίηση, έως 10000 (προεπιλογή 0).

Η αναζήτηση περιορίζεται σε 10 αιτήματα το λεπτό για κάθε διακριτικό, ξεχωριστά από τις άλλες αναγνώσεις, και τρέχει με αυστηρό χρονικό περιθώριο. Μια αναζήτηση που δεν προλαβαίνει να τελειώσει επιστρέφει 504. Στένεψε τα φίλτρα (πρόσθεσε χρονικό διάστημα ή πίνακα) και δοκίμασε ξανά, αντί να επαναλάβεις το ίδιο ερώτημα. Οι τιμές που δεν περνούν τον έλεγχο απορρίπτονται χωρίς να χαλάει το αίτημα, οπότε δες στο αντικείμενο filters της απάντησης τι εφαρμόστηκε τελικά.

Η αναζήτηση διαβάζει το ευρετήριο των αρχείων, που χτίζεται όσο ο διακομιστής έχει Premium και συμπληρώνεται και στο παλιό σου αρχείο με την πρώτη αναβάθμιση. Το αντικείμενο coverage σε κάθε απάντηση σου λέει πόσα από τα αρχεία σου είναι καταχωρισμένα (indexed) από όσα κρατάμε συνολικά (total). Αν η συμπλήρωση τρέχει ακόμη, οι δύο αριθμοί δεν συμφωνούν προς το παρόν.

Παράδειγμα αιτήματος: τι είπε ένας χρήστης, σε αιτήματα στα οποία δούλεψε και συγκεκριμένο μέλος του προσωπικού
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"
Παράδειγμα αιτήματος: η ίδια αναζήτηση σε σώμα 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
Παράδειγμα απάντησης
{
  "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 }
}