TicketWave Logo
Webhooks

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.

TapahtumaLaukeaa kun
ticket.createdTiketti avataan
ticket.closedTiketti suljetaan
ticket.updatedAvoimeen tikettiin tehdään jokin muu muutos
message.sentJäsen tai henkilökunta kirjoittaa tikettiin
blacklist.addedJäsen lisätään mustalle listalle
blacklist.removedMustan 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äTyyppiKuvaus
ticket_idstringLuettava tiketin tunnus mallistasi, esim. ticket-1042
ticket_num_idnumberJuokseva tiketin numero, esim. 1042
channel_idstringTiketin Discord-kanava
categorystring | nullKategorian nimi, null jos tiketillä ei ole kategoriaa
userobject | nullTiketin 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äTyyppiKuvaus
closed_byobjectKuka sulki sen. Automaattiset sulkemiset raportoivat botin
reasonstring | nullSulkemisen syy, null jos syytä ei annettu

ticket.updated

Yleis­tapahtuma 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

actionMerkityschanges sisältää
ticket_claim:addHenkilökunnan jäsen otti tiketin itselleen(tyhjä)
ticket_unclaim:addVaatimus vapautettiin(tyhjä)
ticket_priority:addPrioriteetti muuttuipriority
ticket_rename:addKanava nimettiin uudelleennew_name
ticket_remind:addMuistutus lähetettiin(tyhjä)
ticket_feedback:addJäsen arvioi tiketinstar_count, feedback
ticket_schedule_close:addSulkeminen aikataulutettiinduration, schedule_time
ticket_request_close:addHenkilökunta pyysi jäsentä sulkemaan tiketinduration, request_duration_time
ticket_request_close_accept:addJäsen hyväksyi(tyhjä)
ticket_request_close_deny:addJäsen kieltäytyi(tyhjä)
ticket_close_cancel:addKäynnissä oleva sulkeminen peruttiin(tyhjä)
ticket_additional_access:addKäyttäjä tai rooli lisättiin tikettiinentity_type, entity_id, reason
ticket_additional_access:removeKäyttäjä tai rooli poistettiinentity_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äTyyppiKuvaus
contentstringRaaka viestiteksti. Tyhjä vain liitteitä sisältävissä viesteissä
authorobjectLähettäjän { id, username }
is_staffbooleantrue, 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?