TicketWave Logo
Webhooks

Eseményreferencia

Minden webhook eseménytípus és a pontos payload, amelyet a TicketWave küld.

Eseményreferencia

Végpontonként hat eseménytípusra lehet feliratkozni. Minden kérés ugyanazt az envelope-ot használja — event, timestamp, guild_id és data —, és csak a data objektum tér el.

EventFires when
ticket.createdEgy jegy megnyílik
ticket.closedEgy jegy lezárul
ticket.updatedBármilyen más változás történik egy nyitott jegyen
message.sentEgy tag vagy a staff ír egy jegybe
blacklist.addedEgy tag feketelistára kerül
blacklist.removedEgy feketelista-bejegyzés eltávolításra kerül

A nem feloldható mezők null értékként érkeznek, nem pedig kihagyásra kerülnek — így számíthatsz arra, hogy a kulcsok léteznek. A username értéke null, ha a Discord nem adta vissza a felhasználót.

Közös mezők

Minden jegyesemény ezeket tartalmazza:

FieldTypeDescription
ticket_idstringA mintád alapján olvasható jegyazonosító, pl. ticket-1042
ticket_num_idnumberA sorszámozott jegyszám, pl. 1042
channel_idstringA jegy Discord csatornája
categorystring | nullKategória neve, null, ha a jegynek nincs kategóriája
userobject | nullA jegy tulajdonosa { id, username } formában

ticket.created

Közvetlenül azután küldődik, hogy a jegycsatorna létrejött.

{
  "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"
  }
}

Ez akkor váltódik ki, amikor a jegy megnyílik, vagyis még azelőtt, hogy a tag bármit is írt volna. Ha az első üzenetre van szükséged, figyeld a message.sent eseményt is.


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"
  }
}
FieldTypeDescription
closed_byobjectKi zárta le. Az automatikus lezárásokat a bot jelenti
reasonstring | nullA lezárás oka, null, ha nem adtak meg ilyet

ticket.updated

Az összesítő esemény a nyitott jegyen történt változásokhoz. Az action megmondja, mi változott, a changes pedig az adott művelet részleteit tartalmazza.

{
  "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" }
  }
}

Lehetséges action értékek

actionMeaningchanges contains
ticket_claim:addEgy staff tag lefoglalta a jegyet(empty)
ticket_unclaim:addA lefoglalás megszűnt(empty)
ticket_priority:addA prioritás megváltozottpriority
ticket_rename:addA csatornát átneveztéknew_name
ticket_remind:addEmlékeztetőt küldtek(empty)
ticket_feedback:addA tag értékelte a jegyetstar_count, feedback
ticket_schedule_close:addLezárást ütemeztek beduration, schedule_time
ticket_request_close:addA staff megkérte a tagot, hogy zárja leduration, request_duration_time
ticket_request_close_accept:addA tag elfogadta(empty)
ticket_request_close_deny:addA tag elutasította(empty)
ticket_close_cancel:addEgy folyamatban lévő lezárást megszakítottak(empty)
ticket_additional_access:addEgy felhasználót vagy szerepkört hozzáadtak a jegyhezentity_type, entity_id, reason
ticket_additional_access:removeEgy felhasználót vagy szerepkört eltávolítottakentity_type, entity_id, reason

Ezt a listát kezeld nyitott végűként. Ahogy a TicketWave fejlődik, új műveletek kerülnek hozzáadásra, és ezek ticket.updated formájában érkeznek. Inkább csak azokra az actionökre reagálj, amelyek érdekelnek, a többit pedig hagyd figyelmen kívül az ismeretlen értékek miatti hibák helyett.

Egy jegylépés megválaszolása nem generál eseményt. Különben egy sok lépésből álló jegy elárasztaná a végpontodat, miközben a tag még mindig tölti ki az űrlapot.


message.sent

Minden emberi üzenethez elküldődik egy nyitott jegyen belül. A botoktól érkező üzenetek — beleértve magát a TicketWave-et is — kimaradnak.

{
  "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"
  }
}
FieldTypeDescription
contentstringA nyers üzenetszöveg. Melléklet-only üzeneteknél üres
authorobjectA küldő { id, username } adatai
is_staffbooleantrue, ha a küldőnek van beállított support szerepköre

Ez messze a legnagyobb forgalmú esemény — egy forgalmas szerver minden üzenethez egy kérést generál. Csak akkor iratkozz fel rá, ha valóban szükséged van üzenetszintű adatokra, és gondoskodj róla, hogy a fogadó gyorsan válaszoljon.


blacklist.added

Nem kapcsolódik jegyhez, ezért ebben a payloadban nincs ticket_id.

{
  "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" }
  }
}

Teszt események

A Send test event gomb egy valódi, aláírt kérést küld, რომლის data értéke csak ennyi:

{
  "event": "ticket.created",
  "timestamp": "2026-08-26T12:00:00.000Z",
  "guild_id": "123456789012345678",
  "data": { "test": true }
}

Az event az első olyan típus, amelyre a végpont fel van iratkozva. Ellenőrizd a data.test mezőt, ha a tesztkézbesítéseket ki szeretnéd hagyni az éles logikából.

Következő lépések

  • Example Server (Ezeknek a payloadoknak a kezelése Expressben)
  • Webhooks (Aláírás, újrapróbálkozások és kézbesítési előzmények)

How is this guide?