Add support for buttons message (#584)

* Add list message example

* New protobuf extracted by @tulir

It now supported sending for buttonsMessage

* New protobuf by @tulir

* Added support for buttons message

* Sorry i am sleepy.....

* Sorry my typo :3

* just tidying up
This commit is contained in:
Ryn's
2021-07-13 20:02:27 +08:00
committed by GitHub
parent e40b2f98a6
commit 3ce4f6cc6e
6 changed files with 42558 additions and 6306 deletions

View File

@@ -231,6 +231,36 @@ const vcard = 'BEGIN:VCARD\n' // metadata of the contact card
+ 'TEL;type=CELL;type=VOICE;waid=911234567890:+91 12345 67890\n' // WhatsApp ID + phone number
+ 'END:VCARD'
const sentMsg = await conn.sendMessage(id, {displayname: "Jeff", vcard: vcard}, MessageType.contact)
// send a list message!
const rows = [
{title: 'Row 1', description: "Hello it's description 1", rowId:"rowid1"},
{title: 'Row 2', description: "Hello it's description 2", rowId:"rowid2"}
]
const sections = [{title: "Section 1", rows: rows}]
const button = {
buttonText: 'Click Me!',
description: "Hello it's list message",
sections: sections
}
const sendMsg = await conn.sendMessage(id, button, MessageType.listMessage)
// send a buttons message!
const buttons = [
{buttonId: 'id1', buttonText: {displayText: 'Button 1'}, type: 1},
{buttonId: 'id2', buttonText: {displayText: 'Button 2'}, type: 1}
]
const buttonMessage = {
contentText: "Hi it's button message",
footerText: 'Hello World',
buttons: buttons,
headerType: 1
}
const sendMsg = await conn.sendMessage(id, buttonMessage, MessageType.buttonsMessage)
```
### Media Messages

11489
WAMessage/WAMessage.d.ts vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -11,6 +11,7 @@ import {
WAContactsArrayMessage,
WAGroupInviteMessage,
WAListMessage,
WAButtonsMessage,
WATextMessage,
WAMessageContent, WAMetric, WAFlag, WAMessage, BaileysError, WA_MESSAGE_STATUS_TYPE, WAMessageProto, MediaConnInfo, MessageTypeProto, URL_REGEX, WAUrlInfo, WA_DEFAULT_EPHEMERAL, WAMediaUpload
} from './Constants'
@@ -28,7 +29,7 @@ export class WAConnection extends Base {
*/
async sendMessage(
id: string,
message: string | WATextMessage | WALocationMessage | WAContactMessage | WAContactsArrayMessage | WAGroupInviteMessage | WAMediaUpload | WAListMessage,
message: string | WATextMessage | WALocationMessage | WAContactMessage | WAContactsArrayMessage | WAGroupInviteMessage | WAMediaUpload | WAListMessage | WAButtonsMessage,
type: MessageType,
options: MessageOptions = {},
) {
@@ -67,7 +68,7 @@ export class WAConnection extends Base {
/** Prepares a message for sending via sendWAMessage () */
async prepareMessage(
id: string,
message: string | WATextMessage | WALocationMessage | WAContactMessage | WAContactsArrayMessage | WAGroupInviteMessage | WAMediaUpload | WAListMessage,
message: string | WATextMessage | WALocationMessage | WAContactMessage | WAContactsArrayMessage | WAGroupInviteMessage | WAMediaUpload | WAListMessage | WAButtonsMessage,
type: MessageType,
options: MessageOptions = {},
) {
@@ -106,7 +107,7 @@ export class WAConnection extends Base {
}
}
/** Prepares the message content */
async prepareMessageContent (message: string | WATextMessage | WALocationMessage | WAContactMessage | WAContactsArrayMessage | WAGroupInviteMessage | WAMediaUpload | WAListMessage, type: MessageType, options: MessageOptions) {
async prepareMessageContent (message: string | WATextMessage | WALocationMessage | WAContactMessage | WAContactsArrayMessage | WAGroupInviteMessage | WAMediaUpload | WAListMessage | WAButtonsMessage, type: MessageType, options: MessageOptions) {
let m: WAMessageContent = {}
switch (type) {
case MessageType.text:
@@ -142,6 +143,9 @@ export class WAConnection extends Base {
case MessageType.listMessage:
m.listMessage = WAMessageProto.ListMessage.fromObject(message as any)
break
case MessageType.buttonsMessage:
m.buttonsMessage = WAMessageProto.ButtonsMessage.fromObject(message as any)
break
case MessageType.image:
case MessageType.sticker:
case MessageType.document:

View File

@@ -19,6 +19,7 @@ export type WAContactMessage = proto.ContactMessage
export type WAContactsArrayMessage = proto.ContactsArrayMessage
export type WAGroupInviteMessage = proto.GroupInviteMessage
export type WAListMessage = proto.ListMessage
export type WAButtonsMessage = proto.ButtonsMessage
export type WAMessageKey = proto.IMessageKey
export type WATextMessage = proto.ExtendedTextMessage
export type WAContextInfo = proto.IContextInfo
@@ -333,6 +334,7 @@ export enum MessageType {
contactsArray = 'contactsArrayMessage',
groupInviteMessage = 'groupInviteMessage',
listMessage = 'listMessage',
buttonsMessage = 'buttonsMessage',
location = 'locationMessage',
liveLocation = 'liveLocationMessage',