Spaces:
Paused
Paused
| # Creating a Client | |
| To start using `Wppconnect Bot`, create a file and call the {@link create} method.\ | |
| That method returns a `Promise` of {@link Whatsapp}. | |
| ```javascript | |
| // Supports ES6 | |
| // import { create, Whatsapp } from '@wppconnect-team/wppconnect'; | |
| const wppconnect = require('@wppconnect-team/wppconnect'); | |
| wppconnect | |
| .create() | |
| .then((client) => client.start()) | |
| .catch((error) => console.log(error)); | |
| ``` | |
| ## Multi sessions | |
| If you want to start more than one session, for example, | |
| in case you have different departments in your project, | |
| then you had to specify it in your code like in that example: | |
| ```javascript | |
| // Init sales WhatsApp bot | |
| wppconnect.create({session: 'sales'}).then((client) => client.start()); | |
| // Init support WhatsApp bot | |
| wppconnect.create({session: 'support'}).then((client) => client.start()); | |
| ``` | |
| ## Passing options on create | |
| The {@link create} method third parameter can have the following optional parameters (see all parameters in {@link CreateOptions}): | |
| ```javascript | |
| wppconnect.create({ | |
| session: 'sessionName', //Pass the name of the client you want to start the bot | |
| catchQR: (base64Qrimg, asciiQR, attempts, urlCode) => { | |
| console.log('Number of attempts to read the qrcode: ', attempts); | |
| console.log('Terminal qrcode: ', asciiQR); | |
| console.log('base64 image string qrcode: ', base64Qrimg); | |
| console.log('urlCode (data-ref): ', urlCode); | |
| }, | |
| statusFind: (statusSession, session) => { | |
| console.log('Status Session: ', statusSession); //return isLogged || notLogged || browserClose || qrReadSuccess || qrReadFail || autocloseCalled || disconnectedMobile || deleteToken | |
| //Create session wss return "serverClose" case server for close | |
| console.log('Session name: ', session); | |
| }, | |
| onLoadingScreen: (percent, message) => { | |
| console.log('LOADING_SCREEN', percent, message); | |
| }, | |
| headless: true, // Headless Chrome | |
| devtools: false, // Open devtools by default | |
| useChrome: true, // If false will use Chromium instance | |
| debug: false, // Opens a debug session | |
| logQR: true, // Logs QR automatically in terminal | |
| browserWS: '', // If you want to use browserWSEndpoint | |
| browserArgs: [''], // Parameters to be added into the Chrome browser instance | |
| puppeteerOptions: {}, // Will be passed to puppeteer.launch | |
| disableWelcome: false, // Option to disable the welcoming message which appears in the beginning | |
| updatesLog: true, // Logs info updates automatically in terminal | |
| autoClose: 60000, // Automatically closes the wppconnect only when scanning the QR code (default 60 seconds, if you want to turn it off, assign 0 or false) | |
| tokenStore: 'file', // Define how to work with tokens, which can be a custom interface | |
| folderNameToken: './tokens', //folder name when saving tokens | |
| // BrowserSessionToken | |
| // To receive the client's token use the function await client.getSessionTokenBrowser() | |
| sessionToken: { | |
| WABrowserId: '"UnXjH....."', | |
| WASecretBundle: '{"key":"+i/nRgWJ....","encKey":"kGdMR5t....","macKey":"+i/nRgW...."}', | |
| WAToken1: '"0i8...."', | |
| WAToken2: '"1@lPpzwC...."', | |
| } | |
| }) | |
| .then((client) => client.start()) | |
| .catch((error) => console.log(error)); | |
| ``` | |
| ### Callback Status Session | |
| More details in {@link StatusFind} | |
| | Status | Condition | | |
| |----------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------| | |
| | `isLogged` | When the user is already logged in to the browser | | |
| | `notLogged` | When the user is not connected to the browser, it is necessary to scan the QR code through the cell phone in the option WhatsApp Web | | |
| | `browserClose` | If the browser is closed this parameter is returned | | |
| | `qrReadSuccess` | If the user is not logged in, the QR code is passed on the terminal a callback is returned. After the correct reading by cell phone this parameter is returned | | |
| | `qrReadFail` | If the browser stops when the QR code scan is in progress, this parameter is returned | | |
| | `autocloseCalled` | The browser was closed using the autoClose command | | |
| | `disconnectedMobile` | Client has disconnected to the mobile device | | |
| | `serverClose` | Client has disconnected in to wss | | |
| | `deleteToken` | If you pass true within the function `client.getSessionTokenBrowser(true)` | | |
| ```javascript | |
| const wppconnect = require('@wppconnect-team/wppconnect'); | |
| wppconnect | |
| .create({ | |
| session: 'sessionName', | |
| statusFind: (statusSession, session) => { | |
| // return: isLogged || notLogged || browserClose || qrReadSuccess || qrReadFail || autocloseCalled || disconnectedMobile || deleteToken | |
| console.log('Status Session: ', statusSession); | |
| // create session wss return "serverClose" case server for close | |
| console.log('Session name: ', session); | |
| }, | |
| }) | |
| .then((client) => client.start()) | |
| .catch((error) => console.log(error)); | |
| ``` | |
| ### Phone connection verification | |
| To enforce the phone connection verification, you can use the code below or check the documentation {@link Whatsapp.startPhoneWatchdog}.: | |
| ```javascript | |
| // To start with default interval. | |
| client.startPhoneWatchdog(); | |
| // To start with custom interval. | |
| client.startPhoneWatchdog(30000); // 30s | |
| // To stop. | |
| client.stopPhoneWatchdog(); | |
| ``` | |
| ### Exporting QR Code | |
| By default, a QR code will appear on the terminal. If you need to pass the QR | |
| somewhere else here is how (See {@link CatchQRCallback}): | |
| ```javascript | |
| const fs = require('fs'); | |
| const wppconnect = require('@wppconnect-team/wppconnect'); | |
| wppconnect | |
| .create({ | |
| session: 'sessionName', | |
| catchQR: (base64Qr, asciiQR) => { | |
| console.log(asciiQR); // Optional to log the QR in the terminal | |
| var matches = base64Qr.match(/^data:([A-Za-z-+\/]+);base64,(.+)$/), | |
| response = {}; | |
| if (matches.length !== 3) { | |
| return new Error('Invalid input string'); | |
| } | |
| response.type = matches[1]; | |
| response.data = new Buffer.from(matches[2], 'base64'); | |
| var imageBuffer = response; | |
| require('fs').writeFile( | |
| 'out.png', | |
| imageBuffer['data'], | |
| 'binary', | |
| function (err) { | |
| if (err != null) { | |
| console.log(err); | |
| } | |
| } | |
| ); | |
| }, | |
| logQR: false, | |
| }) | |
| .then((client) => client.start()) | |
| .catch((error) => console.log(error)); | |
| ``` | |
| ### Saving Session Token | |
| Read the {@link TokenStore} | |
| ### Multidevice (BETA) | |
| To use multidevice account, you have to set a fixed user data dir for the browser to keep it logged, | |
| because WhatsApp changed the way of authentication. | |
| To setup this, you can use the example below: | |
| ```javascript | |
| wppconnect | |
| .create({ | |
| // ... | |
| session: 'mySessionName', | |
| puppeteerOptions: { | |
| userDataDir: './tokens/mySessionName', // or your custom directory | |
| }, | |
| // ... | |
| }) | |
| .then((client) => client.start()) | |
| .catch((error) => console.log(error)); | |
| ``` | |