Giter Club home page Giter Club logo

repowhatsaap's Introduction

WhatsApp HTTP API Free

WhatsApp HTTP API that you can configure in a click! It's really Free! :)

The article Make a WhatsApp Bot Via HTTP API For Free And Fun! on Medium about this repository.

You can go through currently supported methods in Swagger The project is an HTTP wrapper around https://github.com/orkestral/venom, so we can also support these methods:

Automatic QR Refresh
Send text, image, video, audio and docs
Get contacts, chats, groups, group members, Block List
Send contacts
Send stickers
Send stickers GIF
Multiple Sessions
Forward Messages
Receive message
insert user section
📍 Send location!!
🕸🕸 and much more

Installation

Only thing that you must have - installed docker. Please follow the original instruction how to install docker

docker pull allburov/whatsapp-http-api

First Steps

Run and login

Run WhatsApp HTTP API:

docker run -it -v `pwd`/tokens:/app/tokens -p 127.0.0.1:3000:3000/tcp allburov/whatsapp-http-api

If you are not logged in, it will print a QR code in the terminal. Scan it with your phone and you are ready to go! How to log in - the instruction on WhatsApp site We will remember the session so there is no need to authenticate everytime.

After that open in a browser the link and you'll see Swagger (OpenApi) API specification for WhatsApp HTTP API http://localhost:3000/#/

Send a text message

Let's try to send a message:

# Phone without +
export PHONE=79776772457
curl -d "{\"chatId\": \"${PHONE}@c.us\", \"text\": \"Hello from WhatsApp HTTP API Free\" }" -H "Content-Type: application/json" -X POST http://localhost:3000/api/sendText

Get a screenshot

Go to the "screenshot" section and get a screenshot http://localhost:3000/#/screenshot

Receive messages

To show how to receive messages we'll create a simple "echo" server with two functions:

  1. When we receive a text message - just send the text back
  2. When we receive a message with a file (an image, a voice message) - download it and send the path back

In order to send you messages we use webhooks and configure them via environments variables. So what you need to create "echo" server is HTTP server that will receive JSON POST request and then call back WhatsApp HTTP API via POST /api/sendText endpoint with JSON body.

Python echo server

We use Python. Feel free to create your favorite language example and contribute to the project!

Run "echo" server in one terminal and leave it working:

# if you haven't already
git clone https://github.com/allburov/whatsapp-http-api.git 
cd whatsapp-http-api
python -mpip install -r examples/requirements.txt
export FLASK_APP=examples/echo.py
flask run

Visit http://localhost:5000 and check that we are good to go further.

Let's start WhatsApp HTTP API and configure the "on message" webhook and point it on our "http://localhost:5000/message" endpoint:

docker run -it -v `pwd`/tokens:/app/tokens --network=host -e WHATSAPP_HOOK_ONMESSAGE=http://localhost:5000/message allburov/whatsapp-http-api

Now go ahead, open the second whatsapp and send to our WhatsApp HTTP API a text message! It must reply the same text.

If you try to send an image the "echo server" will send a path to the downloaded file.

Environment variables

Common

  • DEBUG - show debug and verbose logs, set in any value
  • WHATSAPP_API_PORT - listen port for HTTP server (default: 3000)
  • WHATSAPP_API_HOSTNAME - Hostname for HTTP server (default: localhost)

Webhooks

The description of webhooks you can in Venom README.md, section Events

All webhooks are disabled by default:

  • WHATSAPP_HOOK_ONMESSAGE=http://localhost/uri
  • WHATSAPP_HOOK_ONSTATECHANGE=http://localhost/uri
  • WHATSAPP_HOOK_ONACK=http://localhost/uri
  • WHATSAPP_HOOK_ONADDEDTOGROUP=http://localhost/uri

File storage

  • WHATSAPP_FILES_FOLDER - folder where will be stored files from chats (images, voice messages) ( default: /tmp/whatsapp-files)
  • WHATSAPP_FILES_MIMETYPES - download only these mimetypes from messages (download all files be default). Mimetypes must be separated by a comma, without spaces: audio,image/png,image/gif. In order to choose type use prefix ( like audio,image).
  • WHATSAPP_FILES_LIFETIME- to keep free space files will be removed after this time (default: 180, in seconds)

Development

Use node 10 version:

$ npm install

Running the app

# development
$ npm run start

# watch mode
$ npm run start:dev

# production mode
$ npm run start:prod

Test

# unit tests
$ npm run test

# e2e tests
$ npm run test:e2e

# test coverage
$ npm run test:cov

repowhatsaap's People

Contributors

allburov avatar drobbe avatar elmer-rosario-2027 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.