feat: get/add/edit customer notes (#3806)
* feat: add required module * feat: add 'addOrEditCustomerNote' function * feat: add 'getCustomerNote' function * fix: check for logic availability * feat: add 'Chat.addOrEditCustomerNote' * feat: add Chat.getCustomerNote
This commit is contained in:
parent
0825033850
commit
7304ec2135
4 changed files with 113 additions and 0 deletions
30
index.d.ts
vendored
30
index.d.ts
vendored
|
|
@ -244,6 +244,25 @@ declare namespace WAWebJS {
|
||||||
/** Save new contact to user's addressbook or edit the existing one */
|
/** Save new contact to user's addressbook or edit the existing one */
|
||||||
saveOrEditAddressbookContact(phoneNumber: string, firstName: string, lastName: string, syncToAddressbook?: boolean): Promise<ChatId>
|
saveOrEditAddressbookContact(phoneNumber: string, firstName: string, lastName: string, syncToAddressbook?: boolean): Promise<ChatId>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add or edit a customer note
|
||||||
|
* @see https://faq.whatsapp.com/1433099287594476
|
||||||
|
*/
|
||||||
|
addOrEditCustomerNote(userId: string, note: string): Promise<void>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a customer note
|
||||||
|
* @see https://faq.whatsapp.com/1433099287594476
|
||||||
|
*/
|
||||||
|
getCustomerNote(userId: string): Promise<{
|
||||||
|
chatId: string;
|
||||||
|
content: string;
|
||||||
|
createdAt: number;
|
||||||
|
id: string;
|
||||||
|
modifiedAt: number;
|
||||||
|
type: string;
|
||||||
|
}>
|
||||||
|
|
||||||
/** Deletes the contact from user's addressbook */
|
/** Deletes the contact from user's addressbook */
|
||||||
deleteAddressbookContact(honeNumber: string): Promise<void>
|
deleteAddressbookContact(honeNumber: string): Promise<void>
|
||||||
|
|
||||||
|
|
@ -1707,6 +1726,17 @@ declare namespace WAWebJS {
|
||||||
getPinnedMessages: () => Promise<[Message]|[]>
|
getPinnedMessages: () => Promise<[Message]|[]>
|
||||||
/** Sync history conversation of the Chat */
|
/** Sync history conversation of the Chat */
|
||||||
syncHistory: () => Promise<boolean>
|
syncHistory: () => Promise<boolean>
|
||||||
|
/** Add or edit a customer note */
|
||||||
|
addOrEditCustomerNote: (note: string) => Promise<void>
|
||||||
|
/** Get a customer note */
|
||||||
|
getCustomerNote: () => Promise<{
|
||||||
|
chatId: string;
|
||||||
|
content: string;
|
||||||
|
createdAt: number;
|
||||||
|
id: string;
|
||||||
|
modifiedAt: number;
|
||||||
|
type: string;
|
||||||
|
}>
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Channel {
|
export interface Channel {
|
||||||
|
|
|
||||||
|
|
@ -2356,6 +2356,57 @@ class Client extends EventEmitter {
|
||||||
}));
|
}));
|
||||||
}, userIds);
|
}, userIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add or edit a customer note
|
||||||
|
* @see https://faq.whatsapp.com/1433099287594476
|
||||||
|
* @param {string} userId The ID of a customer to add a note to
|
||||||
|
* @param {string} note The note to add
|
||||||
|
* @returns {Promise<void>}
|
||||||
|
*/
|
||||||
|
async addOrEditCustomerNote(userId, note) {
|
||||||
|
return await this.pupPage.evaluate(async (userId, note) => {
|
||||||
|
if (!window.Store.BusinessGatingUtils.smbNotesV1Enabled()) return;
|
||||||
|
|
||||||
|
return window.Store.CustomerNoteUtils.noteAddAction(
|
||||||
|
'unstructured',
|
||||||
|
window.Store.WidToJid.widToUserJid(window.Store.WidFactory.createWid(userId)),
|
||||||
|
note
|
||||||
|
);
|
||||||
|
}, userId, note);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a customer note
|
||||||
|
* @see https://faq.whatsapp.com/1433099287594476
|
||||||
|
* @param {string} userId The ID of a customer to get a note from
|
||||||
|
* @returns {Promise<{
|
||||||
|
* chatId: string,
|
||||||
|
* content: string,
|
||||||
|
* createdAt: number,
|
||||||
|
* id: string,
|
||||||
|
* modifiedAt: number,
|
||||||
|
* type: string
|
||||||
|
* }>}
|
||||||
|
*/
|
||||||
|
async getCustomerNote(userId) {
|
||||||
|
return await this.pupPage.evaluate(async (userId) => {
|
||||||
|
if (!window.Store.BusinessGatingUtils.smbNotesV1Enabled()) return null;
|
||||||
|
|
||||||
|
const note = await window.Store.CustomerNoteUtils.retrieveOnlyNoteForChatJid(
|
||||||
|
window.Store.WidToJid.widToUserJid(window.Store.WidFactory.createWid(userId))
|
||||||
|
);
|
||||||
|
|
||||||
|
let serialized = note?.serialize();
|
||||||
|
|
||||||
|
if (!serialized) return null;
|
||||||
|
|
||||||
|
serialized.chatId = window.Store.JidToWid.userJidToUserWid(serialized.chatJid)._serialized;
|
||||||
|
delete serialized.chatJid;
|
||||||
|
|
||||||
|
return serialized;
|
||||||
|
}, userId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = Client;
|
module.exports = Client;
|
||||||
|
|
|
||||||
|
|
@ -294,6 +294,36 @@ class Chat extends Base {
|
||||||
async syncHistory() {
|
async syncHistory() {
|
||||||
return this.client.syncHistory(this.id._serialized);
|
return this.client.syncHistory(this.id._serialized);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add or edit a customer note
|
||||||
|
* @see https://faq.whatsapp.com/1433099287594476
|
||||||
|
* @param {string} note The note to add
|
||||||
|
* @returns {Promise<void>}
|
||||||
|
*/
|
||||||
|
async addOrEditCustomerNote(note) {
|
||||||
|
if (this.isGroup || this.isChannel) return;
|
||||||
|
|
||||||
|
return this.client.addOrEditCustomerNote(this.id._serialized, note);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a customer note
|
||||||
|
* @see https://faq.whatsapp.com/1433099287594476
|
||||||
|
* @returns {Promise<{
|
||||||
|
* chatId: string,
|
||||||
|
* content: string,
|
||||||
|
* createdAt: number,
|
||||||
|
* id: string,
|
||||||
|
* modifiedAt: number,
|
||||||
|
* type: string
|
||||||
|
* }>}
|
||||||
|
*/
|
||||||
|
async getCustomerNote() {
|
||||||
|
if (this.isGroup || this.isChannel) return null;
|
||||||
|
|
||||||
|
return this.client.getCustomerNote(this.id._serialized);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = Chat;
|
module.exports = Chat;
|
||||||
|
|
|
||||||
|
|
@ -103,6 +103,8 @@ exports.ExposeStore = () => {
|
||||||
window.Store.UploadUtils = window.require('WAWebUploadManager');
|
window.Store.UploadUtils = window.require('WAWebUploadManager');
|
||||||
window.Store.WAWebStreamModel = window.require('WAWebStreamModel');
|
window.Store.WAWebStreamModel = window.require('WAWebStreamModel');
|
||||||
window.Store.FindOrCreateChat = window.require('WAWebFindChatAction');
|
window.Store.FindOrCreateChat = window.require('WAWebFindChatAction');
|
||||||
|
window.Store.CustomerNoteUtils = window.require('WAWebNoteAction');
|
||||||
|
window.Store.BusinessGatingUtils = window.require('WAWebBizGatingUtils');
|
||||||
|
|
||||||
window.Store.Settings = {
|
window.Store.Settings = {
|
||||||
...window.require('WAWebUserPrefsGeneral'),
|
...window.require('WAWebUserPrefsGeneral'),
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue