Giter Club home page Giter Club logo

whatsapp-apix's Introduction



Telegram Group Whatsapp Group License Support Support

WhatsApp-Api-NodeJs

This code is an implementation of Baileys, as a RestFull Api service, which controls whatsapp functions.
With this one you can create multiservice chats, service bots or any other system that uses whatsapp. With this code you don't need to know javascript for nodejs , just start the server and make the language requests that you feel most comfortable with.

Infrastructure

Nvm installation

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
# or
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash

After finishing, restart the terminal to load the new information.

Docker installation [optional]

curl -fsSL https://get.docker.com -o get-docker.sh

sudo sh get-docker.sh

sudo usermod -aG docker ${USER}

Nodejs installation

nvm install 18.17.0

pm2 installation

npm i -g pm2

yarn installation

npm i -g yarn
docker --version

node --version

MongoDb [optional]

After installing docker and docker-compose, up the container.

In the same directory where the file is located, run the following command:

bash docker.sh

Using the database is optional.

Application startup

Cloning the Repository

git clone https://github.com/code-chat-br/whatsapp-api.git

Go to the project directory and install all dependencies.

cd whatsapp-api

yarn i

Finally, run the command below to start the application:

# Under development
yarn start

# In production
yarn start:prod

# pm2
pm2 start 'yarn start:prod' --name ApiCodechat

Swagger - OpenAPI 3.0.0

Authentication

You can define two authentication types for the routes in the env file. Authentications must be inserted in the request header.

  1. apikey

  2. jwt: A JWT is a standard for authentication and information exchange defined with a signature.

Authentications are generated at instance creation time.

Note: There is also the possibility to define a global api key, which can access and control all instances.

Connection

Create an instance

HTTP

NOTE: This key must be inserted in the request header to create an instance.

POST /instance/create HTTP/1.1
Host: localhost:8080
Content-Type: application/json
apikey: t8OOEeISKzpmc3jjcMqBWYSaJH2PIxns

{
  "instanceName": "codechat"
}
cURL
curl --location --request POST 'http://localhost:8080/instance/create' \
--header 'Content-Type: application/json' \
--header 'apikey: t8OOEeISKzpmc3jjcMqBWYSaJH2PIxns' \
--data-raw '{
  "instanceName": "codechat"
}'

Response

{
  "instance": {
    "instanceName": "codechat",
    "status": "created"
  },
  "hash": {
    "jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. [...]"

    // or
    // "apikey": "88513847-1B0E-4188-8D76-4A2750C9B6C3"
  }
}

Connection with qrcode

HTTP
GET /instance/connect/codechat HTTP/1.1
Host: localhost:8080
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. [...]
GET /instance/connect/codechat HTTP/1.1
Host: localhost:8080
apikey: 88513847-1B0E-4188-8D76-4A2750C9B6C3
cURL
curl --location --request GET 'http://localhost:8080/instance/connect/codechat' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. [...]'
curl --location --request GET 'http://localhost:8080/instance/connect/codechat' \
--header 'apikey: 88513847-1B0E-4188-8D76-4A2750C9B6C3'

Response

{
  "code": "2@nXSUgRJSBY6T0XJmiFKZ0 [...] ,XsgJhJHYa+0MPpXANdPHHt6Ke/I7O2QyXT/Lsge0uSg=",
  "base64": "data:image/png;base64,iVBORw0KGgoAAAANSUhE [...] LkMtqAAAAABJRU5ErkJggg=="
}

App in Docker

After building the application, in the same directory as the files above, run the following command:

docker-compose up

Send Messages

Send Text
Send Buttons
Send Template
Send Media: audio - video - image - document - gif

base64: true
Send Media File
Send Audio type WhatsApp
Send Audio type WhatsApp - File
Send Location
Send List
Send Link Preview
Send Contact
Send Reaction - emoji

Postman collections

Webhook Events

Name Event TypeData Description
QRCODE_UPDATED qrcode.updated json Sends the base64 of the qrcode for reading
CONNECTION_UPDATE connection.update json Informs the status of the connection with whatsapp
MESSAGES_SET message.set json Sends a list of all your messages uploaded on whatsapp
This event occurs only once
MESSAGES_UPSERT message.upsert json Notifies you when a message is received
MESSAGES_UPDATE message.update json Tells you when a message is updated
SEND_MESSAGE send.message json Notifies when a message is sent
CONTACTS_SET contacts.set json Performs initial loading of all contacts
This event occurs only once
CONTACTS_UPSERT contacts.upsert json Reloads all contacts with additional information
This event occurs only once
CONTACTS_UPDATE contacts.update json Informs you when the chat is updated
PRESENCE_UPDATE presence.update json Informs if the user is online, if he is performing some action like writing or recording and his last seen
'unavailable'
CHATS_SET chats.set json Send a list of all loaded chats
CHATS_UPDATE chats.update json Informs you when the chat is updated
CHATS_UPSERT chats.upsert json Sends any new chat information
GROUPS_UPSERT groups.upsert JSON Notifies when a group is created
GROUPS_UPDATE groups.update JSON Notifies when a group has its information updated
GROUP_PARTICIPANTS_UPDATE group-participants.update JSON Notifies when an action occurs involving a participant
'add'
NEW_TOKEN new.jwt JSON Notifies when the token (jwt) is updated

Env File

See additional settings that can be applied through the env file by clicking here.

⚠️Attention⚠️: copy the dev-env.yml file to env.yml.

SSL

To install the SSL certificate, follow the instructions below.

Note

This code is in no way affiliated with WhatsApp. Use at your own discretion. Don't spam this.

This code was produced based on the baileys library and it is still under development.

Donate to the project.

Pix: 2b526ada-4ef4-4db4-bbeb-f60da2421fce

PicPay


whatsapp-apix's People

Contributors

jrcleber avatar jeankassio avatar vidz1979 avatar dudanogueira avatar jorgelig avatar w3nder avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.