Tapahtumaviite
Jokainen webhook-tapahtumatyyppi ja tarkka payload, jonka TicketWave lähettää.
Tapahtumaviite
Kuuteen tapahtumatyyppiin voi tilata ilmoitukset per päätepiste. Jokainen pyyntö käyttää samaa kehystä — event, timestamp, guild_id ja data — ja vain data-objekti eroaa.
| Tapahtuma | Laukeaa kun |
|---|---|
ticket.created | Tiketti avataan |
ticket.closed | Tiketti suljetaan |
ticket.updated | Avoimeen tikettiin tehdään jokin muu muutos |
message.sent | Jäsen tai henkilökunta kirjoittaa tikettiin |
blacklist.added | Jäsen lisätään mustalle listalle |
blacklist.removed | Mustan listan merkintä poistetaan |
Kentät, joita ei voida ratkaista, lähetetään muodossa null sen sijaan, että ne jätettäisiin pois — joten voit luottaa siihen, että avaimet ovat olemassa. username on null, kun Discord ei palauttanut käyttäjää.
Jaetut kentät
Jokainen tikettitapahtuma sisältää nämä:
| Kenttä | Tyyppi | Kuvaus |
|---|---|---|
ticket_id | string | Luettava tiketin tunnus mallistasi, esim. ticket-1042 |
ticket_num_id | number | Juokseva tiketin numero, esim. 1042 |
channel_id | string | Tiketin Discord-kanava |
category | string | null | Kategorian nimi, null jos tiketillä ei ole kategoriaa |
user | object | null | Tiketin omistaja muodossa { id, username } |
ticket.created
Lähetetään heti, kun tiketin kanava on olemassa.
{
"event": "ticket.created",
"timestamp": "2026-08-26T08:23:11.000Z",
"guild_id": "123456789012345678",
"data": {
"ticket_id": "ticket-1042",
"ticket_num_id": 1042,
"channel_id": "998877665544332211",
"category": "🤖 Support",
"user": { "id": "987654321098765432", "username": "Luna" },
"created_at": "2026-08-26T08:23:11.000Z"
}
}Tämä laukeaa, kun tiketti on avattu, eli ennen kuin jäsen on kirjoittanut mitään. Jos tarvitset ensimmäisen viestin, kuuntele myös message.sent-tapahtumaa.
ticket.closed
{
"event": "ticket.closed",
"timestamp": "2026-08-26T07:45:02.000Z",
"guild_id": "123456789012345678",
"data": {
"ticket_id": "ticket-1041",
"ticket_num_id": 1041,
"channel_id": "998877665544332211",
"category": "💸 Payment",
"user": { "id": "987654321098765432", "username": "Luna" },
"closed_by": { "id": "112233445566778899", "username": "Staff_01" },
"reason": "Issue resolved",
"closed_at": "2026-08-26T07:45:02.000Z"
}
}| Kenttä | Tyyppi | Kuvaus |
|---|---|---|
closed_by | object | Kuka sulki sen. Automaattiset sulkemiset raportoivat botin |
reason | string | null | Sulkemisen syy, null jos syytä ei annettu |
ticket.updated
Yleistapahtuma avoimeen tikettiin tehtäville muutoksille. action kertoo, mitä muuttui, ja changes sisältää kyseisen toiminnon yksityiskohdat.
{
"event": "ticket.updated",
"timestamp": "2026-08-26T14:02:19.000Z",
"guild_id": "123456789012345678",
"data": {
"ticket_id": "ticket-1038",
"ticket_num_id": 1038,
"channel_id": "998877665544332211",
"category": "🤖 Support",
"user": { "id": "987654321098765432", "username": "Luna" },
"action": "ticket_priority:add",
"changes": { "priority": "high" },
"reason": null,
"updated_by": { "id": "112233445566778899", "username": "Staff_01" }
}
}Mahdolliset action-arvot
action | Merkitys | changes sisältää |
|---|---|---|
ticket_claim:add | Henkilökunnan jäsen otti tiketin itselleen | (tyhjä) |
ticket_unclaim:add | Vaatimus vapautettiin | (tyhjä) |
ticket_priority:add | Prioriteetti muuttui | priority |
ticket_rename:add | Kanava nimettiin uudelleen | new_name |
ticket_remind:add | Muistutus lähetettiin | (tyhjä) |
ticket_feedback:add | Jäsen arvioi tiketin | star_count, feedback |
ticket_schedule_close:add | Sulkeminen aikataulutettiin | duration, schedule_time |
ticket_request_close:add | Henkilökunta pyysi jäsentä sulkemaan tiketin | duration, request_duration_time |
ticket_request_close_accept:add | Jäsen hyväksyi | (tyhjä) |
ticket_request_close_deny:add | Jäsen kieltäytyi | (tyhjä) |
ticket_close_cancel:add | Käynnissä oleva sulkeminen peruttiin | (tyhjä) |
ticket_additional_access:add | Käyttäjä tai rooli lisättiin tikettiin | entity_type, entity_id, reason |
ticket_additional_access:remove | Käyttäjä tai rooli poistettiin | entity_type, entity_id, reason |
Käsittele tätä listaa avoimena. Uusia toimintoja lisätään TicketWaven kasvaessa, ja ne saapuvat muodossa ticket.updated. Käsittele vain ne toiminnot, joista välität, ja ohita loput sen sijaan, että heittäisit virheen tuntemattomista arvoista.
Tikettivaiheeseen vastaaminen ei tuota tapahtumaa. Muuten tiketti, jossa on monta vaihetta, täyttäisi päätepisteesi, जबकि jäsen täyttää lomaketta.
message.sent
Lähetetään jokaisesta ihmisen viestistä avoimen tiketin sisällä. Bottien viestit — mukaan lukien TicketWave itse — ohitetaan.
{
"event": "message.sent",
"timestamp": "2026-08-26T22:10:55.000Z",
"guild_id": "123456789012345678",
"data": {
"ticket_id": "ticket-1040",
"ticket_num_id": 1040,
"channel_id": "998877665544332211",
"message_id": "1234567890123456789",
"content": "Hello, how can I help you?",
"author": { "id": "112233445566778899", "username": "Staff_01" },
"is_staff": true,
"sent_at": "2026-08-26T22:10:55.000Z"
}
}| Kenttä | Tyyppi | Kuvaus |
|---|---|---|
content | string | Raaka viestiteksti. Tyhjä vain liitteitä sisältävissä viesteissä |
author | object | Lähettäjän { id, username } |
is_staff | boolean | true, jos lähettäjällä on määritetty tukirooli |
Tämä on selvästi suurivolyymisin tapahtuma — vilkas palvelin tuottaa yhden pyynnön per viesti. Tilaa se vain, jos tarvitset oikeasti viestitason dataa, ja varmista, että vastaanottimesi vastaa nopeasti.
blacklist.added
Ei liity tikettiin, joten tässä payloadissa ei ole ticket_id:tä.
{
"event": "blacklist.added",
"timestamp": "2026-08-26T18:33:47.000Z",
"guild_id": "123456789012345678",
"data": {
"user": { "id": "111223344556677889", "username": "BadActor" },
"reason": "Spam",
"added_by": { "id": "112233445566778899", "username": "Staff_01" }
}
}blacklist.removed
{
"event": "blacklist.removed",
"timestamp": "2026-08-26T18:40:12.000Z",
"guild_id": "123456789012345678",
"data": {
"user": { "id": "111223344556677889", "username": "BadActor" },
"removed_by": { "id": "112233445566778899", "username": "Staff_01" }
}
}Testitapahtumat
Send test event -painike lähettää oikean, allekirjoitetun pyynnön, jonka data on vain:
{
"event": "ticket.created",
"timestamp": "2026-08-26T12:00:00.000Z",
"guild_id": "123456789012345678",
"data": { "test": true }
}event on ensimmäinen tyyppi, johon päätepiste on tilattu. Tarkista data.test, jos haluat ohittaa testitoimitukset tuotantologiikassa.
Seuraavat vaiheet
- Example Server (Käsittele nämä payloadit Expressissä)
- Webhooks (Allekirjoitus, uudelleenyritykset ja toimitushistoria)
How is this guide?
