[MD] Added template support and footers for buttons & templates (#942)

* Added template support and footers for buttons & templates

* Template message readme
This commit is contained in:
Rajeh Taher
2021-11-30 07:10:54 +02:00
committed by GitHub
parent a8decb9c11
commit cd9c313e47
3 changed files with 70 additions and 4 deletions

View File

@@ -50,6 +50,12 @@ type Buttonable = {
/** add buttons to the message */
buttons?: proto.IButton[]
}
type Templatable = {
/** add buttons to the message (conflicts with normal buttons)*/
templateButtons?: proto.IHydratedTemplateButton[]
footer?: string
}
type WithDimensions = {
width?: number
height?: number
@@ -60,13 +66,13 @@ export type AnyMediaMessageContent = (
image: WAMediaUpload
caption?: string
jpegThumbnail?: string
} & Mentionable & Buttonable & WithDimensions) |
} & Mentionable & Buttonable & Templatable & WithDimensions) |
({
video: WAMediaUpload
caption?: string
gifPlayback?: boolean
jpegThumbnail?: string
} & Mentionable & Buttonable & WithDimensions) | {
} & Mentionable & Buttonable & Templatable & WithDimensions) | {
audio: WAMediaUpload
/** if set to true, will send as a `voice note` */
pttAudio?: boolean
@@ -78,14 +84,14 @@ export type AnyMediaMessageContent = (
document: WAMediaUpload
mimetype: string
fileName?: string
} & Buttonable)) &
} & Buttonable & Templatable)) &
{ mimetype?: string }
export type AnyRegularMessageContent = (
({
text: string
}
& Mentionable & Buttonable) |
& Mentionable & Buttonable & Templatable) |
AnyMediaMessageContent |
{
contacts: {

View File

@@ -262,8 +262,37 @@ export const generateWAMessageContent = async(
Object.assign(buttonsMessage, m)
}
if ('footer' in message && !!message.footer) {
buttonsMessage.footerText = message.footer
}
m = { buttonsMessage }
} else if ('templateButtons' in message && !!message.templateButtons) {
const templateMessage: proto.ITemplateMessage = {
hydratedTemplate: {
hydratedButtons: message.templateButtons
}
}
if ('text' in message) {
templateMessage.hydratedTemplate.hydratedContentText = message.text
} else {
if('caption' in message) {
templateMessage.hydratedTemplate.hydratedContentText = message.caption
}
Object.assign(templateMessage.hydratedTemplate, m)
}
if ('footer' in message && !!message.footer) {
templateMessage.hydratedTemplate.hydratedFooterText = message.footer
}
m = { templateMessage }
}
if('viewOnce' in message && !!message.viewOnce) {
m = { viewOnceMessage: { message: m } }
}