|
import { ApiProperty } from '@nestjs/swagger'; |
|
|
|
import { MessageDestination } from './chatting.dto'; |
|
import { |
|
WAHAEngine, |
|
WAHAEvents, |
|
WAHASessionStatus, |
|
WAMessageAck, |
|
} from './enums.dto'; |
|
import { WAHAEnvironment } from './environment.dto'; |
|
import { WAHAChatPresences } from './presence.dto'; |
|
import { ChatIdProperty, MessageIdProperty } from './properties.dto'; |
|
import { WAMessage, WAMessageReaction } from './responses.dto'; |
|
import { MeInfo } from './sessions.dto'; |
|
|
|
export class WAMessageAckBody { |
|
@MessageIdProperty() |
|
id: string; |
|
|
|
@ChatIdProperty() |
|
from: string; |
|
|
|
@ChatIdProperty() |
|
to: string; |
|
|
|
@ChatIdProperty() |
|
participant: string; |
|
|
|
fromMe: boolean; |
|
ack: WAMessageAck; |
|
ackName: string; |
|
} |
|
|
|
export class WAGroupPayload { |
|
@ApiProperty({ |
|
description: 'ID that represents the groupNotification', |
|
}) |
|
id: any; |
|
|
|
@ApiProperty({ |
|
description: 'Unix timestamp for when the groupNotification was created', |
|
}) |
|
timestamp: number; |
|
|
|
@ChatIdProperty({ |
|
description: 'ID for the Chat that this groupNotification was sent for', |
|
}) |
|
chatId: string; |
|
|
|
@ApiProperty({ |
|
description: 'ContactId for the user that produced the GroupNotification', |
|
}) |
|
author: string; |
|
|
|
@ApiProperty({ |
|
description: 'Extra content', |
|
}) |
|
body: string; |
|
|
|
@ApiProperty({ |
|
description: |
|
'Contact IDs for the users that were affected by this GroupNotification', |
|
}) |
|
recipientIds: string[]; |
|
} |
|
|
|
export class PollVote extends MessageDestination { |
|
@ApiProperty({ |
|
description: 'Option that user has selected', |
|
example: ['Awesome!'], |
|
}) |
|
selectedOptions: string[]; |
|
|
|
@ApiProperty({ |
|
description: 'Timestamp, ms', |
|
example: 1692861369, |
|
}) |
|
timestamp: number; |
|
} |
|
|
|
export class PollVotePayload { |
|
vote: PollVote; |
|
poll: MessageDestination; |
|
} |
|
|
|
export class WAMessageRevokedBody { |
|
after?: WAMessage; |
|
before?: WAMessage; |
|
} |
|
export class WASessionStatusBody { |
|
@ApiProperty({ |
|
example: 'default', |
|
}) |
|
name: string; |
|
|
|
status: WAHASessionStatus; |
|
} |
|
|
|
export class WAHAWebhook { |
|
@ApiProperty({ |
|
example: 'default', |
|
}) |
|
session: string; |
|
|
|
@ApiProperty({ |
|
example: WAHAEngine.WEBJS, |
|
}) |
|
engine: WAHAEngine; |
|
|
|
me?: MeInfo; |
|
|
|
environment: WAHAEnvironment; |
|
|
|
event: WAHAEvents; |
|
|
|
payload: |
|
| WAGroupPayload |
|
|
|
| object; |
|
} |
|
class WAHAWebhookSessionStatus extends WAHAWebhook { |
|
@ApiProperty({ |
|
description: 'The event is triggered when the session status changes.', |
|
}) |
|
event = WAHAEvents.SESSION_STATUS; |
|
|
|
payload: WASessionStatusBody; |
|
} |
|
|
|
class WAHAWebhookMessage extends WAHAWebhook { |
|
@ApiProperty({ description: 'Incoming message.' }) |
|
event = WAHAEvents.MESSAGE; |
|
|
|
payload: WAMessage; |
|
} |
|
|
|
class WAHAWebhookMessageReaction extends WAHAWebhook { |
|
@ApiProperty({ |
|
description: |
|
'The event is triggered when a user reacts or removes a reaction.', |
|
}) |
|
event = WAHAEvents.MESSAGE_REACTION; |
|
|
|
payload: WAMessageReaction; |
|
} |
|
|
|
class WAHAWebhookMessageAny extends WAHAWebhook { |
|
@ApiProperty({ |
|
description: 'Fired on all message creations, including your own.', |
|
}) |
|
event = WAHAEvents.MESSAGE_ANY; |
|
|
|
payload: WAMessage; |
|
} |
|
|
|
class WAHAWebhookMessageAck extends WAHAWebhook { |
|
@ApiProperty({ |
|
description: |
|
'Receive events when server or recipient gets the message, read or played it.', |
|
}) |
|
event = WAHAEvents.MESSAGE_ACK; |
|
|
|
payload: WAMessageAckBody; |
|
} |
|
|
|
class WAHAWebhookMessageRevoked extends WAHAWebhook { |
|
@ApiProperty({ |
|
description: |
|
'The event is triggered when a user, whether it be you or any other participant, ' + |
|
'revokes a previously sent message.', |
|
}) |
|
event = WAHAEvents.MESSAGE_REVOKED; |
|
|
|
payload: WAMessageRevokedBody; |
|
} |
|
|
|
class WAHAWebhookStateChange extends WAHAWebhook { |
|
@ApiProperty({ |
|
description: 'It’s an internal engine’s state, not session status.', |
|
}) |
|
event = WAHAEvents.STATE_CHANGE; |
|
|
|
payload: any; |
|
} |
|
|
|
class WAHAWebhookGroupJoin extends WAHAWebhook { |
|
@ApiProperty({ |
|
description: 'Some one join a group.', |
|
}) |
|
event = WAHAEvents.GROUP_JOIN; |
|
|
|
payload: any; |
|
} |
|
|
|
class WAHAWebhookGroupLeave extends WAHAWebhook { |
|
@ApiProperty({ |
|
description: 'Some one left a group.', |
|
}) |
|
event = WAHAEvents.GROUP_LEAVE; |
|
|
|
payload: any; |
|
} |
|
|
|
class WAHAWebhookPresenceUpdate extends WAHAWebhook { |
|
@ApiProperty({ |
|
description: 'The most recent presence information for a chat.', |
|
}) |
|
event = WAHAEvents.PRESENCE_UPDATE; |
|
|
|
payload: WAHAChatPresences; |
|
} |
|
|
|
class WAHAWebhookPollVote extends WAHAWebhook { |
|
@ApiProperty({ |
|
description: 'With this event, you receive new votes for the poll sent.', |
|
}) |
|
event = WAHAEvents.POLL_VOTE; |
|
|
|
payload: PollVotePayload; |
|
} |
|
|
|
class WAHAWebhookPollVoteFailed extends WAHAWebhook { |
|
@ApiProperty({ |
|
description: |
|
'There may be cases when WAHA fails to decrypt a vote from the user. ' + |
|
'Read more about how to handle such events: https://waha.devlike.pro/docs/how-to/polls/#pollvotefailed', |
|
}) |
|
event = WAHAEvents.POLL_VOTE_FAILED; |
|
|
|
payload: PollVotePayload; |
|
} |
|
|
|
const WAHA_WEBHOOKS = [ |
|
WAHAWebhookSessionStatus, |
|
WAHAWebhookMessage, |
|
WAHAWebhookMessageReaction, |
|
WAHAWebhookMessageAny, |
|
WAHAWebhookMessageAck, |
|
WAHAWebhookMessageRevoked, |
|
WAHAWebhookStateChange, |
|
WAHAWebhookGroupJoin, |
|
WAHAWebhookGroupLeave, |
|
WAHAWebhookPresenceUpdate, |
|
WAHAWebhookPollVote, |
|
WAHAWebhookPollVoteFailed, |
|
]; |
|
export { WAHA_WEBHOOKS }; |
|
|