Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
35e92bebbd | ||
|
|
2bd3e9f556 | ||
|
|
60705d1558 | ||
|
|
2cbd08c470 | ||
|
|
51a501611d | ||
|
|
46bcfb5695 | ||
|
|
e44bd55df2 | ||
|
|
efaa090053 | ||
|
|
8be13fbc5c | ||
|
|
e0a1be1417 | ||
|
|
7f841f6862 | ||
|
|
d1804996d7 | ||
|
|
34084a7ee8 | ||
|
|
fedde8bb87 | ||
|
|
7439e80eec | ||
|
|
e388f361af | ||
|
|
2a9ed6bac7 | ||
|
|
5936a86159 | ||
|
|
3b22911fb1 | ||
|
|
0dd3762685 | ||
|
|
fd9106e97e | ||
|
|
5a3d709e4f | ||
|
|
c0c357dc39 | ||
|
|
e76bec3d4f | ||
|
|
384b3974f7 | ||
|
|
3c37044cd8 | ||
|
|
541112a9eb | ||
|
|
59d7613485 | ||
|
|
d1a579372d | ||
|
|
16cd247db8 | ||
|
|
872d6d9880 | ||
|
|
79fe322d69 | ||
|
|
fe6f1cb547 | ||
|
|
8d7fcd0b84 | ||
|
|
46b0c3cee2 | ||
|
|
1ad9c3017c | ||
|
|
5d320fa22f | ||
|
|
5e1d9b6463 | ||
|
|
175dfde0b8 | ||
|
|
87717ae214 | ||
|
|
111c8f3160 | ||
|
|
6c756352cf | ||
|
|
97a5d11c1f | ||
|
|
44415d824e | ||
|
|
286e8f3afe | ||
|
|
4c2e3db2d5 | ||
|
|
6faf699fcc | ||
|
|
80b765e56a | ||
|
|
3f9ebe5c8c | ||
|
|
481371fd03 | ||
|
|
36c2165fc3 | ||
|
|
36402626e0 | ||
|
|
40c39e61e1 | ||
|
|
4e1b13e776 | ||
|
|
7f355ff43a | ||
|
|
22df449013 | ||
|
|
68303f5124 | ||
|
|
33babfef6b | ||
|
|
910a9185c7 | ||
|
|
f5bd74dfa1 | ||
|
|
b982640c85 | ||
|
|
245bcc46ed | ||
|
|
08a346bfa1 | ||
|
|
0cb4dd6d63 | ||
|
|
1a7a78cc51 | ||
|
|
9b69875b78 | ||
|
|
999ae4782b | ||
|
|
3c61ca8c94 | ||
|
|
0790e0a0ef | ||
|
|
0a2d77b699 | ||
|
|
051ada3f21 | ||
|
|
faf8d053dd | ||
|
|
5ece56f9b0 | ||
|
|
c4d9474f34 | ||
|
|
3b8481ccac | ||
|
|
a31d0215f5 | ||
|
|
f6cce68553 | ||
|
|
636b100b9f | ||
|
|
7a3574eaa0 | ||
|
|
9cd6176e60 | ||
|
|
f2641029cb | ||
|
|
6350e191f8 | ||
|
|
c570ba3488 | ||
|
|
b64abd24c8 | ||
|
|
13c9ab3962 | ||
|
|
b9f1c6ee79 | ||
|
|
938170a957 | ||
|
|
ca0a28c0cf | ||
|
|
c3967173a1 | ||
|
|
9ebbd9a1fd | ||
|
|
16e343ca19 | ||
|
|
1de9132f16 | ||
|
|
dad54a8e47 | ||
|
|
7d73b96b78 | ||
|
|
1260fe34aa | ||
|
|
3b4678e059 | ||
|
|
ff8294b5db | ||
|
|
7e94e19f5d | ||
|
|
ae18e2575a | ||
|
|
a5c493a29c | ||
|
|
8ee89fe51c | ||
|
|
b4909847bf | ||
|
|
568be88127 | ||
|
|
67144c1d08 | ||
|
|
285c78d41a | ||
|
|
7d15735444 | ||
|
|
4191749564 | ||
|
|
9e68dbbf09 | ||
|
|
f02ad5b051 | ||
|
|
08e20a25ed | ||
|
|
ee0468038d | ||
|
|
04afc297d9 | ||
|
|
ed06ca76e0 | ||
|
|
a68510a814 | ||
|
|
4040efab01 | ||
|
|
f08cc1061e | ||
|
|
3b5b11891e | ||
|
|
72427c9309 | ||
|
|
befe2068fd | ||
|
|
c7a3ef32fa | ||
|
|
51d394f4ef | ||
|
|
8db341dd70 | ||
|
|
5cd7fec3ab | ||
|
|
f672ecbb45 | ||
|
|
9a12b2c9b6 | ||
|
|
c31407fd87 | ||
|
|
646c81f136 | ||
|
|
aca6232d2a | ||
|
|
c61da10523 | ||
|
|
1f53d65ac2 | ||
|
|
844ab1287e | ||
|
|
d6d318b23b | ||
|
|
7504ffd934 | ||
|
|
e8078908c9 | ||
|
|
431848280f | ||
|
|
2e0c575512 | ||
|
|
ebf0d99417 | ||
|
|
423d893fee | ||
|
|
56fe0d3b04 | ||
|
|
7172d9d203 | ||
|
|
bd770a6902 | ||
|
|
628508faed | ||
|
|
826634f061 | ||
|
|
c7ed959a71 | ||
|
|
aea6befc1e | ||
|
|
7bb3484788 | ||
|
|
4eafc67a7e | ||
|
|
b5197b6f20 | ||
|
|
d306304195 | ||
|
|
35f47dae4f | ||
|
|
f1be4810d5 | ||
|
|
d4f9406869 | ||
|
|
a41b81d724 | ||
|
|
da56b86102 | ||
|
|
f12d2c9be0 | ||
|
|
322b9b4c25 | ||
|
|
fb7fe410f9 | ||
|
|
ee392a079c | ||
|
|
0502579d50 | ||
|
|
f10f3175d9 | ||
|
|
f155af99f1 | ||
|
|
0fbf3575a6 | ||
|
|
f6b9b5f54e | ||
|
|
2dadd9d8c9 | ||
|
|
5786b3cdfe | ||
|
|
769fc30c0c | ||
|
|
fb2dad9c6f | ||
|
|
c43d308a2d | ||
|
|
742a12ce6a | ||
|
|
d953f27865 | ||
|
|
4719cded95 | ||
|
|
9d489bdb69 | ||
|
|
537c307550 | ||
|
|
d5575e0323 | ||
|
|
592962bbc8 | ||
|
|
7a371c86dc | ||
|
|
0e295bebde | ||
|
|
8d98759be6 | ||
|
|
924317b01b | ||
|
|
a08a601dc3 | ||
|
|
e652c15d6c | ||
|
|
4534eb60de | ||
|
|
54c6c0c24c | ||
|
|
393694ae96 | ||
|
|
818bb730e4 | ||
|
|
61bd35a192 | ||
|
|
81f9df000a | ||
|
|
0dcb31c108 | ||
|
|
cd4140fda9 | ||
|
|
117cc25cdb | ||
|
|
832ad26151 | ||
|
|
5a344cd8ad | ||
|
|
0b0a67cdad | ||
|
|
a326a240f0 | ||
|
|
dfdb033769 | ||
|
|
a31af45d97 |
No files matched your search
@@ -0,0 +1,14 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
patreon: wa_http_api
|
||||
open_collective: # doks Replace with a single Open Collective username
|
||||
ko_fi: # Replace with a single Ko-fi username
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: # Replace with a single Liberapay username
|
||||
issuehunt: # Replace with a single IssueHunt username
|
||||
otechie: # Replace with a single Otechie username
|
||||
custom:
|
||||
- https://boosty.to/wa-http-api
|
||||
- https://portal.devlike.pro/
|
||||
@@ -1,8 +1,3 @@
|
||||
ignore:
|
||||
teams:
|
||||
- no-labels
|
||||
users:
|
||||
- allburov
|
||||
teamLabels:
|
||||
- team: waha-patrons-pro
|
||||
label: patron:PRO
|
||||
|
||||
@@ -51,7 +51,7 @@ jobs:
|
||||
id: meta
|
||||
uses: docker/metadata-action@v4
|
||||
with:
|
||||
images: ${{ secrets.DOCKER_IMAGE }}
|
||||
images: ${{ vars.DOCKER_IMAGE }}
|
||||
flavor: latest=false
|
||||
tags: |
|
||||
type=raw,value=${{ matrix.tag }}
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
name: Manual push
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
tag:
|
||||
description: 'Tag to push'
|
||||
required: true
|
||||
default: 'dev'
|
||||
push:
|
||||
description: 'Push to registry'
|
||||
required: true
|
||||
type: boolean
|
||||
default: true
|
||||
|
||||
jobs:
|
||||
docker-build:
|
||||
runs-on: ${{ matrix.runner }}
|
||||
name: ${{ matrix.platform }} - ${{ matrix.browser }} - ${{ matrix.tag }}
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
# Chromium
|
||||
- runner: 'buildjet-4vcpu-ubuntu-2204'
|
||||
tag: 'latest'
|
||||
platform: 'amd64'
|
||||
browser: 'chromium'
|
||||
- runner: 'buildjet-4vcpu-ubuntu-2204-arm'
|
||||
tag: 'arm'
|
||||
platform: 'linux/arm64'
|
||||
browser: 'chromium'
|
||||
# Chrome
|
||||
- runner: 'buildjet-4vcpu-ubuntu-2204'
|
||||
tag: 'chrome'
|
||||
platform: 'amd64'
|
||||
browser: 'chrome'
|
||||
# Chrome is not supported on arm64
|
||||
# - runner: "buildjet-4vcpu-ubuntu-2204-arm"
|
||||
# tag: "chrome-arm"
|
||||
# platform: "linux/arm64"
|
||||
# browser: "chrome"
|
||||
# No browser
|
||||
- runner: 'buildjet-4vcpu-ubuntu-2204'
|
||||
tag: 'noweb'
|
||||
platform: 'amd64'
|
||||
browser: 'none'
|
||||
- runner: 'buildjet-4vcpu-ubuntu-2204-arm'
|
||||
tag: 'noweb-arm'
|
||||
platform: 'linux/arm64'
|
||||
browser: 'none'
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v4
|
||||
with:
|
||||
images: ${{ vars.DOCKER_IMAGE }}
|
||||
flavor: latest=false
|
||||
tags: |
|
||||
type=raw,value=${{ inputs.tag }}-${{ matrix.tag }}
|
||||
|
||||
- name: Login to image repository
|
||||
if: github.ref_type == 'tag'
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USER }}
|
||||
password: ${{ secrets.DOCKER_TOKEN }}
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v4
|
||||
with:
|
||||
context: .
|
||||
file: Dockerfile
|
||||
platforms: ${{ matrix.platform }}
|
||||
build-args: |
|
||||
USE_BROWSER=${{ matrix.browser }}
|
||||
push: ${{ inputs.push }}
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
@@ -1,3 +1,9 @@
|
||||
exclude: |
|
||||
(?x)^(
|
||||
^src/dashboard/.*|
|
||||
^src/core/engines/webjs/.*html
|
||||
)$
|
||||
|
||||
repos:
|
||||
- repo: local
|
||||
hooks:
|
||||
|
||||
@@ -4,7 +4,9 @@
|
||||
<img src="./docs/site/static/images/logo.png" alt="Image" />
|
||||
</p>
|
||||
|
||||
**WAHA** - **W**hats**A**pp **H**TTP **A**PI that you can install on your own server and run in less than 5 minutes!
|
||||
**WAHA** - **W**hats**A**pp **H**TTP **A**PI (REST API) that you can install on your own server and run in less than 5 minutes!
|
||||
|
||||
[](https://hub.docker.com/r/devlikeapro/whatsapp-http-api)
|
||||
|
||||
- Documentation: [https://waha.devlike.pro/](https://waha.devlike.pro/)
|
||||
- Swagger Example: [https://waha.devlike.pro/swagger](https://waha.devlike.pro/swagger)
|
||||
@@ -203,4 +205,3 @@ curl -d "{\"chatId\": \"${PHONE}@c.us\", \"text\": \"Hello from WhatsApp HTTP AP
|
||||
|
||||
## What is next?
|
||||
[Go and read the full documentation!](https://waha.devlike.pro/docs/overview/introduction/)
|
||||
|
||||
@@ -21,14 +21,42 @@ services:
|
||||
- './.sessions:/app/.sessions'
|
||||
environment:
|
||||
# Environment variables from https://waha.devlike.pro/docs/how-to/config/
|
||||
- WHATSAPP_RESTART_ALL_SESSIONS=True
|
||||
- WHATSAPP_HOOK_URL=https://httpbin.org/post
|
||||
- WHATSAPP_HOOK_EVENTS=message
|
||||
# - WHATSAPP_RESTART_ALL_SESSIONS=True
|
||||
# - WHATSAPP_HOOK_URL=https://httpbin.org/post
|
||||
# - WHATSAPP_HOOK_EVENTS=message
|
||||
# - WHATSAPP_API_HOSTNAME=localhost
|
||||
- WHATSAPP_DEFAULT_ENGINE=WEBJS
|
||||
- WHATSAPP_API_KEY=321
|
||||
- WHATSAPP_SWAGGER_USERNAME=admin
|
||||
- WHATSAPP_SWAGGER_PASSWORD=123
|
||||
- WHATSAPP_API_HOSTNAME=localhost
|
||||
# Username and password for Swagger
|
||||
- WHATSAPP_SWAGGER_USERNAME=swagger
|
||||
- WHATSAPP_SWAGGER_PASSWORD=admin
|
||||
# Username and password for WAHA Dashboard
|
||||
# you can use the same username and password for both Swagger and Dashboard
|
||||
# Default - waha / waha
|
||||
- WAHA_DASHBOARD_USERNAME=waha
|
||||
- WAHA_DASHBOARD_PASSWORD=waha
|
||||
restart: always
|
||||
|
||||
whatsapp-http-api-plus--mongodb:
|
||||
image: devlikeapro/whatsapp-http-api-plus
|
||||
container_name: whatsapp-http-api-plus--mongodb
|
||||
ports:
|
||||
- '3000:3000/tcp'
|
||||
volumes:
|
||||
- './.sessions:/app/.sessions'
|
||||
environment:
|
||||
# Environment variables from https://waha.devlike.pro/docs/how-to/config/
|
||||
# - WHATSAPP_RESTART_ALL_SESSIONS=True
|
||||
# - WHATSAPP_HOOK_URL=https://httpbin.org/post
|
||||
# - WHATSAPP_HOOK_EVENTS=message
|
||||
# - WHATSAPP_API_KEY=321
|
||||
# - WHATSAPP_SWAGGER_USERNAME=admin
|
||||
# - WHATSAPP_SWAGGER_PASSWORD=123
|
||||
# - WAHA_DASHBOARD_USERNAME=admin
|
||||
# - WAHA_DASHBOARD_PASSWORD=123
|
||||
# - WHATSAPP_API_HOSTNAME=localhost
|
||||
- WHATSAPP_DEFAULT_ENGINE=WEBJS
|
||||
- WHATSAPP_SESSIONS_MONGO_URL=mongodb://mongodb:27017
|
||||
restart: always
|
||||
|
||||
mongodb:
|
||||
|
||||
@@ -35,6 +35,11 @@
|
||||
url = "/docs/overview/introduction"
|
||||
parent = "docs"
|
||||
|
||||
[[main]]
|
||||
name = "Install"
|
||||
weight = 13
|
||||
url = "/docs/how-to/install"
|
||||
parent = "docs"
|
||||
|
||||
[[main]]
|
||||
name = "Send messages"
|
||||
@@ -68,7 +73,7 @@
|
||||
|
||||
[[main]]
|
||||
name = "WAHA Plus"
|
||||
weight = 30
|
||||
weight = 20
|
||||
identifier = "waha-plus"
|
||||
|
||||
[[main]]
|
||||
@@ -85,28 +90,38 @@
|
||||
|
||||
[[main]]
|
||||
name = "Get on Patreon ->"
|
||||
weight = 50
|
||||
weight = 60
|
||||
url = "https://patreon.com/wa_http_api"
|
||||
parent = "waha-plus"
|
||||
|
||||
[[main]]
|
||||
name = "Get on Boosty ->"
|
||||
weight = 60
|
||||
weight = 50
|
||||
url = "https://boosty.to/wa-http-api"
|
||||
parent = "waha-plus"
|
||||
|
||||
[[main]]
|
||||
name = "Pricing"
|
||||
weight = 90
|
||||
url = "/pricing"
|
||||
|
||||
|
||||
[[main]]
|
||||
name = "Examples"
|
||||
weight = 20
|
||||
weight = 30
|
||||
identifier = "examples"
|
||||
|
||||
[[main]]
|
||||
name = "Python ->"
|
||||
weight = 21
|
||||
url = "https://github.com/devlikeapro/whatsapp-http-api/tree/core/examples/python"
|
||||
weight = 31
|
||||
url = "/docs/examples/python"
|
||||
parent = "examples"
|
||||
|
||||
[[main]]
|
||||
name = "Kotlin ->"
|
||||
weight = 32
|
||||
url = "/docs/examples/kotlin"
|
||||
parent = "examples"
|
||||
|
||||
[[social]]
|
||||
name = "GitHub"
|
||||
|
||||
@@ -68,12 +68,12 @@ fillImage = "1270x740 Center" # normalize image size
|
||||
footer = 'This project is not affiliated, associated, authorized, endorsed by, or in any way officially connected with WhatsApp or any of its subsidiaries or its affiliates.<br/>The official WhatsApp website can be found at <a class="text-muted" href="https://whatsapp.com/">https://whatsapp.com/</a>.<br/>"WhatsApp" as well as related names, marks, emblems and images are registered trademarks of their respective owners.'
|
||||
|
||||
# Feed
|
||||
copyRight = "Copyright (c) 2021-2023 Dev Like A Pro"
|
||||
copyRight = "Copyright (c) 2021-2024 Dev Like A Pro"
|
||||
|
||||
# Alert
|
||||
alert = true
|
||||
alertDismissable = true
|
||||
alertText = "<a class=\"alert-link stretched-link\" href=\"https://waha.devlike.pro/docs/how-to/plus-version/\">Support the project and get WAHA Plus version! -></a>"
|
||||
alertText = "📢 <a class=\"alert-link stretched-link\" href=\"https://waha.devlike.pro/docs/how-to/waha-dashboard/\">WAHA Dashboard - UI to manage your WhatsApp sessions!</a> 📢"
|
||||
|
||||
# Edit Page
|
||||
# repoHost [Github | Gitea | GitLab | Bitbucket | BitbucketServer ] is used for building the edit link based on git hoster
|
||||
@@ -81,8 +81,8 @@ repoHost = "GitHub"
|
||||
#repoHost = "Gitea"
|
||||
docsRepo = "https://github.com/devlikeapro/whatsapp-http-api"
|
||||
docsRepoBranch = "core"
|
||||
docsRepoSubPath = ""
|
||||
editPage = false
|
||||
docsRepoSubPath = "docs/site"
|
||||
editPage = true
|
||||
lastMod = false
|
||||
|
||||
[sections]
|
||||
@@ -95,7 +95,7 @@ lastMod = false
|
||||
flexSearch = true
|
||||
searchSectionsShow = []
|
||||
searchSectionsIndex = []
|
||||
darkMode = true
|
||||
darkMode = false
|
||||
bootStrapJs = true
|
||||
breadCrumb = false
|
||||
highLight = true
|
||||
@@ -110,4 +110,4 @@ lastMod = false
|
||||
[menu]
|
||||
[menu.section]
|
||||
auto = true
|
||||
collapsibleSidebar = true
|
||||
collapsibleSidebar = false
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: "Examples"
|
||||
title: "🧩 Examples"
|
||||
description: "Examples for different languages."
|
||||
lead: "Examples for different languages."
|
||||
date: 2020-10-06T08:49:15+00:00
|
||||
|
||||
@@ -0,0 +1,115 @@
|
||||
---
|
||||
title: "Kotlin"
|
||||
description: "WhatsApp HTTP API + Kotlin examples."
|
||||
lead: "WhatsApp HTTP API + Kotlin examples."
|
||||
date: 2020-10-06T08:49:31+00:00
|
||||
lastmod: 2020-10-06T08:49:31+00:00
|
||||
draft: false
|
||||
images: ["/images/kotlin-whatsapp.png"]
|
||||
menu:
|
||||
docs:
|
||||
parent: "help"
|
||||
weight: 631
|
||||
toc: true
|
||||
---
|
||||
|
||||

|
||||
|
||||
We've created a few examples on how to interact with WAHA WhatsApp HTTP API with Kotlin (ktor).
|
||||
|
||||
You can find the examples in
|
||||
[examples folder on GitHub with detailed instructions in README.md ->](https://github.com/devlikeapro/waha-kotlin)
|
||||
|
||||
## Installation
|
||||
|
||||
We assume that you have installed software:
|
||||
|
||||
1. Kotlin + JVM
|
||||
2. Docker
|
||||
|
||||
### Download and start image
|
||||
|
||||
First of all, you must run WhatsApp HTTP API locally (which under the hood it
|
||||
runs real WhatsApp Web instance and expose HTTP API for interaction).
|
||||
|
||||
Here are the steps from
|
||||
[Quick Start](https://waha.devlike.pro/docs/overview/quick-start/):
|
||||
|
||||
Download and start WhatsApp HTTP API docker container
|
||||
|
||||
```bash
|
||||
# Download the image
|
||||
docker pull devlikeapro/whatsapp-http-api
|
||||
# Run the docker container
|
||||
docker run -it --rm --network=host -e WHATSAPP_HOOK_URL=http://localhost:5000/bot -e "WHATSAPP_HOOK_EVENTS=*" --name whatsapp-http-api devlikeapro/whatsapp-http-api
|
||||
|
||||
# It prints logs and the last line must be
|
||||
# WhatsApp HTTP API is running on: http://[::1]:3000
|
||||
```
|
||||
|
||||
#### Download image - ARM
|
||||
|
||||
If you're using ARM (like Apple Silicon, Apple M1, etc.) - use following
|
||||
commands to download the image
|
||||
|
||||
 For Core version the command is
|
||||
|
||||
```bash
|
||||
# Download the image
|
||||
docker pull devlikeapro/whatsapp-http-api:arm
|
||||
# Rename it, so you can use devlikeapro/whatsapp-http-api image in other place
|
||||
docker tag devlikeapro/whatsapp-http-api:arm devlikeapro/whatsapp-http-api
|
||||
# Run the docker container
|
||||
docker run -it --rm --network=host -e WHATSAPP_HOOK_URL=http://localhost:5000/bot -e "WHATSAPP_HOOK_EVENTS=*" --name whatsapp-http-api devlikeapro/whatsapp-http-api
|
||||
|
||||
# It prints logs and the last line must be
|
||||
# WhatsApp HTTP API is running on: http://[::1]:3000
|
||||
```
|
||||
|
||||
### Start session and scan QR
|
||||
|
||||
2. Open Swagger API in the browser http://localhost:3000/
|
||||
3. Start session and scan QR code in swagger
|
||||
1. Find `POST /api/session/start` request press **Try it out** and
|
||||
**Execute** it with `default` session name
|
||||
2. Find `GET /api/screenshot` and execute it - it must show QR code
|
||||
3. Scan QR code on your mobile WhatsApp application (that installed on your
|
||||
phone)
|
||||
4. Execute `GET /api/screenshot` once again - it must show the screenshot
|
||||
from WhatsApp Web.
|
||||
4. Send test text message - find `POST /api/sendText` and execute it with
|
||||
payload (change `12132132130` in the `chatId` to phone number that is
|
||||
registered in WhatsApp).
|
||||
|
||||
```json
|
||||
{
|
||||
"chatId": "12132132130@c.us",
|
||||
"text": "Hi there!",
|
||||
"session": "default"
|
||||
}
|
||||
```
|
||||
|
||||
If you see **Hi there!** message then you're ready to run bots!
|
||||
|
||||
## WhatsApp Echo Bot
|
||||
|
||||
The WhatsApp Echo Bot is a sample ktor webhook server application that echoes
|
||||
back to you whatever you send it. It can serve as a basic reference for how to
|
||||
set up webhooks and reply to incoming messages.
|
||||
|
||||
```bash
|
||||
# Clone the git repository with example
|
||||
git clone https://github.com/devlikeapro/waha-kotlin.git
|
||||
|
||||
# Build and run the app
|
||||
./gradlew build
|
||||
./gradlew run
|
||||
```
|
||||
|
||||
Open http://127.0.0.1:5000/bot - if you see **WhatsApp Echo Bot is ready!** then
|
||||
the bot is ready to receive message!
|
||||
|
||||
Send message to the WhatsApp (that you used to scan QR code) and it'll echo text
|
||||
back to you!
|
||||
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
---
|
||||
title: "Live Helper Chat"
|
||||
description: "WhatsApp HTTP API + Live Helper Chat integration."
|
||||
lead: "WhatsApp HTTP API + Live Helper Chat integration."
|
||||
date: 2020-10-06T08:49:31+00:00
|
||||
lastmod: 2020-10-06T08:49:31+00:00
|
||||
draft: false
|
||||
menu:
|
||||
docs:
|
||||
parent: "help"
|
||||
weight: 632
|
||||
toc: true
|
||||
---
|
||||
|
||||
|
||||
<div class="text-center">
|
||||
|
||||

|
||||
|
||||
</div>
|
||||
|
||||
Open source
|
||||
<a href="https://livehelperchat.com/" target="_blank" rel="noopener noreferrer">Live Helper Chat -></a>
|
||||
system with mobile app, Bot, AI, Voice & Video & ScreenShare.
|
||||
|
||||
<div class="text-center">
|
||||
|
||||

|
||||
|
||||
</div>
|
||||
|
||||
|
||||
👉 Please checkout
|
||||
<a href="https://doc.livehelperchat.com/docs/integrating/waha" target="_blank" rel="noopener noreferrer">
|
||||
WhatsApp WAHA integration on Live Helper Chat ->
|
||||
</a>
|
||||
documentation for more details how to integrate WhatsApp with Live Helper Chat.
|
||||
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 26 KiB |
@@ -1,18 +0,0 @@
|
||||
---
|
||||
title: "Python"
|
||||
description: "WhatsApp HTTP API Python examples."
|
||||
lead: "WhatsApp HTTP API Python examples."
|
||||
date: 2020-10-06T08:49:31+00:00
|
||||
lastmod: 2020-10-06T08:49:31+00:00
|
||||
draft: false
|
||||
images: []
|
||||
menu:
|
||||
docs:
|
||||
parent: "help"
|
||||
weight: 630
|
||||
toc: true
|
||||
---
|
||||
We've created a few examples on how to interact with WAHA WhatsApp HTTP API with Python.
|
||||
|
||||
You can find the examples in [examples folder on GitHub with detailed instructions in README.md](https://github.com/devlikeapro/whatsapp-http-api/tree/core/examples/python)
|
||||
|
||||
@@ -0,0 +1,148 @@
|
||||
---
|
||||
title: "Python"
|
||||
description: "WhatsApp HTTP API + Python examples."
|
||||
lead: "WhatsApp HTTP API + Python examples."
|
||||
date: 2020-10-06T08:49:31+00:00
|
||||
lastmod: 2020-10-06T08:49:31+00:00
|
||||
draft: false
|
||||
images: ["/images/python-whatsapp.png"]
|
||||
menu:
|
||||
docs:
|
||||
parent: "help"
|
||||
weight: 630
|
||||
toc: true
|
||||
---
|
||||
|
||||

|
||||
|
||||
We've created a few examples on how to interact with WAHA WhatsApp HTTP API with Python.
|
||||
|
||||
You can find the examples in [examples folder on GitHub with detailed instructions in README.md ->](https://github.com/devlikeapro/whatsapp-http-api/tree/core/examples/python)
|
||||
|
||||
## Installation
|
||||
|
||||
We assume that you have installed software:
|
||||
|
||||
1. Python 3
|
||||
2. Docker
|
||||
|
||||
### Download and start image
|
||||
|
||||
First of all, you must run WhatsApp HTTP API locally (which under the hood it
|
||||
runs real WhatsApp Web instance and expose HTTP API for interaction).
|
||||
|
||||
Here are the steps from
|
||||
[Quick Start](https://waha.devlike.pro/docs/overview/quick-start/):
|
||||
|
||||
Download and start WhatsApp HTTP API docker container
|
||||
|
||||
```bash
|
||||
# Download the image
|
||||
docker pull devlikeapro/whatsapp-http-api
|
||||
# Run the docker container
|
||||
docker run -it --rm --network=host -e WHATSAPP_HOOK_URL=http://localhost:5000/bot -e "WHATSAPP_HOOK_EVENTS=*" --name whatsapp-http-api devlikeapro/whatsapp-http-api
|
||||
|
||||
# It prints logs and the last line must be
|
||||
# WhatsApp HTTP API is running on: http://[::1]:3000
|
||||
```
|
||||
|
||||
#### Download image - ARM
|
||||
|
||||
If you're using ARM (like Apple Silicon, Apple M1, etc.) - use following
|
||||
commands to download the image
|
||||
|
||||
 For Core version the command is
|
||||
|
||||
```bash
|
||||
# Download the image
|
||||
docker pull devlikeapro/whatsapp-http-api:arm
|
||||
# Rename it, so you can use devlikeapro/whatsapp-http-api image in other place
|
||||
docker tag devlikeapro/whatsapp-http-api:arm devlikeapro/whatsapp-http-api
|
||||
# Run the docker container
|
||||
docker run -it --rm --network=host -e WHATSAPP_HOOK_URL=http://localhost:5000/bot -e "WHATSAPP_HOOK_EVENTS=*" --name whatsapp-http-api devlikeapro/whatsapp-http-api
|
||||
|
||||
# It prints logs and the last line must be
|
||||
# WhatsApp HTTP API is running on: http://[::1]:3000
|
||||
```
|
||||
|
||||
### Start session and scan QR
|
||||
|
||||
2. Open Swagger API in the browser http://localhost:3000/
|
||||
3. Start session and scan QR code in swagger
|
||||
1. Find `POST /api/session/start` request press **Try it out** and
|
||||
**Execute** it with `default` session name
|
||||
2. Find `GET /api/screenshot` and execute it - it must show QR code
|
||||
3. Scan QR code on your mobile WhatsApp application (that installed on your
|
||||
phone)
|
||||
4. Execute `GET /api/screenshot` once again - it must show the screenshot
|
||||
from WhatsApp Web.
|
||||
4. Send test text message - find `POST /api/sendText` and execute it with
|
||||
payload (change `12132132130` in the `chatId` to phone number that is
|
||||
registered in WhatsApp).
|
||||
|
||||
```json
|
||||
{
|
||||
"chatId": "12132132130@c.us",
|
||||
"text": "Hi there!",
|
||||
"session": "default"
|
||||
}
|
||||
```
|
||||
|
||||
If you see **Hi there!** message then you're ready to run bots!
|
||||
|
||||
## WhatsApp Echo Bot
|
||||
|
||||
The WhatsApp Echo Bot is a sample flask webhook server application that echoes
|
||||
back to you whatever you send it. It can serve as a basic reference for how to
|
||||
set up webhooks and reply to incoming messages.
|
||||
|
||||
```bash
|
||||
# Clone the git repository with example
|
||||
git clone https://github.com/devlikeapro/whatsapp-http-api.git
|
||||
# Open python example folder
|
||||
cd whatsapp-http-api/examples/python
|
||||
# Install requirements
|
||||
python -mpip install -r requirements.txt
|
||||
# Run the bot
|
||||
FLASK_APP=whatsapp_echo_bot.py flask run
|
||||
```
|
||||
|
||||
Open http://127.0.0.1:5000/bot - if you see **WhatsApp Echo Bot is ready!** then
|
||||
the bot is ready to receive message!
|
||||
|
||||
Send message to the WhatsApp (that you used to scan QR code) and it'll echo text
|
||||
back to you!
|
||||
|
||||
## WhatsApp Download Files Bot
|
||||
|
||||
The WhatsApp Download Image Bot downloads all files people send to your WhatsApp
|
||||
and log the path for the file.
|
||||
|
||||
**The bot works only with WAHA Plus version** available with donations. Visit
|
||||
[read more about difference between Core and Plus versions](https://waha.devlike.pro/docs/how-to/plus-version/).
|
||||
|
||||
Download **WAHA Plus** version:
|
||||
|
||||
```bash
|
||||
# Download the image
|
||||
docker pull devlikeapro/whatsapp-http-api-plus
|
||||
# Run the docker container
|
||||
docker run -it --rm --network=host -e WHATSAPP_HOOK_URL=http://localhost:5000/bot -e "WHATSAPP_HOOK_EVENTS=*" --name whatsapp-http-api devlikeapro/whatsapp-http-api-plus
|
||||
```
|
||||
|
||||
Run the WhatsApp Download Files bot:
|
||||
|
||||
```bash
|
||||
# Clone the git repository with example
|
||||
git clone https://github.com/devlikeapro/whatsapp-http-api.git
|
||||
# Open python example folder
|
||||
cd whatsapp-http-api/examples/python
|
||||
# Install requirements
|
||||
python -mpip install -r requirements.txt
|
||||
# Run the bot
|
||||
FLASK_APP=whatsapp_download_files_bot.py flask run
|
||||
```
|
||||
|
||||
Open http://127.0.0.1:5000/bot - if you see **WhatsApp Download Files Bot!**
|
||||
then the bot is ready to receive message with files!
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title : "Chats"
|
||||
title : "💬 Chats"
|
||||
description: "Chats"
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:45+00:00
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: "Configuration"
|
||||
title: "⚙️ Configuration"
|
||||
description: "Configuration"
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:45+00:00
|
||||
@@ -26,6 +26,7 @@ The following environment variables can be used to configure the WAHA.
|
||||
|
||||
### Common
|
||||
- `DEBUG=1`: Set this variable to any value to enable debug and verbose logs.
|
||||
- You can also do it for a **specific session** by setting `config.debug` field to `true` when starting a session.
|
||||
- `WHATSAPP_API_PORT=3000`: The port number that the HTTP server will listen on. The default value is `3000`.
|
||||
- `WHATSAPP_API_HOSTNAME=localhost`: The hostname for the HTTP server. The default value is `localhost`.
|
||||
|
||||
@@ -48,7 +49,7 @@ The following environment variables can be used to configure the WAHA.
|
||||
- `WHATSAPP_SWAGGER_USERNAME=admin` and `WHATSAPP_SWAGGER_PASSWORD=admin` - these variables can be used to protect the Swagger panel
|
||||
with `admin / admin` credentials. This does not affect API access. Available in **WAHA Plus** only.
|
||||
|
||||
Read more about security settings for Swagger and API on [**Security page** ->]({{< relref "/docs/how-to/security" >}}).
|
||||
Read more about Swagger configuration on [**Swagger page** ->]({{< relref "/docs/how-to/swagger" >}}).
|
||||
|
||||
### Proxy
|
||||
#### Global proxy configuration
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title : "Contacts"
|
||||
title : "👤 Contacts"
|
||||
description: "Contacts"
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:45+00:00
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
---
|
||||
title: "Deploy"
|
||||
title: "🚀 Deploy"
|
||||
description: "How to deploy WAHA"
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:45+00:00
|
||||
lastmod: 2020-10-06T08:48:45+00:00
|
||||
draft: false
|
||||
images: [ ]
|
||||
weight: 899
|
||||
weight: 898
|
||||
---
|
||||
|
||||
This page provides useful information to assist you in deploying the project.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: "Engines"
|
||||
title: "🏭 Engines"
|
||||
description: "Engines"
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:45+00:00
|
||||
@@ -47,6 +47,12 @@ Not running Chromium saves you CPU and Memory, so you can run more instances on
|
||||
️Working with the engine requires more attention, because it's easy to be blocked with it!
|
||||
|
||||
⚠ Read the article before using **NOWEB** engine
|
||||
|
||||
Quotes from the users:
|
||||
> The server has **2 CPU and 8GB** of memory. Today we have **85 sessions** in this instance.
|
||||
|
||||
> **400** sessions with **4CPU and 32RAM**. It's working fine.
|
||||
|
||||
[How to avoid blocking ->]({{< relref " /docs/overview/how-to-avoid-blocking" >}}).
|
||||
|
||||
### VENOM
|
||||
@@ -59,17 +65,30 @@ It uses Puppeteer to run a real instance of Whatsapp Web to avoid getting blocke
|
||||
|
||||
## Docker images
|
||||
WAHA provides few docker images with different setup.
|
||||
{{< alert icon="👉" text="Use `devlikeapro/whatsapp-http-api` instead of `devlikeapro/whatsapp-http-api-plus` to get **WAHA Plus** version." />}}
|
||||
|
||||
For **x86** processors use following images:
|
||||
- `devlikeapro/whatsapp-http-api:latest` - latest version of WAHA, using **Chromium** (does not support video receiving and receiving in Plus version)
|
||||
- `devlikeapro/whatsapp-http-api:chrome` - latest version of WAHA, using **Chrome** (supports video receiving and receiving in Plus version)
|
||||
- `devlikeapro/whatsapp-http-api:noweb`- latest version of WAHA, **no browser installed** - use it only for **NOWEB** engine
|
||||
| Image | CPU | Browser |
|
||||
|---------------------------------------------------------|-----|-------------------------|
|
||||
| [WAHA Plus]({{< relref "/docs/how-to/plus-version" >}}) | | |
|
||||
| `devlikeapro/whatsapp-http-api-plus:latest` | x86 | Chromium |
|
||||
| `devlikeapro/whatsapp-http-api-plus:chrome` | x86 | Chrome (supports video) |
|
||||
| `devlikeapro/whatsapp-http-api-plus:noweb` | x86 | None |
|
||||
| `devlikeapro/whatsapp-http-api-plus:arm` | ARM | Chromium |
|
||||
| `devlikeapro/whatsapp-http-api-plus:noweb-arm` | ARM | None |
|
||||
| **WAHA Core** | | |
|
||||
| `devlikeapro/whatsapp-http-api:latest` | x86 | Chromium |
|
||||
| `devlikeapro/whatsapp-http-api:chrome` | x86 | Chrome |
|
||||
| `devlikeapro/whatsapp-http-api:noweb` | x86 | None |
|
||||
| `devlikeapro/whatsapp-http-api:arm` | ARM | Chromium |
|
||||
| `devlikeapro/whatsapp-http-api:noweb-arm` | ARM | None |
|
||||
|
||||
For **ARM** processors use following images:
|
||||
- `devlikeapro/whatsapp-http-api:arm` - **Chromium**
|
||||
- `devlikeapro/whatsapp-http-api:noweb-arm`- **no browser installed**
|
||||
Browsers:
|
||||
- **Chromium** - is the default browser for **WAHA**. It's a good choice for most cases.
|
||||
- **Chrome** - is a good choice if you need to receive videos in Plus version.
|
||||
- **None** - is a good choice if you want to use **NOWEB** engine.
|
||||
|
||||
CPU:
|
||||
- **x86** - is a good choice for most cases.
|
||||
- **ARM** - is a good choice if you're using ARM processors (like Apple Silicon, Apple M1, etc.)
|
||||
{{< alert icon="💡" text="Chrome version is not available in ARM" />}}
|
||||
|
||||
## Features
|
||||
@@ -86,7 +105,7 @@ Here, you will find a list of supported endpoints and webhooks per engine.
|
||||
If you don't specify `WHATSAPP_DEFAULT_ENGINE` environment variable - look at **WEBJS** engine,
|
||||
it's the engine WAHA runs by default.
|
||||
|
||||
### Engine
|
||||
### Protocols
|
||||
|
||||
| | WEBJS | NOWEB | VENOM |
|
||||
|--------------------------------------------------------------|:-----:|:-----:|:-----:|
|
||||
@@ -110,30 +129,31 @@ please [create an issue](https://github.com/devlikeapro/whatsapp-http-api/issues
|
||||
| `POST /api/{session}/auth/qr` | ✔️ | ✔️ | ✔️ |
|
||||
| `POST /api/{session}/auth/request-code` | ➖ | ✔️ | ➖ |
|
||||
| `POST /api/{session}/auth/authorize-code` | ➖ | ➖️<br>[#113](https://github.com/devlikeapro/whatsapp-http-api/issues/113) | ➖ |
|
||||
| `GET /api/{session}/auth/captcha` <br>Only in **MOBILE** engine | ➖ | ➖ | ➖ |
|
||||
| `POST /api/{session}/auth/captcha` <br>Only in **MOBILE** engine | ➖ | ➖ | ➖ |
|
||||
| **Screenshot** | | | |
|
||||
| `POST /api/screenshot` | ✔️ | ➖ | ✔️ |
|
||||
|
||||
| **Chatting** | WEBJS | NOWEB | VENOM |
|
||||
|------------------------------------------------------|:-----:|:-----:|:-----:|
|
||||
| `GET /api/checkNumberStatus` | ✔️ | ✔️ | ✔️ |
|
||||
| `GET /api/sendContactVcard` | ➖ | ➖ | ✔️ |
|
||||
| `GET /api/sendText` | ✔️ | ✔️ | ✔️ |
|
||||
| `POST /api/sendText` | ✔️ | ✔️ | ✔️ |
|
||||
| `POST /api/sendPoll` | ➖ | ✔️ | ➖ |
|
||||
| `POST /api/sendLocation` | ✔️ | ✔️ | ✔️ |
|
||||
| `POST /api/sendLinkPreview` | ➖ | ✔️ | ✔️ |
|
||||
| `POST /api/sendImage`  | ✔️ | ✔️ | ✔️ |
|
||||
| `POST /api/sendFile`  | ✔️ | ✔️ | ✔️ |
|
||||
| `POST /api/sendVoice`  | ✔️ | ✔️ | ✔️ |
|
||||
| `POST /api/sendVideo`  | ✔️ | ✔️ | ➖ |
|
||||
| `POST /api/reply` | ✔️ | ✔️ | ✔️ |
|
||||
| `POST /api/sendSeen` | ✔️ | ✔️ | ✔️ |
|
||||
| `POST /api/startTyping` | ✔️ | ✔️ | ✔️ |
|
||||
| `POST /api/stopTyping` | ✔️ | ✔️ | ➖ |
|
||||
| `POST /api/reaction` | ✔️ | ✔️ | ➖ |
|
||||
| `GET /api/messages` | ✔️ | ➖ | ✔️ |
|
||||
| **Chatting** | WEBJS | NOWEB | VENOM |
|
||||
|-------------------------------------------------------------|:-----:|:-----:|:-----:|
|
||||
| `GET /api/checkNumberStatus` | ✔️ | ✔️ | ✔️ |
|
||||
| `GET /api/sendContactVcard` | ➖ | ✔️ | ➖ |
|
||||
| `GET /api/sendText` | ✔️ | ✔️ | ✔️ |
|
||||
| `POST /api/sendText` | ✔️ | ✔️ | ✔️ |
|
||||
| `POST /api/reply` | ✔️ | ✔️ | ✔️ |
|
||||
| `PUT /api/{session}/chats/{chatId}/messages/{messageId}` | ✔️ | ✔️ | ➖ |
|
||||
| `DELETE /api/{session}/chats/{chatId}/messages/{messageId}` | ✔️ | ✔️ | ➖ |
|
||||
| `POST /api/sendPoll` | ➖ | ✔️ | ➖ |
|
||||
| `POST /api/sendLocation` | ✔️ | ✔️ | ✔️ |
|
||||
| `POST /api/sendLinkPreview` | ➖ | ✔️ | ✔️ |
|
||||
| `POST /api/sendImage`  | ✔️ | ✔️ | ✔️ |
|
||||
| `POST /api/sendFile`  | ✔️ | ✔️ | ✔️ |
|
||||
| `POST /api/sendVoice`  | ✔️ | ✔️ | ✔️ |
|
||||
| `POST /api/sendVideo`  | ✔️ | ✔️ | ➖ |
|
||||
| `POST /api/sendSeen` | ✔️ | ✔️ | ✔️ |
|
||||
| `POST /api/startTyping` | ✔️ | ✔️ | ✔️ |
|
||||
| `POST /api/stopTyping` | ✔️ | ✔️ | ➖ |
|
||||
| `POST /api/reaction` | ✔️ | ✔️ | ➖ |
|
||||
| `POST /api/star` | ✔️ | ✔️ | ➖ |
|
||||
| `GET /api/messages` | ✔️ | ➖ | ✔️ |
|
||||
|
||||
| | WEBJS | NOWEB | VENOM |
|
||||
|-------------------------------------------------------------------|:-----:|:-----:|:-----:|
|
||||
@@ -147,33 +167,37 @@ please [create an issue](https://github.com/devlikeapro/whatsapp-http-api/issues
|
||||
| `DELETE /api/{session}/chats/{chatId}` | ✔️ | ➖ | ➖ |
|
||||
| `GET /api/{session}/chats/{chatId}/messages` | ✔️ | ➖ | ✔️ |
|
||||
| `DELETE /api/{session}/chats/{chatId}/messages` | ✔️ | ➖ | ➖ |
|
||||
| `PUT /api/{session}/chats/{chatId}/messages/{messageId}` | ✔️ | ✔️ | ➖ |
|
||||
| `DELETE /api/{session}/chats/{chatId}/messages/{messageId}` | ✔️ | ✔️ | ➖ |
|
||||
| **Contacts** | | | |
|
||||
| `GET /api/contacts` | ✔️ | ➖ | ➖ |
|
||||
| `GET /api/contacts/all` | ✔️ | ➖ | ➖ |
|
||||
| `GET /api/contacts/check-exists` | ✔️ | ✔️ | ✔️ |
|
||||
| `GET /api/contacts/about` | ✔️ | ➖ | ➖ |
|
||||
| `GET /api/contacts/profile-picture` | ✔️ | ➖ | ➖ |
|
||||
| `GET /api/contacts/profile-picture` | ✔️ | ✔️ | ➖ |
|
||||
| `POST /api/contacts/block` | ✔️ | ➖ | ➖ |
|
||||
| `POST /api/contacts/unblock` | ✔️ | ➖ | ➖ |
|
||||
|
||||
| **Groups** | WEBJS | NOWEB | VENOM |
|
||||
|--------------------------------------------------------------------|:-----:|:-----:|:-----:|
|
||||
| `POST /api/{session}/groups` | ✔️ | ✔️ | ➖ |
|
||||
| `GET /api/{session}/groups` | ✔️ | ✔️ | ➖ |
|
||||
| `GET /api/{session}/groups/{id}` | ✔️ | ✔️ | ➖ |
|
||||
| `DELETE /api/{session}/groups/{id}` | ✔️ | ➖ | ➖ |
|
||||
| `GET /api/{session}/groups/{id}/settings/security/info-admin-only` | ✔️ | ➖ | ➖ |
|
||||
| `PUT /api/{session}/groups/{id}/settings/security/info-admin-only` | ✔️ | ➖ | ➖ |
|
||||
| `POST /api/{session}/groups/{id}/leave` | ✔️ | ✔️ | ➖ |
|
||||
| `PUT /api/{session}/groups/{id}/description` | ✔️ | ✔️ | ➖ |
|
||||
| `PUT /api/{session}/groups/{id}/subject` | ✔️ | ✔️ | ➖ |
|
||||
| `GET /api/{session}/groups/{id}/invite-code` | ✔️ | ✔️ | ➖ |
|
||||
| `POST /api/{session}/groups/{id}/invite-code/revoke` | ✔️ | ✔️ | ➖ |
|
||||
| `GET /api/{session}/groups/{id}/participants` | ✔️ | ✔️ | ➖ |
|
||||
| `POST /api/{session}/groups/{id}/participants/add` | ✔️ | ✔️ | ➖ |
|
||||
| `POST /api/{session}/groups/{id}/participants/remove` | ✔️ | ✔️ | ➖ |
|
||||
| `POST /api/{session}/groups/{id}/admin/promote` | ✔️ | ✔️ | ➖ |
|
||||
| `POST /api/{session}/groups/{id}/admin/demote` | ✔️ | ✔️ | ➖ |
|
||||
| **Groups** | WEBJS | NOWEB | VENOM |
|
||||
|------------------------------------------------------------------------|:-----:|:-----:|:-----:|
|
||||
| `POST /api/{session}/groups` | ✔️ | ✔️ | ➖ |
|
||||
| `GET /api/{session}/groups` | ✔️ | ✔️ | ➖ |
|
||||
| `GET /api/{session}/groups/{id}` | ✔️ | ✔️ | ➖ |
|
||||
| `DELETE /api/{session}/groups/{id}` | ✔️ | ➖ | ➖ |
|
||||
| `GET /api/{session}/groups/{id}/settings/security/info-admin-only` | ✔️ | ➖ | ➖ |
|
||||
| `PUT /api/{session}/groups/{id}/settings/security/info-admin-only` | ✔️ | ➖ | ➖ |
|
||||
| `GET /api/{session}/groups/{id}/settings/security/messages-admin-only` | ✔️ | ➖ | ➖ |
|
||||
| `PUT /api/{session}/groups/{id}/settings/security/messages-admin-only` | ✔️ | ➖ | ➖ |
|
||||
| `POST /api/{session}/groups/{id}/leave` | ✔️ | ✔️ | ➖ |
|
||||
| `PUT /api/{session}/groups/{id}/description` | ✔️ | ✔️ | ➖ |
|
||||
| `PUT /api/{session}/groups/{id}/subject` | ✔️ | ✔️ | ➖ |
|
||||
| `GET /api/{session}/groups/{id}/invite-code` | ✔️ | ✔️ | ➖ |
|
||||
| `POST /api/{session}/groups/{id}/invite-code/revoke` | ✔️ | ✔️ | ➖ |
|
||||
| `GET /api/{session}/groups/{id}/participants` | ✔️ | ✔️ | ➖ |
|
||||
| `POST /api/{session}/groups/{id}/participants/add` | ✔️ | ✔️ | ➖ |
|
||||
| `POST /api/{session}/groups/{id}/participants/remove` | ✔️ | ✔️ | ➖ |
|
||||
| `POST /api/{session}/groups/{id}/admin/promote` | ✔️ | ✔️ | ➖ |
|
||||
| `POST /api/{session}/groups/{id}/admin/demote` | ✔️ | ✔️ | ➖ |
|
||||
|
||||
| | WEBJS | NOWEB | VENOM |
|
||||
|---------------------------------------------------|:-----:|:-----:|:-----:|
|
||||
@@ -186,10 +210,13 @@ please [create an issue](https://github.com/devlikeapro/whatsapp-http-api/issues
|
||||
| `GET /api/version` | ➖ | ✔️ | ➖ |
|
||||
| `GET /health`  | ✔️ | ✔️ | ✔️ |
|
||||
|
||||
### Webhooks
|
||||
|
||||
| **Webhooks** | WEBJS | NOWEB | VENOM |
|
||||
|-----------------------------------------------------|:-----:|:-----:|:-----:|
|
||||
| `message` | ✔️ | ✔️ | ✔️ |
|
||||
| `message` with files  | ✔️ | ✔️ | ✔️ |
|
||||
| `message.reaction` | ✔️ | ✔️ | ➖ |
|
||||
| `message.any` | ✔️ | ✔️ | ✔️ |
|
||||
| `message.ack` | ✔️ | ✔️ | ✔️ |
|
||||
| `message.revoked` | ✔️ | ➖ | ➖ |
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title : "Groups"
|
||||
title : "👥 Groups"
|
||||
description: "Groups"
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:45+00:00
|
||||
@@ -87,22 +87,47 @@ Request:
|
||||
}
|
||||
```
|
||||
|
||||
### Settings
|
||||
#### Security for group info
|
||||
### Security - update group info
|
||||
Updates the group settings to only allow admins to edit group info (title, description, photo).
|
||||
`PUT /api/{session}/groups/{groupId}/settings/security/info-admin-only`
|
||||
```json
|
||||
{
|
||||
"adminsOnly": true
|
||||
}
|
||||
```
|
||||
|
||||
Get the group settings to only allow admins to edit group info (title, description, photo).
|
||||
|
||||
`GET /api/{session}/groups/{groupId}/settings/security/info-admin-only`
|
||||
```json
|
||||
{
|
||||
"adminsOnly": true
|
||||
}
|
||||
```
|
||||
`PUT /api/{session}/groups/{groupId}/settings/security/info-admin-only`
|
||||
|
||||
The request doesn't require any request's body and
|
||||
**can't be used to disable the security setting (allow ANY to edit group info)**.
|
||||
If you wish to have that ability - please [create an issue](https://github.com/devlikeapro/whatsapp-http-api/issues)
|
||||
Returns `true` if the setting was properly updated. This can return false if the user does not have the necessary permissions.
|
||||
|
||||
|
||||
### Security - who can send messages
|
||||
Updates the group settings to only allow admins to send messages.
|
||||
|
||||
`PUT /api/{session}/groups/{groupId}/settings/security/messages-admin-only`
|
||||
```json
|
||||
{
|
||||
"adminsOnly": true
|
||||
}
|
||||
```
|
||||
Returns `true` if the setting was properly updated. This can return false if the user does not have the necessary permissions.
|
||||
|
||||
Get the group settings to only allow admins to send messages.
|
||||
|
||||
`GET /api/{session}/groups/{groupId}/settings/security/messages-admin-only`
|
||||
```json
|
||||
{
|
||||
"adminsOnly": true
|
||||
}
|
||||
```
|
||||
|
||||
### Participants
|
||||
|
||||
#### Get participants
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title : "Install"
|
||||
title : "🔧 Install"
|
||||
description: "How to install and update WAHA"
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:45+00:00
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: "Other"
|
||||
title: "🛸 Other"
|
||||
description: "Other features and API"
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:45+00:00
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title : "WAHA Plus"
|
||||
title : "➕ WAHA Plus"
|
||||
description: "WAHA Plus"
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:45+00:00
|
||||
@@ -16,117 +16,28 @@ weight: 900
|
||||
1. Core  the basic version that meet almost 80% people’s needs. 100% free and open source.
|
||||
2. Plus  the version with advanced messages, security, and reliability features.
|
||||
|
||||
You support the project and get **WAHA Plus** on
|
||||
<a href="https://patreon.com/wa_http_api" target="_blank">
|
||||
<b>
|
||||
Patreon ->
|
||||
</b>
|
||||
</a>
|
||||
or
|
||||
<a href="https://boosty.to/wa-http-api" target="_blank">
|
||||
<b>
|
||||
Boosty ->
|
||||
</b>
|
||||
</a>
|
||||
.
|
||||
## Tiers
|
||||
You support the project and get WAHA Plus by donating to the project on one of the platforms.
|
||||
|
||||
### Donations
|
||||
See tiers and available platforms on [**Pricing page ->**](/pricing)
|
||||
|
||||
WAHA Plus version is available through **donations** (subscriptions).
|
||||
|
||||
**It doesn't require monthly subscriptions, once installed on your server - it always works!**
|
||||
(until WhatsApp made backward-incompatible changes, and you have to update the image)
|
||||
|
||||
{{< alert icon="💡" text="No licence checks or expiration on already installed instances!" />}}
|
||||
We do not sell **WAHA**, it's not a purchase. It's a donation.
|
||||
|
||||
We treat our projects like art. You donate to the project and get a bit more from it as a thank-you. 😊
|
||||
|
||||
Treat **WAHA Plus** it as an additional episode, behind-the-scenes videos, our nude photos 😊
|
||||
|
||||
{{< alert icon="💡" text="WAHA does not have license checks and expiration - because art can not expire! Enjoy it till it works!" />}}
|
||||
|
||||
We donate most of the donations down to the stream to the underlying libraries and tools - JS-community, Node, other libraries authors, personal contributors.
|
||||
By donating to the **WAHA** you donate to the Open Source world!
|
||||
|
||||
### Tiers
|
||||
|
||||
The more you support the project - the more you get!
|
||||
|
||||
| | Core | Plus | Advanced | Pro |
|
||||
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------|---------|:--------:|:-------:|
|
||||
| Messages limit | **∞** | **∞** | **∞** | **∞** |
|
||||
| [Send and receive text messages ->]({{< relref "/docs/how-to/send-messages" >}}) | ✔️ | ✔️ | ✔️ | ✔️ |
|
||||
| No license checks on installed instances | ✔️ | ✔️ | ✔️ | ✔️ |
|
||||
| [Sessions limit ->]({{< relref "/docs/how-to/sessions" >}}) | **1** | **∞** | **∞** | **∞** |
|
||||
| [Send and receive files ->]({{< relref "/docs/how-to/send-messages" >}}) | ➖️ | ✔️ | ✔️ | ✔️ |
|
||||
| [Built-in Security ->]({{< relref "/docs/how-to/security" >}}) | ➖️ | ✔️ | ✔️ | ✔️ |
|
||||
| [**Webhook retries** →]({{< relref "/docs/how-to/receive-messages#retries" >}}) | ➖️ | ✔️ | ✔️ | ✔️ |
|
||||
| [MongoDB support ->]({{< relref "/docs/how-to/storages" >}}) | ➖️ | ✔️ | ✔️ | ✔️ |
|
||||
| Access to **WAHA Plus**  docker image with a personal key. | ➖️ | ✔️ | ✔️ | ✔️ |
|
||||
| Special badge ([](https://waha.devlike.pro/docs/how-to/plus-version/#tiers)) and labels (`patron:TIER`) on [project's issues, PRs and Discussion](https://github.com/devlikeapro/whatsapp-http-api) to highlight your support to the project! | | ✔️ | ✔️ | ✔️ |
|
||||
| An invitation to **a private Github repository** so you have the **WAHA Plus** source code. | ➖️ | ➖️ | ✔️ | ✔️️ |
|
||||
| Access to a Telegram group where we provide support and assistance. | ➖️ | ➖️ | ➖ | ✔️ |
|
||||
| Access to an [experimental MOBILE engine]({{< relref "/docs/how-to/plus-version#tiers" >}})!. | ➖️ | ➖️ | ➖ | ✔️ |
|
||||
| **Donation** | **FREE** | **$19** | **$39** | **$99** |
|
||||
|
||||
For **$19** donation you get:
|
||||
1. **Secret password** for Docker Hub to download Plus image: `devlikeapro/whatsapp-http-api-plus`.
|
||||
2. **All updates for one month** for the Plus image.
|
||||
3. **NO LICENSE CHECKS** on installed instances!
|
||||
4. **NO LICENSE EXPIRATION** on installed instances! We repeated it twice to make sure that you've got it 😊
|
||||
|
||||
{{< alert icon="💡" text="If you stay subscribed - the donation amount will never change for you and always be $19 to get monthly updates!" />}}
|
||||
|
||||
|
||||
### Why WAHA?
|
||||
|
||||
What is the difference between **WAHA Plus** and **other SaaS solutions** for WhatsApp HTTP API?
|
||||
|
||||
| | WAHA Plus | Others |
|
||||
|--------------------|:-------------------------------------------------:|----------------------------------------------------------------------------------:|
|
||||
| **Sessions** | ✔️ No limits on **accounts** or **servers**! | ➖ One account for $50/month. |
|
||||
| **Infrastructure** | ✔️ On-Premise - your server, your infrastructure! | ➖ Insecure cloud solution. |
|
||||
| **Security** | ✔️ No data leaks! | ➖ You have to give access to customers' data - phone number, name, your messages. |
|
||||
| **License Term** | ✔️ No license checks! | ➖ One month |
|
||||
| **Message price** | ✔️ All messages are Free! | ➖ Some solutions have a price for messages - $1/100 messages. |
|
||||
| **Expenses** | ✔️ $19 **donation**! | ➖ Monthly payment starts from $50 |
|
||||
|
||||
|
||||
## Get Plus 
|
||||
|
||||
|
||||
### Patreon
|
||||
## Patron Portal
|
||||
<p align="center">
|
||||
<img src="patreon.png" alt="Patreon" />
|
||||
</p>
|
||||
|
||||
Support the project and get WAHA Plus version on
|
||||
<a href="https://patreon.com/wa_http_api" target="_blank">
|
||||
<b>
|
||||
Patreon ->
|
||||
</b>
|
||||
</a>
|
||||
|
||||
Go ahead and get your own WhatsApp HTTP API!
|
||||
|
||||
### Boosty
|
||||
<p align="center">
|
||||
<img src="boosty.svg" alt="Patreon" />
|
||||
<img src="patron-portal.png" alt="Patron Portal" />
|
||||
<br/>
|
||||
<br/>
|
||||
</p>
|
||||
|
||||
Support the project and get WAHA Plus version on
|
||||
<a href="https://boosty.to/wa-http-api" target="_blank">
|
||||
<b>
|
||||
Boosty ->
|
||||
</b>
|
||||
</a>
|
||||
After subscribing on Patreon or Boosty, you will get access to the [WAHA Patron Portal ->](https://portal.devlike.pro/)
|
||||
where you will get the password to download the Plus image and manage your perks!
|
||||
|
||||
Go ahead and get your own WhatsApp HTTP API!
|
||||
Read more about Patron Portal in
|
||||
**<a href="https://www.patreon.com/posts/waha-patron-97637416" target="_blank">Patreon -> </a>**
|
||||
or
|
||||
**<a href="https://boosty.to/wa-http-api/posts/8319079f-dac1-4179-b954-fcc559097c76" target="_blank">Boosty -></a>**
|
||||
posts.
|
||||
|
||||
## Install Plus
|
||||
### Install Plus
|
||||
After you get the password, get your login to Docker Hub in [Patron Portal ->](https://portal.devlike.pro/)
|
||||
and run the commands:
|
||||
```bash
|
||||
|
||||
|
After Width: | Height: | Size: 21 KiB |
@@ -0,0 +1 @@
|
||||
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 339.43 295.27"><title>tether-usdt-logo</title><path d="M62.15,1.45l-61.89,130a2.52,2.52,0,0,0,.54,2.94L167.95,294.56a2.55,2.55,0,0,0,3.53,0L338.63,134.4a2.52,2.52,0,0,0,.54-2.94l-61.89-130A2.5,2.5,0,0,0,275,0H64.45a2.5,2.5,0,0,0-2.3,1.45h0Z" style="fill:#50af95;fill-rule:evenodd"/><path d="M191.19,144.8v0c-1.2.09-7.4,0.46-21.23,0.46-11,0-18.81-.33-21.55-0.46v0c-42.51-1.87-74.24-9.27-74.24-18.13s31.73-16.25,74.24-18.15v28.91c2.78,0.2,10.74.67,21.74,0.67,13.2,0,19.81-.55,21-0.66v-28.9c42.42,1.89,74.08,9.29,74.08,18.13s-31.65,16.24-74.08,18.12h0Zm0-39.25V79.68h59.2V40.23H89.21V79.68H148.4v25.86c-48.11,2.21-84.29,11.74-84.29,23.16s36.18,20.94,84.29,23.16v82.9h42.78V151.83c48-2.21,84.12-11.73,84.12-23.14s-36.09-20.93-84.12-23.15h0Zm0,0h0Z" style="fill:#fff;fill-rule:evenodd"/></svg>
|
||||
|
After Width: | Height: | Size: 874 B |
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: "Polls"
|
||||
title: "📶 Polls"
|
||||
description: "How to send polls and receive votes"
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:45+00:00
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: "Presence"
|
||||
title: "✅ Presence"
|
||||
description: "Presence"
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:45+00:00
|
||||
|
||||
|
After Width: | Height: | Size: 18 KiB |
@@ -0,0 +1,97 @@
|
||||
---
|
||||
title: "🌐 Proxy"
|
||||
description: "Proxy"
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:45+00:00
|
||||
lastmod: 2020-10-06T08:48:45+00:00
|
||||
draft: false
|
||||
images: [ ]
|
||||
weight: 126
|
||||
---
|
||||
|
||||
## Overview
|
||||
If you're experiencing issues scanning QR codes in WhatsApp, especially with **Indian 🇮🇳 phone numbers**,
|
||||
using a proxy located close to the phone number's location may help resolve the problem.
|
||||
|
||||
It affects both **WEBJS** and **NOWEB** [engines]({{< relref "/docs/how-to/engines" >}}).
|
||||
|
||||
### Symptoms
|
||||
1. You start a new session in WhatsApp.
|
||||
2. Scan the QR code.
|
||||
3. Experience a long loading time.
|
||||
4. Face login failures or instant logout.
|
||||
5. Encounter a new QR code or enter a FAILED state immediately.
|
||||
|
||||
<div class="text-center">
|
||||
|
||||

|
||||
|
||||
</div>
|
||||
|
||||
## Configuration
|
||||
There are two ways to set up proxies:
|
||||
1. Global Setting (for all sessions per container)
|
||||
2. Per Session Configuration (you can define a proxy for each session when you start it)
|
||||
|
||||
### Global Proxy Configuration
|
||||
To use a proxy, you can set the following environment variables:
|
||||
|
||||
- `WHATSAPP_PROXY_SERVER=localhost:3128`: Set the proxy server in the format `host:port`, without HTTP or HTTPS.
|
||||
- `WHATSAPP_PROXY_SERVER_USERNAME=username` and `WHATSAPP_PROXY_SERVER_PASSWORD=password`: Configure credentials for the proxy.
|
||||
- `WHATSAPP_PROXY_SERVER_LIST=host1.example.com:3138,host2.example.com:3138`: Specify a comma-separated list of addresses to use, utilizing a round-robin algorithm for server selection.
|
||||
- `WHATSAPP_PROXY_SERVER_INDEX_PREFIX=proxy-`: Define a session name prefix to choose the appropriate proxy from the list.
|
||||
|
||||
Read more about it on [**Configuration page** ->]({{< relref "/docs/how-to/config#proxy" >}}).
|
||||
|
||||
### Session Proxy Configuration
|
||||
You can configure proxy for a session by setting `config.proxy` fields when you `POST /api/sessions/start`:
|
||||
- `server` - proxy server address, without `http://` or `https://` prefixes
|
||||
- `username` and `password` - set this if the proxy requires authentication
|
||||
|
||||
|
||||
**No authentication**
|
||||
```json
|
||||
{
|
||||
"name": "default",
|
||||
"config": {
|
||||
"proxy": {
|
||||
"server": "localhost:3128"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Proxy with authentication**
|
||||
```json
|
||||
{
|
||||
"name": "default",
|
||||
"config": {
|
||||
"proxy": {
|
||||
"server": "localhost:3128",
|
||||
"username": "username",
|
||||
"password": "P@ssw0rd"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
The configuration is saved and will be applied if the docker container restarts,
|
||||
and you set `WHATSAPP_RESTART_ALL_SESSIONS` environment variables.
|
||||
Read more about it in [Autostart section](#autostart).
|
||||
|
||||
Read more about it on [**Sessions page** ->]({{< relref "/docs/how-to/sessions#configure-proxy" >}}).
|
||||
|
||||
|
||||
## Recommended Proxies
|
||||
|
||||
### Proxy6
|
||||
We recommend using <b><a href="https://proxy6.net/en/?r=628046" target="_blank">Proxy6</a></b>
|
||||
where you can get a DEDICATED proxy (only you'll use it) for **$1.77 per month**.
|
||||
|
||||
Apply the promocode get a **5% discount** on your purchase.
|
||||
```
|
||||
9W9oVxx3UX
|
||||
```
|
||||
|
||||
### Geonode
|
||||
Another option is <b><a href="https://geonode.com/invite/89107" target="_blank">Geonode</a></b>.
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title : "Receive messages"
|
||||
title : "📥 Receive messages"
|
||||
description: "Receive messages"
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:45+00:00
|
||||
@@ -115,6 +115,43 @@ Fired on all message creations, including your own. The payload is the same as f
|
||||
}
|
||||
```
|
||||
|
||||
### message.reaction
|
||||
Receive events when a message is reacted to by a user (or **yourself** reacting to a message).
|
||||
- `payload.reaction.text` - emoji that was used to react to the message. It'll be an empty string if the reaction was removed.
|
||||
- `payload.reaction.messageId` - id of the message that was reacted to.
|
||||
|
||||
```json
|
||||
{
|
||||
"event": "message.reaction",
|
||||
"session": "default",
|
||||
"me": {
|
||||
"id": "79222222222@c.us",
|
||||
"pushName": "WAHA"
|
||||
},
|
||||
"payload": {
|
||||
"id": "false_79111111@c.us_11111111111111111111111111111111",
|
||||
"from": "79111111@c.us",
|
||||
"fromMe": false,
|
||||
"participant": "79111111@c.us",
|
||||
"to": "79111111@c.us",
|
||||
"timestamp": 1710481111.853,
|
||||
"reaction": {
|
||||
"text": "🙏",
|
||||
"messageId": "true_79111111@c.us_11111111111111111111111111111111"
|
||||
}
|
||||
},
|
||||
"engine": "WEBJS",
|
||||
"environment": {
|
||||
"version": "2024.3.3",
|
||||
"engine": "WEBJS",
|
||||
"tier": "PLUS",
|
||||
"browser": "/usr/bin/google-chrome-stable"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
{{< alert icon="👉" text="NOWEB engine note - reactions were sent in 'message' and 'message.any' events, not it's available only in 'message.reaction'!" />}}
|
||||
|
||||
### message.ack
|
||||
Receive events when server or recipient gets the message, read or played it.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title : "Security"
|
||||
title : "🔒 Security"
|
||||
description: "Security"
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:45+00:00
|
||||
@@ -15,7 +15,9 @@ We do not recommend exposing the API on any public networks!
|
||||
Either protect the API with [Api Key](https://www.fortinet.com/resources/cyberglossary/api-key) or deny access by using
|
||||
firewalls.
|
||||
|
||||
## Swagger Security 
|
||||
👉 Security options are available in [**WAHA Plus**]({{< relref "plus-version#plus" >}})  version only.
|
||||
|
||||
## Swagger Security
|
||||
### Username and password
|
||||
If you want to hide the project Swagger panel under the password - run the following command to hide under `admin/admin`
|
||||
login and password.
|
||||
@@ -35,8 +37,15 @@ You also can hide swagger completely by setting `WHATSAPP_SWAGGER_ENABLED=false`
|
||||
|
||||
{{< alert icon="👉" text="Disabling Swagger does not protect the API, please use API security as well" />}}
|
||||
|
||||
## Dashboard Security
|
||||
When running WAHA you can set the following environment variables to configure the dashboard:
|
||||
- `WAHA_DASHBOARD_ENABLED=true` - enable or disable the dashboard, by default `true`. Set to `false` to disable the dashboard.
|
||||
- `WAHA_DASHBOARD_USERNAME=waha` - username used to log in, by default `waha`.
|
||||
- `WAHA_DASHBOARD_PASSWORD=waha` - password used to log in, by default `waha`.
|
||||
|
||||
## API security 
|
||||
Read more about [**Dashboard ->**]({{< relref "/docs/how-to/waha-dashboard" >}})
|
||||
|
||||
## API security
|
||||
|
||||
You can protect the API by requiring Api Key in a request's headers.
|
||||
|
||||
@@ -72,7 +81,7 @@ headers = {
|
||||
requests.get("http://localhost:3000/api/sessions", headers=headers)
|
||||
```
|
||||
|
||||
## Webhook security 
|
||||
## Webhook security
|
||||
To make sure that you get a webhook from your WAHA instance - you can use **HMAC authentication**.
|
||||
Read more about it on [Webhooks page ->]({{< relref "/docs/how-to/webhooks#hmac-authentication" >}})
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
---
|
||||
title : "Send messages"
|
||||
title : "📤 Send messages"
|
||||
description: "Send messages"
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:45+00:00
|
||||
lastmod: 2020-10-06T08:48:45+00:00
|
||||
draft: false
|
||||
images: []
|
||||
weight: 110
|
||||
weight: 115
|
||||
---
|
||||
|
||||
We consider that you've run docker container and authenticated the session with QR code.
|
||||
@@ -57,6 +57,7 @@ To send text message - use `POST /api/sendText` with example payload.
|
||||
"text": "Hi there!"
|
||||
}
|
||||
```
|
||||
|
||||
#### Mention contact
|
||||
If you send a message in a group and want to mention a participant in the message -
|
||||
use `mentions` field for that in `POST /api/sendText` request.
|
||||
@@ -75,11 +76,6 @@ also mention it in `mentions` in format `2132132130@c.us`
|
||||
}
|
||||
```
|
||||
|
||||
### Send poll
|
||||
We have a dedicated page [how to send polls and receive votes]({{< relref "/docs/how-to/polls" >}})!
|
||||
|
||||

|
||||
|
||||
### Reply on message
|
||||
To reply on a message - use `POST /api/reply` with example payload.
|
||||
```json
|
||||
@@ -91,9 +87,49 @@ To reply on a message - use `POST /api/reply` with example payload.
|
||||
}
|
||||
```
|
||||
|
||||
#### Reply files 
|
||||
#### Reply files 
|
||||
WAHA does not support reply with files (images, voice, etc.). If you're interested in it - please create an issue in GitHub.
|
||||
|
||||
|
||||
### Edit message
|
||||
You can edit **text** messages or **"caption"** in media messages.
|
||||
|
||||
```
|
||||
PUT /api/{session}/chats/{chatId}/messages/{messageId}
|
||||
```
|
||||
👉 Remember to escape `@` in `chatId` and `messageId` with `%40`.
|
||||
|
||||
So if you want to edit `true_123@c.us_AAA` message in `123@c.us` chat you need to send request to:
|
||||
```
|
||||
PUT /api/{session}/chats/123%40c.us/messages/true_123%40c.us_AAA
|
||||
```
|
||||
|
||||
**Payload:**
|
||||
```json
|
||||
{
|
||||
"text": "Hello, world!"
|
||||
}
|
||||
```
|
||||
|
||||
### Delete message
|
||||
You can delete messages from the chat.
|
||||
|
||||
```
|
||||
DELETE /api/{session}/chats/{chatId}/messages/{messageId}
|
||||
```
|
||||
|
||||
👉 Remember to escape `@` in `chatId` and `messageId` with `%40`.
|
||||
|
||||
So if you want to delete `true_123@c.us_AAA` message in `123@c.us` chat you need to send request to:
|
||||
```
|
||||
DELETE /api/{session}/chats/123%40c.us/messages/true_123%40c.us_AAA
|
||||
```
|
||||
|
||||
### Send poll
|
||||
We have a dedicated page [how to send polls and receive votes]({{< relref "/docs/how-to/polls" >}})!
|
||||
|
||||

|
||||
|
||||
### Add a reaction
|
||||
Use `PUT /api/reaction` method to set reaction to a message.
|
||||
|
||||
@@ -116,6 +152,85 @@ To remove reaction from a message - send empty string in the reaction request.
|
||||
}
|
||||
```
|
||||
|
||||
### Star and unstar message
|
||||
Use `PUT /api/star` method to star or unstar a message.
|
||||
|
||||
{{< alert icon="👉" text="Star API uses PUT, not POST request! Please make sure you send right request." />}}
|
||||
|
||||
**Star:**
|
||||
```json
|
||||
{
|
||||
"messageId": "false_71111111111@c.us_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"chatId": "71111111111@c.us",
|
||||
"star": true,
|
||||
"session": "default"
|
||||
}
|
||||
```
|
||||
|
||||
**Unstar:**
|
||||
```json
|
||||
{
|
||||
"messageId": "false_71111111111@c.us_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"chatId": "71111111111@c.us",
|
||||
"star": false,
|
||||
"session": "default"
|
||||
}
|
||||
```
|
||||
|
||||
### Send contact (vcard)
|
||||
Use `POST /api/sendContactVcard` to send contact (vcard).
|
||||
|
||||
You can use fields this way:
|
||||
```json
|
||||
{
|
||||
"session": "default",
|
||||
"chatId": "79111111@c.us",
|
||||
"contacts": [
|
||||
{
|
||||
"fullName": "John Doe",
|
||||
"organization": "Company Name",
|
||||
"phoneNumber": "+91 11111 11111",
|
||||
"whatsappId": "911111111111"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Or provide a vCard file content:
|
||||
```json
|
||||
{
|
||||
"session": "default",
|
||||
"chatId": "79111111@c.us",
|
||||
"contacts": [
|
||||
{
|
||||
"vcard": "BEGIN:VCARD\nVERSION:3.0\nFN:Jane Doe\nORG:Company Name;\nTEL;type=CELL;type=VOICE;waid=911111111111:+91 11111 11111\nEND:VCARD"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Or even combine it:
|
||||
```json
|
||||
{
|
||||
"chatId": "79111111@c.us",
|
||||
"contacts": [
|
||||
{
|
||||
"vcard": "BEGIN:VCARD\nVERSION:3.0\nFN:Jane Doe\nORG:Company Name;\nTEL;type=CELL;type=VOICE;waid=911111111111:+91 11111 11111\nEND:VCARD"
|
||||
},
|
||||
{
|
||||
"fullName": "John Doe",
|
||||
"organization": "Company Name",
|
||||
"phoneNumber": "+91 11111 11111",
|
||||
"whatsappId": "911111111111"
|
||||
}
|
||||
],
|
||||
"session": "default"
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
### Send image 
|
||||
Use `POST /api/sendImage` to send images.
|
||||
|
||||
@@ -158,6 +273,8 @@ You can send voice messages in two ways:
|
||||
1. Provide a URL for the voice.
|
||||
2. Encode the whole file content into base64 and send it in the request body.
|
||||
|
||||
Please make sure your file has **OPUS** encoding and packed in OGG container.
|
||||
|
||||
#### URL
|
||||
```json
|
||||
{
|
||||
@@ -165,8 +282,7 @@ You can send voice messages in two ways:
|
||||
"chatId": "11111111111@c.us",
|
||||
"file": {
|
||||
"mimetype": "audio/ogg; codecs=opus",
|
||||
"filename": "voice-message.mp3",
|
||||
"url": "https://github.com/devlikeapro/whatsapp-http-api/raw/core/examples/dev.likeapro.mp3"
|
||||
"url": "https://github.com/devlikeapro/whatsapp-http-api/raw/core/examples/dev.likeapro.opus"
|
||||
},
|
||||
"caption": "string"
|
||||
}
|
||||
@@ -204,7 +320,7 @@ You can send voice messages in two ways:
|
||||
"file": {
|
||||
"mimetype": "video/mp4",
|
||||
"filename": "video.mp4",
|
||||
"url": "https://github.com/devlikeapro/whatsapp-http-api/raw/core/examples/dev.likeapro.mp3"
|
||||
"url": "https://github.com/devlikeapro/whatsapp-http-api/raw/core/examples/video.mp4"
|
||||
}
|
||||
}
|
||||
```
|
||||
@@ -233,13 +349,14 @@ You can send files in two ways:
|
||||
#### URL
|
||||
```json
|
||||
{
|
||||
"session": "default",
|
||||
"caption": "Check this out!",
|
||||
"chatId": "11111111111@c.us",
|
||||
"file": {
|
||||
"mimetype": "image/jpeg",
|
||||
"filename": "filename.jpeg",
|
||||
"url": "https://github.com/devlikeapro/whatsapp-http-api/raw/main/docs/dev.likeapro.jpg"
|
||||
},
|
||||
"session": "default"
|
||||
"url": "https://raw.githubusercontent.com/devlikeapro/whatsapp-http-api/core/examples/video.mp4"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: "Sessions"
|
||||
title: "🖥️ Sessions"
|
||||
description: "Sessions"
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:45+00:00
|
||||
@@ -46,7 +46,7 @@ and you set `WHATSAPP_RESTART_ALL_SESSIONS` environment variables.
|
||||
Read more about it in [Autostart section](#autostart).
|
||||
|
||||
#### Configure proxy
|
||||
You can configure proxy for a session by setting `config.proxy` fields:
|
||||
You can configure proxy for a session by setting `config.proxy` fields when you `POST /api/sessions/start`:
|
||||
- `server` - proxy server address, without `http://` or `https://` prefixes
|
||||
- `username` and `password` - set this if the proxy requires authentication
|
||||
|
||||
@@ -82,7 +82,21 @@ and you set `WHATSAPP_RESTART_ALL_SESSIONS` environment variables.
|
||||
Read more about it in [Autostart section](#autostart).
|
||||
|
||||
You can configure proxy when for all sessions by set up environment variables.
|
||||
Read more about it on [**Configuration page** ->]({{< relref "/docs/how-to/config#proxy" >}}).
|
||||
Read more about it on [**Proxy page** ->]({{< relref "/docs/how-to/proxy" >}}) or [**Configuration page** ->]({{< relref "/docs/how-to/config#proxy" >}}).
|
||||
|
||||
#### Enable debug
|
||||
You can enable debug mode for a session by setting `config.debug` field to `true`.
|
||||
It'll show you more logs in the console.
|
||||
Can be useful for debugging purposes when you're experiencing some issues.
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "default",
|
||||
"config": {
|
||||
"debug": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### List
|
||||
|
||||
@@ -94,7 +108,30 @@ The response:
|
||||
[
|
||||
{
|
||||
"name": "default",
|
||||
"status": "STARTING"
|
||||
"status": "WORKING",
|
||||
"config": {
|
||||
"proxy": null,
|
||||
"webhooks": [
|
||||
{
|
||||
"url": "https://httpbin.org/post",
|
||||
"events": [
|
||||
"message",
|
||||
"session.status"
|
||||
],
|
||||
"hmac": null,
|
||||
"retries": null,
|
||||
"customHeaders": null
|
||||
}
|
||||
],
|
||||
"debug": false
|
||||
},
|
||||
"me": {
|
||||
"id": "79111111@c.us",
|
||||
"pushName": "WAHA"
|
||||
},
|
||||
"engine": {
|
||||
"engine": "NOWEB"
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
@@ -103,6 +140,38 @@ You can add `?all=true` parameter to the request `GET /api/session?all=True` it'
|
||||
including **STOPPED**,
|
||||
so you can know which one will be restarted if you set `WHATSAPP_RESTART_ALL_SESSIONS=True` environment variable.
|
||||
|
||||
### Get session
|
||||
To get information about a specific session - call `GET /api/sessions/{session}`.
|
||||
```json
|
||||
{
|
||||
"name": "default",
|
||||
"status": "WORKING",
|
||||
"config": {
|
||||
"proxy": null,
|
||||
"webhooks": [
|
||||
{
|
||||
"url": "https://httpbin.org/post",
|
||||
"events": [
|
||||
"message",
|
||||
"session.status"
|
||||
],
|
||||
"hmac": null,
|
||||
"retries": null,
|
||||
"customHeaders": null
|
||||
}
|
||||
],
|
||||
"debug": false
|
||||
},
|
||||
"me": {
|
||||
"id": "79111111@c.us",
|
||||
"pushName": "WAHA"
|
||||
},
|
||||
"engine": {
|
||||
"engine": "NOWEB"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Stop
|
||||
|
||||
In order to stop a new session - call `POST /api/sessions/stop`
|
||||
@@ -265,7 +334,9 @@ See the list of engines [**that support the feature ->**]({{< relref "/docs/how-
|
||||
The `session.status` event is triggered when the session status changes.
|
||||
- `STOPPED` - session is stopped
|
||||
- `STARTING` - session is starting
|
||||
- `SCAN_QR_CODE` - session is required to scan QR code or login via phone number
|
||||
- `SCAN_QR_CODE` - session is required to scan QR code or login via phone number.
|
||||
- When you receive the `session.status` event with `SCAN_QR_CODE` status, you can [**fetch updated QR ->**]({{< relref "/docs/how-to/sessions#get-qr" >}})
|
||||
- The `SCAN_QR_CODE` is issued every time when QR updated (WhatsApp requirements)
|
||||
- `WORKING` - session is working and ready to use
|
||||
- `FAILED` - session is failed due to some error. It's likely that authorization is required again or device has been disconnected from that account.
|
||||
Try to restart the session and if it doesn't help - logout and start the session again.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: "Storages"
|
||||
title: "🗄️ Storages"
|
||||
description: "Storages"
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:45+00:00
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
---
|
||||
title: "📚 Swagger (OpenAPI)"
|
||||
description: "Swagger (OpenAPI)"
|
||||
lead: ""
|
||||
date: 2020-10-06t08:48:45+00:00
|
||||
lastmod: 2020-10-06t08:48:45+00:00
|
||||
draft: false
|
||||
images: [ ]
|
||||
weight: 111
|
||||
---
|
||||
|
||||
## Overview
|
||||
The project provides HTTP API (REST), which is documented with OpenAPI specification and Swagger UI.
|
||||
|
||||
<video autoplay loop muted playsinline controls='noremoteplayback' width="100%" poster='/images/swagger.png'>
|
||||
<source src="/videos/swagger-overview.webm" type="video/webm" />
|
||||
Download the <a href="/videos/swagger-overview.webm">Swagger Overview video</a> .
|
||||
</video>
|
||||
|
||||
You can see all available endpoints, request/response examples, and even execute them directly from the Swagger UI.
|
||||
|
||||
Later version:
|
||||
- [OpenAPI specification ->](/swagger/openapi.json)
|
||||
- [Swagger documentation ->](/swagger)
|
||||
|
||||
You can find Swagger documentation on the following url after you
|
||||
[install and started]( {{< relref "/docs/how-to/install" >}}) it:
|
||||
- Swagger: [http://localhost:3000](http://localhost:3000).
|
||||
- OpenAPI: [http://localhost:3000/-json](http://localhost:3000/-json).
|
||||
|
||||
## Configuration
|
||||
- `WHATSAPP_SWAGGER_CONFIG_ADVANCED=true` - enables advanced configuration options for Swagger documentation - you can customize host, port and base URL for the requests.
|
||||
Disabled by default.
|
||||
- `WHATSAPP_SWAGGER_ENABLED=false` - disables Swagger documentation. Enabled by default. Available in **WAHA Plus** only.
|
||||
- `WHATSAPP_SWAGGER_USERNAME=admin` and `WHATSAPP_SWAGGER_PASSWORD=admin` - these variables can be used to protect the Swagger panel
|
||||
with `admin / admin` credentials. This does not affect API access. Available in **WAHA Plus** only.
|
||||
|
||||
Read more about security settings for Swagger and API on [**Security page** ->]({{< relref "/docs/how-to/security" >}}).
|
||||
|
||||
### White label
|
||||
You can show your own brand in the Swagger documentation.
|
||||
|
||||
<img src="swagger-white-label.png" onclick="window.open(this.src)" style="cursor: pointer;">
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
👉 Swagger White Label is available in [**WAHA Plus**]({{< relref "plus-version#plus" >}})  version only.
|
||||
|
||||
Use the following environment variables to customize the Swagger documentation:
|
||||
- `WHATSAPP_SWAGGER_TITLE` - the title of the Swagger documentation and some other places.
|
||||
- `WHATSAPP_SWAGGER_DESCRIPTION` - Markdown formatted description of your API.
|
||||
- `WHATSAPP_SWAGGER_EXTERNAL_DOC_URL` - URL to the external documentation.
|
||||
|
||||
**Example** (consider using [docker-compose](https://github.com/devlikeapro/whatsapp-http-api/blob/core/docker-compose.yaml#L15-L38) or other methods to store these settings):
|
||||
```bash
|
||||
docker run -it -p 3000:3000 -e WHATSAPP_SWAGGER_TITLE="AwesomeCRM" -e 'WHATSAPP_SWAGGER_DESCRIPTION=<p>FantasticFindz - Discover unique treasures from around the world at unbelievable prices!<br/> <a href='https://google.com'>Read more about us!</a></p>' -e "WHATSAPP_SWAGGER_EXTERNAL_DOC_URL=https://google.com" devlikeapro/whatsapp-http-api-plus
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 89 KiB |
@@ -0,0 +1,57 @@
|
||||
---
|
||||
title: "📊 Dashboard"
|
||||
description: "Dashboard"
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:45+00:00
|
||||
lastmod: 2020-10-06T08:48:45+00:00
|
||||
draft: false
|
||||
images: [ ]
|
||||
weight: 110
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
**Dashboard** is a UI to manage your WhatsApp sessions!
|
||||
|
||||
<video autoplay loop muted playsinline controls='noremoteplayback' width="100%" poster='/images/waha-dashboard.png'>
|
||||
<source src="/videos/waha-dashboard-overview.webm" type="video/webm" />
|
||||
Download the <a href="/videos/waha-dashboard-overview.webm">Dashboard Overview video</a> .
|
||||
</video>
|
||||
|
||||
👉 **Dashboard** is available in [**WAHA Plus**]({{< relref "plus-version#plus" >}})  version only.
|
||||
|
||||
You can access **Dashboard** by running the project and opening
|
||||
<a href="http://localhost:3000/dashboard" target="_blank">http://localhost:3000/dashboard</a>
|
||||
(or similar, but with <a href="/dashboard" target="_blank">/dashboard</a> at the end).
|
||||
|
||||
ℹ️ **Default username and password**: `waha/waha`
|
||||
|
||||
```bash
|
||||
docker run -it -p 3000:3000/tcp devlikeapro/whatsapp-http-api-plus
|
||||
```
|
||||
|
||||
If you're using [API Key]({{< relref "security" >}}), remember to set up the key in the dashboard.
|
||||
|
||||

|
||||
|
||||
## Configuration
|
||||
|
||||
When running WAHA you can set the following environment variables to configure the dashboard:
|
||||
|
||||
- `WAHA_DASHBOARD_ENABLED=true` - enable or disable the dashboard, by default `true`. Set to `false` to disable the
|
||||
dashboard.
|
||||
- `WAHA_DASHBOARD_USERNAME=waha` - username used to log in, by default `waha`.
|
||||
- `WAHA_DASHBOARD_PASSWORD=waha` - password used to log in, by default `waha`.
|
||||
|
||||
```bash
|
||||
docker run -it -p 3000:3000/tcp -e WAHA_DASHBOARD_USERNAME=waha -e WAHA_DASHBOARD_PASSWORD=waha devlikeapro/whatsapp-http-api-plus
|
||||
```
|
||||
|
||||
## Multiple servers
|
||||
If you wish to connect, control and manage multiple servers in a single "dashboard", consider using
|
||||
[WAHA Hub]({{< relref "/docs/waha-hub/introduction" >}}) - central management server to help you build reliable infrastructure!
|
||||
|
||||
## Bug reports and feature requests
|
||||
If you're experiencing any issues or have a feature request, please create an issue in the
|
||||
[WAHA GitHub](https://github.com/devlikeapro/whatsapp-http-api/issues)
|
||||
|
||||
|
After Width: | Height: | Size: 80 KiB |
|
After Width: | Height: | Size: 73 KiB |
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title : "Webhooks"
|
||||
title : "🔄 Webhooks"
|
||||
description: "Webhooks"
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:45+00:00
|
||||
@@ -123,6 +123,8 @@ The `session.status` event is triggered when the session status changes.
|
||||
- `STOPPED` - session is stopped
|
||||
- `STARTING` - session is starting
|
||||
- `SCAN_QR_CODE` - session is required to scan QR code or login via phone number
|
||||
- When you receive the `session.status` event with `SCAN_QR_CODE` status, you can [**fetch updated QR ->**]({{< relref "/docs/how-to/sessions#get-qr" >}})
|
||||
- The `SCAN_QR_CODE` is issued every time when QR updated (WhatsApp requirements)
|
||||
- `WORKING` - session is working and ready to use
|
||||
- `FAILED` - session is failed due to some error. It's likely that authorization is required again or device has been disconnected from that account.
|
||||
Try to restart the session and if it doesn't help - logout and start the session again.
|
||||
@@ -226,6 +228,43 @@ Fired on all message creations, including your own. The payload is the same as f
|
||||
}
|
||||
```
|
||||
|
||||
### message.reaction
|
||||
Receive events when a message is reacted to by a user (or **yourself** reacting to a message).
|
||||
- `payload.reaction.text` - emoji that was used to react to the message. It'll be an empty string if the reaction was removed.
|
||||
- `payload.reaction.messageId` - id of the message that was reacted to.
|
||||
|
||||
```json
|
||||
{
|
||||
"event": "message.reaction",
|
||||
"session": "default",
|
||||
"me": {
|
||||
"id": "79222222222@c.us",
|
||||
"pushName": "WAHA"
|
||||
},
|
||||
"payload": {
|
||||
"id": "false_79111111@c.us_11111111111111111111111111111111",
|
||||
"from": "79111111@c.us",
|
||||
"fromMe": false,
|
||||
"participant": "79111111@c.us",
|
||||
"to": "79111111@c.us",
|
||||
"timestamp": 1710481111.853,
|
||||
"reaction": {
|
||||
"text": "🙏",
|
||||
"messageId": "true_79111111@c.us_11111111111111111111111111111111"
|
||||
}
|
||||
},
|
||||
"engine": "WEBJS",
|
||||
"environment": {
|
||||
"version": "2024.3.3",
|
||||
"engine": "WEBJS",
|
||||
"tier": "PLUS",
|
||||
"browser": "/usr/bin/google-chrome-stable"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
{{< alert icon="👉" text="NOWEB engine note - reactions were sent in 'message' and 'message.any' events, not it's available only in 'message.reaction'!" />}}
|
||||
|
||||
### message.ack
|
||||
Receive events when server or recipient gets the message, read or played it.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: "Changelog"
|
||||
title: "🔄 Changelog"
|
||||
description: "WAHA's changelog"
|
||||
lead: "You can find here the list of changes made to WAHA."
|
||||
date: 2020-10-06T08:49:31+00:00
|
||||
@@ -15,9 +15,137 @@ toc: true
|
||||
|
||||
If you wish to get and read Release Notes - read them on one of our platforms, **these posts are FREE**.
|
||||
- [**Boosty ->**](https://boosty.to/wa-http-api)
|
||||
- [**Patreon ->**](patreon.com/wa_http_api)
|
||||
- [**Patreon ->**](https://patreon.com/wa_http_api)
|
||||
|
||||
You even can **subscribe to get new updates** there!
|
||||
**Subscribe for FREE to get new updates** there!
|
||||
|
||||
----
|
||||
|
||||
## 2024.5
|
||||
### 🎉 New
|
||||
----
|
||||
|
||||
[Swagger White Label]({{< relref "/docs/how-to/swagger#white-label" >}}) - show your own brand in the Swagger documentation!
|
||||
- Read more about [Swagger White Label]({{< relref "/docs/how-to/swagger#white-label" >}})
|
||||
- Issue: [#305](https://github.com/devlikeapro/whatsapp-http-api/issues/305)
|
||||
- Build: `2024.5.4`
|
||||
- Engine: **ALL**
|
||||
|
||||
----
|
||||
|
||||
### 🐛 Fixes
|
||||
----
|
||||
|
||||
Fix send video issue `POST /api/sendVideo` in **WEBJS**.
|
||||
- Issue: [#321](https://github.com/devlikeapro/whatsapp-http-api/issues/321)
|
||||
- Issue: [#328](https://github.com/devlikeapro/whatsapp-http-api/issues/328)
|
||||
- Build: `2024.5.6`
|
||||
- Engine: **WEBJS**
|
||||
|
||||
----
|
||||
|
||||
Use local cache for **WEBJS** engine (versions file).
|
||||
- Issue: [#316](https://github.com/devlikeapro/whatsapp-http-api/issues/316)
|
||||
- Build: `2024.5.4`
|
||||
- Engine: **WEBJS**
|
||||
|
||||
----
|
||||
|
||||
Don't allow to start two sessions with the same name.
|
||||
|
||||
Before API allowed to start two sessions with the same name, which could lead to potential problems (no way to stop the first, abandoned session).
|
||||
- Issue: [#315](https://github.com/devlikeapro/whatsapp-http-api/issues/315)
|
||||
- Read more about [start a session](https://waha.devlike.pro/docs/how-to/sessions/#start)
|
||||
- Build: `2024.5.3`
|
||||
- Engine: **ALL**
|
||||
|
||||
----
|
||||
|
||||
## 2024.4
|
||||
### 🎉 New
|
||||
----
|
||||
|
||||
Add **WAHA Dashboard** - UI to manage your WhatsApp sessions!
|
||||
- Read more about [Dashboard]({{< relref "/docs/how-to/waha-dashboard" >}})
|
||||
- Open [screenshot](/images/waha-dashboard.png)
|
||||
|
||||
----
|
||||
|
||||
Add `GET /api/sessions/{session}` endpoint to get information about a specific session.
|
||||
- Read more about [Get session information]({{< relref "/docs/how-to/sessions#get-session" >}})
|
||||
- Issue: [#300](https://github.com/devlikeapro/whatsapp-http-api/issues/300)
|
||||
|
||||
----
|
||||
|
||||
Implement `GET /api/contacts/profile-picture` for **NOWEB** engine.
|
||||
- Read more about [Get contact profile picture](https://waha.devlike.pro/docs/how-to/contacts/#get-contact-profile-picture)
|
||||
- Issue: [#298](https://github.com/devlikeapro/whatsapp-http-api/issues/298)
|
||||
|
||||
----
|
||||
|
||||
## 2024.3
|
||||
### 🎉 New
|
||||
|
||||
----
|
||||
|
||||
Add `message.reaction` webhook in **WEBJS** and **NOWEB** engines
|
||||
- Read more about [message.reaction]({{< relref "/docs/how-to/webhooks#messagereaction" >}}) event
|
||||
- Issue: [#275](https://github.com/devlikeapro/whatsapp-http-api/issues/275)
|
||||
|
||||
👉 **NOWEB** engine note - reactions were sent in `'message'` and `'message.any'` events, not it's available **only** in `'message.reaction'`!
|
||||
|
||||
----
|
||||
|
||||
Add star and unstar message endpoint `PUT /api/star`
|
||||
- Read [Star and unstar message]({{< relref "/docs/how-to/send-messages#star-and-unstar-message" >}}) documentation
|
||||
- Issue: [#273](https://github.com/devlikeapro/whatsapp-http-api/issues/240)
|
||||
|
||||
----
|
||||
|
||||
Add `PUT /api/{session}/chats/{chatId}/messages/{messageId}` endpoint to **edit** the message.
|
||||
- Read more about [Edit message]({{< relref "/docs/how-to/send-messages#edit-message" >}})
|
||||
- Issue: [#241](https://github.com/devlikeapro/whatsapp-http-api/issues/241)
|
||||
|
||||
----
|
||||
|
||||
Add `DELETE /api/{session}/chats/{chatId}/messages/{messageId}` endpoint to **delete** the message.
|
||||
- Read more about [Delete message]({{< relref "/docs/how-to/send-messages#delete-message" >}})
|
||||
- Issue: [#209](https://github.com/devlikeapro/whatsapp-http-api/issues/209)
|
||||
|
||||
----
|
||||
|
||||
Add `POST /api/sendContactVcard` support for **NOWEB** engine.
|
||||
- Read more about [Send Contact vCard]({{< relref "/docs/how-to/send-messages#send-contact-vcard" >}})
|
||||
- Issue: [#276](https://github.com/devlikeapro/whatsapp-http-api/issues/256)
|
||||
|
||||
----
|
||||
|
||||
Handles `caption` and `filename` right in `POST /api/sendFile`
|
||||
- Issue: [#94](https://github.com/devlikeapro/whatsapp-http-api/issues/94)
|
||||
- Issue: [#133](https://github.com/devlikeapro/whatsapp-http-api/issues/133)
|
||||
|
||||
----
|
||||
|
||||
Add security settings for who can send messages `PUT /api/{session}/groups/{groupId}/settings/security/messages-admin-only`
|
||||
- Read [Security - who can send messages]({{< relref "/docs/how-to/groups##security---who-can-send-messages" >}})
|
||||
- Issue: [#274](https://github.com/devlikeapro/whatsapp-http-api/issues/274)
|
||||
|
||||
----
|
||||
|
||||
Add `config.debug` field to `POST /api/session/start` to enable debug and verbose logs for the session.
|
||||
|
||||
----
|
||||
|
||||
### 👉 Breaking changes
|
||||
- **NOWEB** - reactions were sent in `'message'` and `'message.any'` events, not it's available **only** in `'message.reaction'`!
|
||||
- Add **required body** in `PUT /api/{session}/groups/{groupId}/settings/security/info-admin-only` endpoint.
|
||||
```json
|
||||
{
|
||||
"adminsOnly": false
|
||||
}
|
||||
```
|
||||
|
||||
- `POST /api/sendContactVcard` doesn't work in **VENOM** anymore (use **NOWEB** engine).
|
||||
|
||||
## 2024.2
|
||||
- Add support for [MongoDB as storage for Session data]({{< relref "/docs/how-to/storages" >}})
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: "FAQ"
|
||||
title: "❓ FAQ"
|
||||
description: "Answers to frequently asked questions."
|
||||
lead: "Answers to frequently asked questions."
|
||||
date: 2020-10-06T08:49:31+00:00
|
||||
@@ -30,7 +30,9 @@ communicate with it to prevent blocking from WhatsApp. It's the reason why it's
|
||||
### NOWEB
|
||||
If you're looking for less resource demanded engine - [have a look at **NOWEB** engine ->]({{< relref "/docs/how-to/engines" >}})
|
||||
|
||||
The quote from the user:
|
||||
> The server has 2 CPU and 8GB of memory.
|
||||
> Today we have 85 session in this instance.
|
||||
Quotes from the users:
|
||||
> The server has **2 CPU and 8GB** of memory. Today we have **85 sessions** in this instance.
|
||||
|
||||
> **400** sessions with **4CPU and 32RAM**. It's working fine.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: "How to Avoid Blocking"
|
||||
title: "⚠️ How to Avoid Blocking"
|
||||
description: "How to Avoid Blocking From Whatsapp"
|
||||
date: 2020-11-12T13:26:54+01:00
|
||||
lastmod: 2020-11-12T13:26:54+01:00
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: "Introduction"
|
||||
title: "📖 Introduction"
|
||||
description: "WAHA - WhatsApp HTTP API that you can install on your own server and run in less than 5 minutes!"
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:57+00:00
|
||||
@@ -12,10 +12,10 @@ parent: "overview"
|
||||
weight: 100
|
||||
toc: true
|
||||
---
|
||||
**WAHA** - **W**hats**A**pp **H**TTP **A**PI that you can install on your own server and run in less than 5 minutes!
|
||||
**WAHA** - <u>W</u>hats<u>A</u>pp <u>H</u>TTP <u>A</u>PI that you can install on your own server and run in less than 5 minutes!
|
||||
|
||||
<div class="d-flex justify-content-center my-4">
|
||||
<img src="/images/logo.png"/>
|
||||
<img src="/images/logo.svg" style='border-radius: 50%' width='150'/>
|
||||
</div>
|
||||
|
||||
## Get started
|
||||
@@ -25,12 +25,16 @@ toc: true
|
||||
We will guide you through the necessary steps to successfully send your first text message using WhatsApp HTTP API in
|
||||
[**Quick Start →**]({{< relref "quick-start" >}}).
|
||||
|
||||
## Features
|
||||
WAHA is distributed in two versions:
|
||||
- Core  - the basic version that meet almost 80% people's needs. 100% free and [open source ->](https://github.com/devlikeapro/whatsapp-http-api).
|
||||
- Plus  - the version with advanced messages, security, and reliability features. Donations, no license expiration, quick updates, read more about [Plus Version →]({{< relref "plus-version" >}})
|
||||
## Disclaimer
|
||||
This project is not affiliated, associated, authorized, endorsed by, or in any way officially connected with WhatsApp or any of its subsidiaries or its affiliates. The official WhatsApp website can be found at [whatsapp.com](https://whatsapp.com).
|
||||
|
||||
See the list of engines [**that support the features ->**]({{< relref "/docs/how-to/engines#features" >}}).
|
||||
"WhatsApp" as well as related names, marks, emblems and images are registered trademarks of their respective owners. Also it is not guaranteed you will not be blocked by using this method. WhatsApp does not allow bots or unofficial clients on their platform, so this shouldn't be considered totally safe.
|
||||
|
||||
For any businesses looking to integrate with WhatsApp for critical applications, we highly recommend using officially supported methods, such as Twilio's solution or other alternatives. You might also consider [the official API ->](https://developers.facebook.com/docs/whatsapp/).
|
||||
|
||||
|
||||
|
||||
## Features
|
||||
|
||||
Here's the available features:
|
||||
|
||||
@@ -67,7 +71,7 @@ Here's the available features:
|
||||
- Single WhatsApp account running inside one container
|
||||
- Multiple WhatsApp account running inside one container 
|
||||
- Session saving (don't have to scan QR on every restart) 
|
||||
- Session saving on remote storage (database, redis) 
|
||||
- Session saving on remote storage (mongodb) 
|
||||
|
||||
### Security
|
||||
- API authentication 
|
||||
@@ -76,3 +80,12 @@ Here's the available features:
|
||||
### Updates
|
||||
- Bug fixes and updates come as soon as they are implemented.
|
||||
|
||||
## Engines
|
||||
Not all Engines support all Features, see [**the feature supported by engines ->**]({{< relref "/docs/how-to/engines#features" >}}).
|
||||
|
||||
|
||||
## Versions
|
||||
WAHA is distributed in two versions:
|
||||
- Core  - the basic version that meet almost 80% people's needs. **100% free and [open source ->](https://github.com/devlikeapro/whatsapp-http-api)**.
|
||||
- Plus  - the version with advanced messages, security, and reliability features. Donations, no license expiration, quick updates, read more about [**Plus Version →**]({{< relref "plus-version" >}})
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: "Quick Start"
|
||||
title: "⚡ Quick Start"
|
||||
description: "One page summary of how to start WhatsApp HTTP API."
|
||||
lead: "One page summary of how to start WhatsApp HTTP API."
|
||||
date: 2020-11-16T13:59:39+01:00
|
||||
@@ -9,7 +9,7 @@ images: []
|
||||
menu:
|
||||
docs:
|
||||
parent: "overview"
|
||||
weight: 110
|
||||
weight: 101
|
||||
toc: true
|
||||
---
|
||||
|
||||
@@ -36,18 +36,21 @@ Also, Docker makes installation and update processes so simple, just one command
|
||||
|
||||
We will guide you through the necessary steps to successfully send your first text message using WhatsApp HTTP API.
|
||||
|
||||
**If you find it easier to follow a video** tutorial, we've got you covered!
|
||||
A 3-minute video tutorial is available to help you navigate WhatsApp HTTP API smoothly.
|
||||
<div class='article-card'>
|
||||
<b class='h4'>Are you a visual learner?</b>
|
||||
|
||||
<div class="d-flex justify-content-center my-4">
|
||||
<iframe
|
||||
width="560" height="315"
|
||||
src="https://www.youtube.com/embed/RFerMyAUPRg"
|
||||
title="YouTube video player"
|
||||
frameborder="0"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
||||
allowfullscreen
|
||||
></iframe>
|
||||
We've got you covered! Watch the video below to see how to send your first message using <b>WAHA</b>.
|
||||
|
||||
<div class="d-flex justify-content-center my-4">
|
||||
<iframe
|
||||
width="560" height="315"
|
||||
src="https://www.youtube.com/embed/RFerMyAUPRg"
|
||||
title="YouTube video player"
|
||||
frameborder="0"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
||||
allowfullscreen
|
||||
></iframe>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
### 1. Download image
|
||||
@@ -107,6 +110,9 @@ Open the link in your browser [http://localhost:3000/](http://localhost:3000/) a
|
||||
(Swagger).
|
||||
|
||||
{{< alert icon="👉" text="We don't recommend expose the API in the internet without authentication!" />}}
|
||||
[Read more about Security ->]({{< relref "/docs/how-to/security" >}})
|
||||
|
||||
<br/>
|
||||
|
||||

|
||||
|
||||
@@ -183,8 +189,9 @@ curl -d "{\"chatId\": \"${PHONE}@c.us\", \"text\": \"Hello from WhatsApp HTTP AP
|
||||
```
|
||||
|
||||
## What is next?
|
||||
- Right now you've sent simple text message, but you can send more! [Send messages →]({{< relref "/docs/how-to/send-messages" >}})
|
||||
- Read how to receive and response to messages [Receive messages →]({{< relref "/docs/how-to/receive-messages" >}})
|
||||
- Learn about the easiest way to manage your WhatsApp sessions - [Dashboard ->]({{< relref "/docs/how-to/waha-dashboard" >}})
|
||||
- Right now you've sent simple text message, but you can send more! [Send messages ->]({{< relref "/docs/how-to/send-messages" >}})
|
||||
- Read how to receive and response to messages [Receive messages ->]({{< relref "/docs/how-to/receive-messages" >}})
|
||||
- [Save session information, so you don't have to scan QR after container restart ->]({{< relref "/docs/how-to/sessions" >}})
|
||||
- Make sure your [API is properly protected ->]({{< relref "/docs/how-to/security" >}})
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
title : "WAHA Hub"
|
||||
description: "WAHA Hub"
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:45+00:00
|
||||
lastmod: 2020-10-06T08:48:45+00:00
|
||||
draft: false
|
||||
images: []
|
||||
weight: 300
|
||||
---
|
||||
@@ -0,0 +1,52 @@
|
||||
---
|
||||
title: "WAHA Hub"
|
||||
description: "WAHA Hub"
|
||||
lead: ""
|
||||
date: 2020-10-06T08:48:57+00:00
|
||||
lastmod: 2020-10-06T08:48:57+00:00
|
||||
draft: false
|
||||
images: [ ]
|
||||
menu:
|
||||
docs:
|
||||
parent: "overview"
|
||||
weight: 301
|
||||
toc: true
|
||||
---
|
||||
|
||||
|
||||
---
|
||||
|
||||
⚠️
|
||||
|
||||
**WAHA Hub** in **DEVELOPMENT** yet...
|
||||
|
||||
Consider using [Dashboard]({{< relref "/docs/how-to/waha-dashboard" >}}) for managing your sessions.
|
||||
|
||||
Subscribe to [**WAHA PRO**]({{< relref "plus-version#pro" >}}) to speed up the development!
|
||||
|
||||
⚠️
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
**WAHA Hub** - central management solution to help your build reliable infrastructure with multiple WAHA servers!
|
||||
|
||||
While [Dashboard]({{< relref "/docs/how-to/waha-dashboard" >}}) is a UI to manage your WhatsApp sessions on
|
||||
**single server**, **WAHA Hub** is a central management server to control and manage **multiple servers** in a single
|
||||
place.
|
||||
|
||||
👉 **WAHA Hub** is available in [**WAHA PRO**]({{< relref "plus-version#pro" >}}) version only.
|
||||
|
||||

|
||||
<div class="text-center">
|
||||
<a href="waha-dashboard.png" target="_blank">See full size image</a>
|
||||
</div>
|
||||
|
||||
## Features
|
||||
|
||||
- Control and manage multiple servers in a single Hub.
|
||||
- Monitor the status of your servers
|
||||
- And more!
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 73 KiB |
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: "Pricing"
|
||||
description: "WAHA - WhatsApp HTTP API that you can run in a click!"
|
||||
summary: "WAHA Plus"
|
||||
date: 2024-01-29T15:50:07+02:00
|
||||
lastmod: 2024-01-29T15:50:07+02:00
|
||||
draft: false
|
||||
---
|
||||
|
||||
@@ -6,18 +6,22 @@
|
||||
</div>
|
||||
<div class='col-lg-9 col-xl-9 text-center'>
|
||||
<div class='mb-4'>
|
||||
<img src='/images/logo.png' title='WhatsApp HTTP API' alt='logo' width='100' />
|
||||
<img src='/images/logo.svg' title='WhatsApp HTTP API' alt='logo' style='border-radius: 50%; width: 10rem' />
|
||||
</div>
|
||||
<p class='lead'>{{ .Params.lead | safeHTML }}</p>
|
||||
<code>
|
||||
docker run -it -p 3000:3000/tcp devlikeapro/whatsapp-http-api
|
||||
</code>
|
||||
<br />
|
||||
<br />
|
||||
<div class='code-block highlight'>
|
||||
<pre tabindex='0' class='chroma'><code class='language-bash' data-lang='bash' style='padding: 0'>docker run -it -p 3000:3000/tcp devlikeapro/whatsapp-http-api</code></pre>
|
||||
</div>
|
||||
<a class='btn btn-primary btn-lg px-4 mb-2'
|
||||
href='/docs/{{ if .Site.Params.options.docsVersioning }}{{ .Site.Params.docsVersion }}/{{ end }}overview/introduction/'
|
||||
role='button'>Get Started</a>
|
||||
<p class='meta'><a href='https://github.com/devlikeapro/whatsapp-http-api'>Source code in GitHub.</a></p>
|
||||
<p class='meta'>
|
||||
<a href='https://github.com/devlikeapro/whatsapp-http-api'>Source code in GitHub.</a>
|
||||
<br />
|
||||
<a href='https://hub.docker.com/r/devlikeapro/whatsapp-http-api'>
|
||||
<img alt='Docker Pulls' src='https://img.shields.io/docker/pulls/devlikeapro/whatsapp-http-api'>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -25,27 +29,168 @@
|
||||
|
||||
{{ define "sidebar-prefooter" }}
|
||||
<section class='section section-sm'>
|
||||
<div class='container'>
|
||||
<div class='container hr'>
|
||||
<div class='row justify-content-center text-center'>
|
||||
<div class='col-lg-5'>
|
||||
<img src='/images/icons/free.png' alt='Free' style='width: 5rem'>
|
||||
<h2 class='h4'>It's free!</h2>
|
||||
<div class='col-12'>
|
||||
<h2>
|
||||
WAHA Features
|
||||
</h2>
|
||||
</div>
|
||||
<div class='col-12 col-lg-4 pros-card'>
|
||||
<img src='/images/icons/message-green.png' alt='Free' style='width: 5rem'>
|
||||
<h2 class='h4 color-accent'>Send and Receive<br />Messages</h2>
|
||||
<p>
|
||||
<a href='https://waha.devlike.pro/docs/how-to/plus-version/#tiers' target='_blank'>
|
||||
You can
|
||||
<a href='/docs/how-to/send-messages/'>send messages to</a>
|
||||
and
|
||||
<a href='/docs/how-to/receive-messages/'>receive messages from</a>
|
||||
WhatsApp using HTTP API (REST API).
|
||||
</p>
|
||||
|
||||
<div class='code-block highlight' style='text-align: left'>
|
||||
<pre tabindex='0' class='chroma m-0'>
|
||||
<code class='language-json' data-lang='json' style='padding: 1rem!important; border-radius: 0.5rem'>POST /api/sendText
|
||||
{
|
||||
"session": "default",
|
||||
"chatId": "12132132130@c.us",
|
||||
"text": "Hi there!"
|
||||
}
|
||||
|
||||
</code>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class='col-12 col-lg-4 pros-card'>
|
||||
<img src='/images/icons/file-check-green.svg' alt='Servers' style='width: 5rem'>
|
||||
<h2 class='h4'>Send and Receive<br />Files</h2>
|
||||
<p>
|
||||
You can
|
||||
<a href='/docs/how-to/send-messages/'>send files to</a>
|
||||
and
|
||||
<a href='/docs/how-to/receive-messages/'>receive files from</a>
|
||||
WhatsApp using HTTP API (REST API).
|
||||
</p>
|
||||
|
||||
<div class='code-block highlight' style='text-align: left'>
|
||||
<pre tabindex='0' class='chroma m-0'>
|
||||
<code class='language-json' data-lang='json' style='padding: 1rem!important; border-radius: 0.5rem'>POST /api/sendFile
|
||||
{
|
||||
"session": "default",
|
||||
"chatId": "12132132130@c.us",
|
||||
"file": {
|
||||
"url": "https://d.com/invoice.pdf"
|
||||
}
|
||||
}</code>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class='col-12 col-lg-4 pros-card'>
|
||||
<img src='/images/icons/button-green.png' alt='API' style='width: 5rem'>
|
||||
<h2 class='h4'>
|
||||
WAHA can do<br />a lot more
|
||||
</h2>
|
||||
<p>
|
||||
Check out
|
||||
<a href='/docs/overview/introduction/#features'>
|
||||
the documentation
|
||||
</a>
|
||||
to see all the features.
|
||||
</p>
|
||||
|
||||
<div class='code-block highlight' style='text-align: left'>
|
||||
<pre tabindex='0' class='chroma m-0'>
|
||||
<code class='language-json' data-lang='json' style='padding: 1rem!important; border-radius: 0.5rem'>POST /api/{session}/groups
|
||||
{
|
||||
"name": "Group name",
|
||||
"participants": [
|
||||
{"id": "123123123123@c.us"}
|
||||
]
|
||||
}
|
||||
</code>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='col-12' style='width: 80%; margin-top: 2rem'>
|
||||
<a href='/docs/how-to/swagger/' target='_blank'>
|
||||
<h2 class='h4 color-accent'>
|
||||
Swagger documentation and OpenAPI Specification
|
||||
</h2>
|
||||
</a>
|
||||
<p>
|
||||
<a href='/docs/how-to/plus-version/#core' target='_blank'>
|
||||
<b>WAHA Core</b>
|
||||
</a>
|
||||
version is always free!
|
||||
and
|
||||
<a href='/docs/how-to/plus-version/#plus' target='_blank'>
|
||||
<b>WAHA Plus</b>
|
||||
</a>
|
||||
provide Swagger documentation and OpenAPI schema to easily integrate with your favorite language and HTTP API (REST API)!
|
||||
<br>
|
||||
Even
|
||||
<a href='https://waha.devlike.pro/docs/how-to/plus-version/#tiers' target='_blank'>
|
||||
</p>
|
||||
<video autoplay loop muted playsinline controls='noremoteplayback' width='100%' poster='/images/swagger.png'>
|
||||
<source src='/videos/swagger-overview.webm' type='video/webm' />
|
||||
Download the <a href='/videos/swagger-overview.webm'>Swagger Overview video</a> .
|
||||
</video>
|
||||
</div>
|
||||
|
||||
<div class='col-12' style='width: 80%; margin-top: 2rem'>
|
||||
<a href='/docs/how-to/waha-dashboard' target='_blank'>
|
||||
<h2 class='h4 color-accent'>Built-in Dashboard</h2>
|
||||
</a>
|
||||
<p>
|
||||
<a href='/docs/how-to/plus-version/#plus' target='_blank'>
|
||||
<b>WAHA Plus</b>
|
||||
</a>
|
||||
provides Dashboard - a web interface to easily manage your WhatsApp sessions!
|
||||
<br>
|
||||
</p>
|
||||
<video autoplay loop muted playsinline controls='noremoteplayback' width='100%'
|
||||
poster='/images/waha-dashboard.png'>
|
||||
<source src='/videos/waha-dashboard-overview.webm' type='video/webm' />
|
||||
Download the <a href='/videos/waha-dashboard-overview.webm'>Dashboard Overview video</a> .
|
||||
</video>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class='section section-sm'>
|
||||
<div class='container hr'>
|
||||
<div class='row justify-content-center text-center'>
|
||||
<div class='col-12'>
|
||||
<h2>
|
||||
Why WAHA?
|
||||
</h2>
|
||||
</div>
|
||||
<div class='col-12 col-lg-4 pros-card'>
|
||||
<img src='/images/icons/free-green.png' alt='Free' style='width: 5rem'>
|
||||
<h2 class='h4 color-accent'>It's free!</h2>
|
||||
<p>
|
||||
<a href='/docs/how-to/plus-version/#tiers' target='_blank'>
|
||||
<b>WAHA Core</b>
|
||||
</a>
|
||||
version is always free, <b>no limits in messages</b> or time!
|
||||
<br>
|
||||
<a href='/docs/how-to/plus-version/#tiers' target='_blank'>
|
||||
<b>WAHA Plus</b>
|
||||
</a>
|
||||
version have no licence expiration!
|
||||
</p>
|
||||
</div>
|
||||
<div class='col-lg-5'>
|
||||
<img src='/images/icons/api.png' alt='API' style='width: 5rem'>
|
||||
<h2 class='h4'>Language agnostic</h2>
|
||||
<div class='col-12 col-lg-4 pros-card'>
|
||||
<img src='/images/icons/servers-green.png' alt='Servers' style='width: 5rem'>
|
||||
<h2 class='h4'>Self-hosted solution</h2>
|
||||
<p>
|
||||
<a href='/docs/how-to/plus-version/#why-waha' target='_blank'>
|
||||
No strings to suspicious SaaS WhatsApp HTTP API solutions.
|
||||
</a>
|
||||
Install it on your own server!
|
||||
</p>
|
||||
</div>
|
||||
<div class='col-12 col-lg-4 pros-card'>
|
||||
<img src='/images/icons/api-green.png' alt='API' style='width: 5rem'>
|
||||
<h2 class='h4'>HTTP / REST API</h2>
|
||||
<p>
|
||||
Use your own favorite language - Python, JavaScript, PHP, C#, Clojure, or PowerShell.
|
||||
<br />
|
||||
@@ -54,33 +199,23 @@
|
||||
</small>
|
||||
</p>
|
||||
</div>
|
||||
<div class='col-lg-5'>
|
||||
<img src='/images/icons/document.png' alt='Document' style='width: 5rem'>
|
||||
</div>
|
||||
<div class='row justify-content-center text-center'>
|
||||
<div class='col-12 col-lg-4 pros-card'>
|
||||
<img src='/images/icons/document-green.png' alt='Document' style='width: 5rem'>
|
||||
<h2 class='h4'>Well documented</h2>
|
||||
<p>
|
||||
<a href='https://waha.devlike.pro/docs/overview/introduction/' target='_blank'>
|
||||
<a href='/docs/overview/introduction/' target='_blank'>
|
||||
Documentation
|
||||
</a>
|
||||
has a lof examples and how-to guides.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class='row justify-content-center text-center'>
|
||||
<div class='col-lg-5'>
|
||||
<img src='/images/icons/servers.png' alt='Servers' style='width: 5rem'>
|
||||
<h2 class='h4'>Self-hosted solution</h2>
|
||||
<p>
|
||||
<a href='https://waha.devlike.pro/docs/how-to/plus-version/#why-waha' target='_blank'>
|
||||
No strings to suspicious SaaS WhatsApp HTTP API solutions.
|
||||
</a>
|
||||
Install it on your own server!
|
||||
</p>
|
||||
</div>
|
||||
<div class='col-lg-5'>
|
||||
<img src='/images/icons/easy.png' alt='Easy' style='width: 5rem'>
|
||||
<div class='col-12 col-lg-4 pros-card'>
|
||||
<img src='/images/icons/easy-green.png' alt='Easy' style='width: 5rem'>
|
||||
<h2 class='h4'>Quick installation</h2>
|
||||
<p>
|
||||
You need to install Docker and
|
||||
<a href='https://waha.devlike.pro/docs/how-to/install/' target='_blank'>
|
||||
<a href='/docs/how-to/install/' target='_blank'>
|
||||
run the API in a click!
|
||||
</a>
|
||||
<br />
|
||||
@@ -89,11 +224,11 @@
|
||||
</small>
|
||||
</p>
|
||||
</div>
|
||||
<div class='col-lg-5'>
|
||||
<img src='/images/icons/checked.png' alt='Checked' style='width: 5rem'>
|
||||
<div class='col-12 col-lg-4 pros-card'>
|
||||
<img src='/images/icons/checked-green.png' alt='Checked' style='width: 5rem'>
|
||||
<h2 class='h4'>No blocking</h2>
|
||||
<p>
|
||||
<a href='https://waha.devlike.pro/docs/how-to/engines/' target='_blank'>
|
||||
<a href='/docs/how-to/engines/' target='_blank'>
|
||||
Under the hood
|
||||
</a>
|
||||
it runs a real instance of Whatsapp Web to avoid getting blocked.
|
||||
@@ -104,6 +239,30 @@
|
||||
</small>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class='section section-sm'>
|
||||
<div class='container hr'>
|
||||
<div class='text-center mt-4'>
|
||||
<h2>
|
||||
Give it a try!
|
||||
</h2>
|
||||
<div class='mb-4'>
|
||||
<img src='/images/logo.svg' title='WhatsApp HTTP API' alt='logo' style='border-radius: 50%; width: 10rem' />
|
||||
</div>
|
||||
<a class='btn btn-primary btn-lg px-4 mb-2'
|
||||
href='/docs/{{ if .Site.Params.options.docsVersioning }}{{ .Site.Params.docsVersion }}/{{ end }}overview/introduction/'
|
||||
role='button'>Get Started</a>
|
||||
<p class='meta'>
|
||||
<a href='https://github.com/devlikeapro/whatsapp-http-api'>Source code in GitHub.</a>
|
||||
<br/>
|
||||
<a href='https://hub.docker.com/r/devlikeapro/whatsapp-http-api'>
|
||||
<img alt='Docker Pulls' src='https://img.shields.io/docker/pulls/devlikeapro/whatsapp-http-api'>
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -1,17 +1,91 @@
|
||||
<!-- Yandex.Metrika counter -->
|
||||
<script type="text/javascript" >
|
||||
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
|
||||
m[i].l=1*new Date();
|
||||
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
|
||||
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
|
||||
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
|
||||
<script type='text/javascript'>
|
||||
(function(m, e, t, r, i, k, a) {
|
||||
m[i] = m[i] || function() {
|
||||
(m[i].a = m[i].a || []).push(arguments);
|
||||
};
|
||||
m[i].l = 1 * new Date();
|
||||
for (var j = 0; j < document.scripts.length; j++) {
|
||||
if (document.scripts[j].src === r) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
k = e.createElement(t), a = e.getElementsByTagName(t)[0], k.async = 1, k.src = r, a.parentNode.insertBefore(k, a);
|
||||
})
|
||||
(window, document, 'script', 'https://mc.yandex.ru/metrika/tag.js', 'ym');
|
||||
|
||||
ym(91185978, "init", {
|
||||
clickmap:true,
|
||||
trackLinks:true,
|
||||
accurateTrackBounce:true,
|
||||
webvisor:true
|
||||
});
|
||||
ym(91185978, 'init', {
|
||||
clickmap: true,
|
||||
trackLinks: true,
|
||||
accurateTrackBounce: true,
|
||||
webvisor: true,
|
||||
});
|
||||
</script>
|
||||
<noscript><div><img src="https://mc.yandex.ru/watch/91185978" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
|
||||
<noscript>
|
||||
<div><img src='https://mc.yandex.ru/watch/91185978' style='position:absolute; left:-9999px;' alt='' /></div>
|
||||
</noscript>
|
||||
<!-- /Yandex.Metrika counter -->
|
||||
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src='https://www.googletagmanager.com/gtag/js?id=G-2XLLXRJ1KF'></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
|
||||
function gtag() {
|
||||
dataLayer.push(arguments);
|
||||
}
|
||||
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-2XLLXRJ1KF');
|
||||
</script>
|
||||
<!-- /Google tag (gtag.js) -->
|
||||
|
||||
<!-- Main page cards -->
|
||||
<style>
|
||||
.pros-card {
|
||||
border: 1px solid #e9ecef;
|
||||
border-radius: 0.5rem;
|
||||
padding: 1.5rem;
|
||||
margin: 1rem;
|
||||
background-color: #fff;
|
||||
box-shadow: 0 0 1rem 0 rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.article-card {
|
||||
border: 1px solid #e9ecef;
|
||||
border-radius: 0.5rem;
|
||||
padding: 1.5rem;
|
||||
background-color: #fff;
|
||||
box-shadow: 0 0 1rem 0 #4aae2050;
|
||||
}
|
||||
|
||||
.hr {
|
||||
border-top: 1px solid #e9ecef;
|
||||
}
|
||||
|
||||
.pros-card-tier {
|
||||
border: 1px solid #e9ecef;
|
||||
border-radius: 0.5rem;
|
||||
padding: 1.5rem;
|
||||
margin: 1rem;
|
||||
min-width: 25rem;
|
||||
background-color: #fff;
|
||||
box-shadow: 0 0 1rem 0 rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
/* Using shadow */
|
||||
.pros-card--highlighted {
|
||||
background-color: #fff;
|
||||
box-shadow: 0 0 1.5rem 0 #4aae2050;
|
||||
}
|
||||
|
||||
.tier-pros > * {
|
||||
margin: 0.5rem 0;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.table-highlight-first-column td:nth-child(1) {
|
||||
font-weight: bold;
|
||||
}
|
||||
</style>
|
||||
<!-- /Main page cards -->
|
||||
@@ -0,0 +1,650 @@
|
||||
{{ define "main" }}
|
||||
<section class='section section-md pb-0'>
|
||||
<div class='container'>
|
||||
<div class='row justify-content-center'>
|
||||
<div class='col-11 col-lg-9 text-center'>
|
||||
<h1 class='display-5 fw-normal mt-1'>{{ .Summary }}</h1>
|
||||
</div>
|
||||
<div class='d-flex justify-content-center mb-4'>
|
||||
<img src='/images/logo.svg' title='WhatsApp HTTP API' alt='logo'
|
||||
style='border-radius: 50%; width: 10rem' />
|
||||
</div>
|
||||
<div class='col-11 col-lg-9' style='min-width: 25rem'>
|
||||
<p><strong>WAHA</strong> (<u>W</u>hats<u>A</u>pp <u>H</u>TTP <u>A</u>PI) is distributed in two versions:</p>
|
||||
<ol>
|
||||
<li>Core <img src='/images/versions/core.png' alt='Core version image'> the basic version that meets almost
|
||||
80%
|
||||
of people's needs. 100% free and open source.
|
||||
</li>
|
||||
<li>Plus <img src='/images/versions/plus.png' alt='Plus version image'> the version with advanced messages,
|
||||
security, and reliability features.
|
||||
</li>
|
||||
</ol>
|
||||
You support the project and get <b>WAHA Plus</b> by
|
||||
<a href='#tiers'>donating to the project</a> on
|
||||
<a href='#how-to-donate'>one of the platforms</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class='section section-md pb-0' id='tiers'>
|
||||
<div class='text-center'>
|
||||
<h1 class='display-5 fw-normal mt-1'>Tiers</h1>
|
||||
</div>
|
||||
<div class='row justify-content-center'>
|
||||
<div class='col-11 col-lg-9 text-center' style='min-width: 25rem'>
|
||||
<p>The more you support, the more you get!</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class='row justify-content-center text-center'>
|
||||
<!-- Core -->
|
||||
<div
|
||||
class='col-12 col-lg-4 pros-card-tier h-full d-flex flex-column justify-content-between'
|
||||
id='tier-core'
|
||||
>
|
||||
<div>
|
||||
|
||||
<h2 class='h4 color-accent mt-0 display-4'>Core</h2>
|
||||
<p class='fw-bold'>
|
||||
Essential product for 80% of people needs!
|
||||
</p>
|
||||
<div class='mb-4'>
|
||||
<span class='display-4 fw-bold'>$0</span>
|
||||
</div>
|
||||
|
||||
<div class='tier-pros'>
|
||||
<div>
|
||||
✔️ <a href='https://github.com/devlikeapro/whatsapp-http-api'><b>WAHA Core</b> Source
|
||||
Code</a>
|
||||
</div>
|
||||
<div>
|
||||
✔️ <a href='{{ relref . "/docs/how-to/send-messages" }}'>Send text messages</a>
|
||||
</div>
|
||||
<div>
|
||||
✔️ <a href='{{ relref . "/docs/how-to/receive-messages" }}'>Receive text messages</a>
|
||||
</div>
|
||||
<div>
|
||||
✔️ <a href='{{ relref . "/docs/how-to/webhooks" }}'>Webhooks</a>
|
||||
</div>
|
||||
<div>
|
||||
✔️ <a href='{{ relref . "/docs/how-to/swagger" }}'>Swagger and OpenAPI spec</a>
|
||||
</div>
|
||||
<div>
|
||||
✔️ <a href='{{ relref . "/docs/how-to/engines#webjs" }}'>Web based engine (WEBJS)</a>
|
||||
</div>
|
||||
<div>
|
||||
✔️ <a href='{{ relref . "/docs/how-to/engines#noweb" }}'>Light non-chrome engine (NOWEB)</a>
|
||||
</div>
|
||||
<div>
|
||||
✔️ <a href='{{ relref . "/docs/how-to/engines#features" }}'>and more!</a>
|
||||
</div>
|
||||
<div>
|
||||
<b>∞</b> Unlimited messages
|
||||
</div>
|
||||
<div>
|
||||
<b>1</b> <a href='{{ relref . "/docs/how-to/sessions"}}'>Session</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='mt-4 pt-2'>
|
||||
<a class='btn btn-outline-primary btn-lg px-4 mb-2'
|
||||
href='/docs/{{ if .Site.Params.options.docsVersioning }}{{ .Site.Params.docsVersion }}/{{ end }}overview/introduction/'
|
||||
role='button'>Get Started →</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- PLUS -->
|
||||
<div
|
||||
class='col-12 col-lg-4 pros-card-tier h-full d-flex flex-column justify-content-between'
|
||||
id='tier-plus'
|
||||
>
|
||||
<div>
|
||||
<h2 class='h4 color-accent mt-0 display-4'>Plus</h2>
|
||||
<p class='fw-bold'>
|
||||
Optimize your experience with extra features!
|
||||
</p>
|
||||
<div class='mb-4'>
|
||||
<span class='display-4 fw-bold'>$19</span>
|
||||
</div>
|
||||
|
||||
<div class='tier-pros'>
|
||||
<div>
|
||||
✔️ All <b>Core</b> features
|
||||
</div>
|
||||
<div>
|
||||
✔️ <a href='{{ relref . "/docs/how-to/plus-version" }}'>Personal Docker Key to <b>WAHA Plus</b></a>
|
||||
</div>
|
||||
<div>
|
||||
✔️ <a href='{{ relref . "/docs/how-to/send-messages" }}'>Send files, voices, video</a>
|
||||
</div>
|
||||
<div>
|
||||
✔️ <a href='{{ relref . "/docs/how-to/receive-messages" }}'>Receive files, voices, video</a>
|
||||
</div>
|
||||
<div>
|
||||
✔️ <a href='{{ relref . "/docs/how-to/security" }}'>Built-in Security</a>
|
||||
</div>
|
||||
<div>
|
||||
✔️ <a href='{{ relref . "/docs/how-to/webhooks" }}'>Webhooks retries</a>
|
||||
</div>
|
||||
<div>
|
||||
✔️ <a href='{{ relref . "/docs/how-to/storages" }}'>File storage</a>
|
||||
</div>
|
||||
<div>
|
||||
✔️ <a href='{{ relref . "/docs/how-to/storages" }}'>MongoDB storage</a>
|
||||
</div>
|
||||
<div>
|
||||
✔️ <a href='{{ relref . "/docs/how-to/waha-dashboard" }}'>Built-in Dashboard</a>
|
||||
</div>
|
||||
<div>
|
||||
✔️ Special badge on GitHub <img src='https://img.shields.io/badge/patron-PLUS-a0e6ba'>
|
||||
</div>
|
||||
<div>
|
||||
<b>∞</b> <a href='{{ relref . "/docs/how-to/sessions"}}'>Unlimited Sessions</a>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='mt-4 pt-2'>
|
||||
<div class='mb-4'>
|
||||
<hr>
|
||||
<p class='text-center'>
|
||||
<b><span class='fs-4'>⚡50% OFF</span> Yearly Crypto Offer!⚡</b>
|
||||
</p>
|
||||
<p>
|
||||
Save the fees and get <b>Plus</b> for a year donating in <a href='#crypto'>Crypto</a>!
|
||||
</p>
|
||||
<div class='text-center'>
|
||||
<span class='fs-3 fw-light text-secondary'><del>$228</del></span>
|
||||
<span class='fs-3 fw-bold text-primary'>
|
||||
<a href='#crypto'>$110</a>
|
||||
</span>
|
||||
</div>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<a class='btn btn-primary btn-lg px-4 mb-2'
|
||||
href='#donations'
|
||||
role='button'>Support project →</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- PRO -->
|
||||
<div
|
||||
class='col-12 col-lg-4 pros-card-tier pros-card--highlighted h-full d-flex flex-column justify-content-between'
|
||||
id='tier-pro'
|
||||
>
|
||||
<div>
|
||||
<h2 class='h4 color-accent mt-0 display-4'>PRO</h2>
|
||||
<p class='fw-bold'>
|
||||
Get the most out of WAHA, with all the features!
|
||||
</p>
|
||||
<div class='mb-4'>
|
||||
<span class='display-4 fw-bold'>$99</span>
|
||||
</div>
|
||||
|
||||
<div class='tier-pros'>
|
||||
<div>
|
||||
✔️ All <b>Plus</b> features
|
||||
</div>
|
||||
<div>
|
||||
✔️ <a href='https://github.com/devlikeapro/whatsapp-http-api-plus'><b>WAHA Plus</b> Source
|
||||
Code</a>
|
||||
</div>
|
||||
<div>
|
||||
✔️ Special badge on GitHub <img src='https://img.shields.io/badge/patron-PRO-188a42'>
|
||||
</div>
|
||||
<div>
|
||||
✔️ Membership in <b>WAHA PRO</b> Discord server for receiving personal support, and sharing your experiences
|
||||
with other professionals.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='mt-4 pt-2'>
|
||||
<div class='mb-4'>
|
||||
<hr>
|
||||
<p class='text-center'>
|
||||
<b><span class='fs-4'>⚡50% OFF</span> Yearly Crypto Offer!⚡</b>
|
||||
</p>
|
||||
<p>
|
||||
Save the fees and get <b>PRO</b> for a year donating in <a href='#crypto'>Crypto</a>!
|
||||
</p>
|
||||
<div class='text-center'>
|
||||
<span class='fs-3 fw-light text-secondary'><del>$1,118</del></span>
|
||||
<span class='fs-3 fw-bold text-primary'>
|
||||
<a href='#crypto'>$590</a>
|
||||
</span>
|
||||
</div>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<a class='btn btn-primary btn-lg px-4 mb-2'
|
||||
href='#donations'
|
||||
role='button'>Support project →</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class='section section-md pb-0' id='tiers-compare'>
|
||||
<div class='text-center'>
|
||||
<h1 class='display-5 fw-normal mt-1'>Compare Features</h1>
|
||||
</div>
|
||||
<div class='row justify-content-center'>
|
||||
<table class='table-highlight-first-column'>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>
|
||||
Core
|
||||
</th>
|
||||
<th>Plus</th>
|
||||
<th>PRO</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href='{{ relref . "/docs/how-to/sessions"}}'>Sessions</a>
|
||||
</td>
|
||||
<td>1</td>
|
||||
<td>∞</td>
|
||||
<td>∞</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Messages
|
||||
</td>
|
||||
<td>∞</td>
|
||||
<td>∞</td>
|
||||
<td>∞</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href='{{ relref . "/docs/how-to/send-messages" }}'> Send text messages </a>
|
||||
</td>
|
||||
<td>✔️</td>
|
||||
<td>✔️</td>
|
||||
<td>✔️</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href='{{ relref . "/docs/how-to/receive-messages" }}'> Receive text messages </a>
|
||||
</td>
|
||||
<td>✔️</td>
|
||||
<td>✔️</td>
|
||||
<td>✔️</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href='{{ relref . "/docs/how-to/send-messages" }}'> Send files, voices, video </a>
|
||||
</td>
|
||||
<td>➖</td>
|
||||
<td>✔️</td>
|
||||
<td>✔️</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href='{{ relref . "/docs/how-to/receive-messages" }}'> Receive files, voices, video</a>
|
||||
</td>
|
||||
<td>➖</td>
|
||||
<td>✔️</td>
|
||||
<td>✔️</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href='{{ relref . "/docs/how-to/storages" }}'>Webhooks</a>
|
||||
</td>
|
||||
<td>✔️</td>
|
||||
<td>✔️</td>
|
||||
<td>✔️</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href='{{ relref . "/docs/how-to/webhooks" }}'>Webhooks retries</a>
|
||||
</td>
|
||||
<td>➖</td>
|
||||
<td>✔️</td>
|
||||
<td>✔️</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href='{{ relref . "/docs/how-to/storages" }}'>File storage</a>
|
||||
</td>
|
||||
<td>➖</td>
|
||||
<td>✔️</td>
|
||||
<td>✔️</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href='{{ relref . "/docs/how-to/storages" }}'>MongoDB storage</a>
|
||||
</td>
|
||||
<td>➖</td>
|
||||
<td>✔️</td>
|
||||
<td>✔️</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href='{{ relref . "/docs/how-to/waha-dashboard" }}'>Built-in Dashboard</a>
|
||||
</td>
|
||||
<td>➖</td>
|
||||
<td>✔️</td>
|
||||
<td>✔️</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href='{{ relref . "/docs/how-to/security" }}'>Built-in Security</a>
|
||||
</td>
|
||||
<td>➖</td>
|
||||
<td>✔️</td>
|
||||
<td>✔️</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href='{{ relref . "/docs/how-to/engines#webjs" }}'>Web based engine (WEBJS)</a>
|
||||
</td>
|
||||
<td>✔️</td>
|
||||
<td>✔️</td>
|
||||
<td>✔️</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href='{{ relref . "/docs/how-to/engines#noweb" }}'>Light non-chrome engine (NOWEB)</a>
|
||||
</td>
|
||||
<td>✔️</td>
|
||||
<td>✔️</td>
|
||||
<td>✔️</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href='{{ relref . "/docs/how-to/plus-version" }}'>Personal Docker Key to <b>WAHA Plus</b></a>
|
||||
</td>
|
||||
<td>➖</td>
|
||||
<td>✔️</td>
|
||||
<td>✔️</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href='https://github.com/devlikeapro/whatsapp-http-api' target='_blank'>WAHA Core Source Code -></a>
|
||||
</td>
|
||||
<td>✔️</td>
|
||||
<td>✔️</td>
|
||||
<td>✔️</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a href='https://github.com/devlikeapro/whatsapp-http-api-plus' target='_blank'>WAHA Plus Source Code -></a>
|
||||
</td>
|
||||
<td>➖</td>
|
||||
<td>➖</td>
|
||||
<td>✔️</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Membership in <b>WAHA PRO</b> Discord server
|
||||
</td>
|
||||
<td>➖</td>
|
||||
<td>➖</td>
|
||||
<td>✔️</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Special Badge on GitHub
|
||||
</td>
|
||||
<td>➖</td>
|
||||
<td>
|
||||
<img src='https://img.shields.io/badge/patron-PLUS-a0e6ba'>
|
||||
</td>
|
||||
<td>
|
||||
<img src='https://img.shields.io/badge/patron-PRO-188a42'>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>
|
||||
<a
|
||||
href='/docs/{{ if .Site.Params.options.docsVersioning }}{{ .Site.Params.docsVersion }}/{{ end }}overview/introduction/'
|
||||
>Get Started -></a>
|
||||
</th>
|
||||
<th>
|
||||
<a href='#donations'>Support project -></a>
|
||||
</th>
|
||||
<th>
|
||||
<a href='#donations'>Support project -></a>
|
||||
</th>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class='section section-md pb-0' id='why-waha'>
|
||||
<div class='text-center'>
|
||||
<h1 class='display-5 fw-normal mt-1'>Why WAHA?</h1>
|
||||
</div>
|
||||
<div class='row justify-content-center'>
|
||||
<table class='table-highlight-first-column'>
|
||||
<tr>
|
||||
<th>Features</th>
|
||||
<th>
|
||||
<img src='/images/logo-robot.svg' title='WhatsApp HTTP API' alt='logo'
|
||||
style='height: 2rem; transform: translateY(-0.3rem)' />
|
||||
WAHA Plus
|
||||
</th>
|
||||
<th>🤔 Others</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Number of accounts</td>
|
||||
<td>✔️ No limits on <b>accounts</b> or <b>servers</b>!</td>
|
||||
<td> ➖ One account for $50/month.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Infrastructure</td>
|
||||
<td>✔️ On-Premise - your server, your infrastructure!</td>
|
||||
<td> ➖ Insecure cloud solution.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Security</td>
|
||||
<td>✔️ No data leaks!</td>
|
||||
<td>➖ You have to give access to customers' data - phone number, name, your messages.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>License</td>
|
||||
<td> ✔️ No license checks! It works even after you got unsubscribed
|
||||
<br />
|
||||
<span class='text-muted fs-6'>
|
||||
(as long as WhatsApp doesn't make backward incompatible changes, or you need to reinstall it on new server).
|
||||
</span>
|
||||
</td>
|
||||
<td> ➖ One month</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Messages</td>
|
||||
<td>✔️ No message limits!</td>
|
||||
<td>➖ Some solutions have a price for messages, like $1 every 1,000 messages.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Source Code</td>
|
||||
<td>✔️ Available for <a href='#tier-pro'>PRO</a> patrons!</td>
|
||||
<td>➖ No access to verify the code or adjust it for your needs.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Price</td>
|
||||
<td>✔️ <b>19$</b></td>
|
||||
<td>➖ Monthly payment starts from $50</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class='section section-md pb-0' id='donations'>
|
||||
<div class='text-center'>
|
||||
<h1 class='display-5 fw-normal mt-1'>Donations</h1>
|
||||
</div>
|
||||
<div class='row justify-content-center'>
|
||||
<div class='col-11 col-lg-9' style='min-width: 25rem'>
|
||||
<p>WAHA Plus version is available through <strong>donations</strong> (subscriptions).</p>
|
||||
|
||||
<p><strong>It doesn't require monthly subscriptions, once installed on your server - it always works!</strong>
|
||||
(until WhatsApp made backward-incompatible changes, and you have to update the image,
|
||||
or you need to reinstall it on new server
|
||||
)</p>
|
||||
|
||||
<div class='alert' style='display: flex; align-items: center;'>
|
||||
<span style='margin-right: 10px;'>💡</span>
|
||||
<span>No licence checks or expiration on already installed instances!</span>
|
||||
</div>
|
||||
<p>We do not sell <strong>WAHA</strong>, it's not a purchase. It's a donation.</p>
|
||||
|
||||
<p>We treat our projects like art. You donate to the project and get a bit more from it as a thank-you. 😊</p>
|
||||
|
||||
<p>Treat <strong>WAHA Plus</strong> it as an additional episode, behind-the-scenes videos, our nude photos 😊</p>
|
||||
|
||||
<div class='alert' style='display: flex; align-items: center;'>
|
||||
<span style='margin-right: 10px;'>💡</span>
|
||||
<span>WAHA does not have license checks and expiration - because art can not expire! Enjoy it till it works!</span>
|
||||
</div>
|
||||
|
||||
<p>We donate most of the donations down to the stream to the underlying libraries and tools - JS-community, Node,
|
||||
other libraries authors, personal contributors.<br>
|
||||
By donating to the <strong>WAHA</strong> you donate to the Open Source world!</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class='section section-md pb-0' id='how-to-donate'>
|
||||
<div class='text-center'>
|
||||
<h2 class='display-5 fw-normal mt-1'>How to donate?</h2>
|
||||
</div>
|
||||
<div class='row justify-content-center'>
|
||||
<div class='col-11 col-lg-9 text-center' style='min-width: 25rem'>
|
||||
<p>Choose the platform that suits you best to support the project.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='row justify-content-center mt-4'>
|
||||
<!-- Crypto -->
|
||||
<div
|
||||
class='col-12 col-lg-4 pros-card pros-card--highlighted h-full d-flex flex-column justify-content-between'
|
||||
id='crypto'
|
||||
>
|
||||
<div>
|
||||
<div class='text-center mb-4'>
|
||||
<img
|
||||
src='/logos/tether-usdt-logo.svg' alt='Tether' style='height: 5rem'
|
||||
/>
|
||||
</div>
|
||||
<p>
|
||||
<b>Cryptocurrency</b> - support the project with crypto!
|
||||
<br />
|
||||
</p>
|
||||
<div>
|
||||
<p>
|
||||
If you wish to donate in crypto (any currencies, any network) - please contact us at <a
|
||||
href='mailto:crypto@devlike.pro'>crypto@devlike.pro</a>.
|
||||
</p>
|
||||
|
||||
<blockquote>
|
||||
<p>e.g. "I want to donate as PRO patron in crypto."</p>
|
||||
</blockquote>
|
||||
|
||||
<hr>
|
||||
<p class='text-center mx-0'>
|
||||
<b>⚡50% OFF Yearly Offer!⚡</b>
|
||||
</p>
|
||||
<ul style='margin-left: 0'>
|
||||
<li><b>Plus</b> -
|
||||
<del>$228</del>
|
||||
<b>$110</b></li>
|
||||
<li><b>PRO</b> -
|
||||
<del>$1,188</del>
|
||||
<b>$590</b></li>
|
||||
</ul>
|
||||
<p>
|
||||
Save the fees and get <b>Plus</b> or <b>PRO</b> for a year donating in crypto!
|
||||
Mention the Yearly offer in the email if you want to get it.
|
||||
</p>
|
||||
<hr>
|
||||
</div>
|
||||
</div>
|
||||
<div class='text-center pt-4'>
|
||||
<a
|
||||
class='btn btn-outline-info btn-lg'
|
||||
href='mailto:crypto@devlike.pro?subject=I%20want%20to%20donate%20as%20PRO%20patron.'
|
||||
target='_blank'
|
||||
role='button'>
|
||||
Support with Crypto →
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Boosty -->
|
||||
<div
|
||||
class='col-12 col-lg-4 pros-card h-full d-flex flex-column justify-content-between'
|
||||
>
|
||||
<div>
|
||||
<div class='text-center mb-4'>
|
||||
<img src='/logos/boosty.svg' alt='Boosty' style='height: 5rem' />
|
||||
</div>
|
||||
<p>
|
||||
<b>Boosty</b> - Patreon-like service for donations with fewer fees.
|
||||
<br />
|
||||
</p>
|
||||
<div>
|
||||
Go ahead and get your own WhatsApp HTTP API!
|
||||
</div>
|
||||
</div>
|
||||
<div class='text-center pt-4'>
|
||||
<a
|
||||
class='btn btn-outline-dark btn-lg'
|
||||
href='https://boosty.to/wa-http-api'
|
||||
target='_blank'
|
||||
role='button'>Support on Boosty →</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Patreon -->
|
||||
<div
|
||||
class='col-12 col-lg-4 pros-card h-full d-flex flex-column justify-content-between'
|
||||
>
|
||||
<div>
|
||||
<div class='text-center mb-4'>
|
||||
<img src='/logos/patreon.png' alt='Patreon' style='height: 5rem' />
|
||||
</div>
|
||||
<p>
|
||||
<b>Patreon</b> - well-known service for donations.
|
||||
<br />
|
||||
</p>
|
||||
<div>
|
||||
Please consider using <b>Boosty</b> or <b>Crypto</b> instead of Patreon due to its lower fees 🙏
|
||||
</div>
|
||||
</div>
|
||||
<div class='text-center pt-4'>
|
||||
<a
|
||||
class='btn btn-outline-danger btn-lg'
|
||||
href='https://www.patreon.com/wa_http_api'
|
||||
target='_blank'
|
||||
role='button'>Support on Patreon →</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class='section section-md' id='what-next'>
|
||||
<div class='text-center'>
|
||||
<h2 class='display-5 fw-normal mt-1'>
|
||||
What's next?
|
||||
</h2>
|
||||
</div>
|
||||
|
||||
<div class='row justify-content-center text-center'>
|
||||
<div class='col-11 col-lg-9' style='min-width: 25rem'>
|
||||
Read more about
|
||||
<a href='{{ relref . "/docs/how-to/plus-version" }}'>
|
||||
how to get WAHA Plus using Patron Portal ->
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{{ end }}
|
||||
|
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1,289 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Dashboard | WAHA</title>
|
||||
<link rel="icon" href="./favicon.ico" />
|
||||
<style>
|
||||
:root {
|
||||
--surface-card: #1f2937;
|
||||
--surface-border: #374151;
|
||||
--card-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
|
||||
body,
|
||||
html {
|
||||
height: 100%;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.bg-image {
|
||||
/* The image used */
|
||||
background-image: url('./waha-dashboard.png');
|
||||
|
||||
/* Add the blur effect */
|
||||
filter: blur(2px);
|
||||
-webkit-filter: blur(2px);
|
||||
|
||||
/* Full height */
|
||||
height: 100%;
|
||||
|
||||
/* Center and scale the image nicely */
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: #111827;
|
||||
color: rgba(255, 255, 255, 0.87);
|
||||
}
|
||||
|
||||
svg {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
.message {
|
||||
font-size: 20px;
|
||||
margin: 20px;
|
||||
}
|
||||
|
||||
a {
|
||||
color: rgb(158, 158, 255);
|
||||
text-decoration-color: rgb(158, 158, 255);
|
||||
}
|
||||
|
||||
.upgrade-link {
|
||||
text-decoration: none;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
.link-button {
|
||||
background-color: #4ade80;
|
||||
padding: 10px 20px;
|
||||
border-radius: 5px;
|
||||
color: #052e16;
|
||||
text-decoration: none;
|
||||
margin-top: 50px;
|
||||
}
|
||||
|
||||
.card {
|
||||
min-width: 25rem;
|
||||
background: var(--surface-card);
|
||||
border: 1px solid var(--surface-border);
|
||||
box-shadow: var(--card-shadow);
|
||||
padding: 2rem;
|
||||
border-radius: 12px;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
z-index: 2;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="bg-image"></div>
|
||||
<div class="card">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
version="1.1"
|
||||
width="1080"
|
||||
height="1080"
|
||||
viewBox="0 0 1080 1080"
|
||||
xml:space="preserve"
|
||||
>
|
||||
<desc>Created with Fabric.js 5.2.4</desc>
|
||||
<defs></defs>
|
||||
<g
|
||||
transform="matrix(1 0 0 1 540 540)"
|
||||
id="c3cb5d1b-8350-492a-8567-8c1ee2307b9a"
|
||||
></g>
|
||||
<g
|
||||
transform="matrix(1 0 0 1 540 540)"
|
||||
id="054ae9ae-db12-4435-8648-8bfb02267690"
|
||||
>
|
||||
<rect
|
||||
style="
|
||||
stroke: none;
|
||||
stroke-width: 1;
|
||||
stroke-dasharray: none;
|
||||
stroke-linecap: butt;
|
||||
stroke-dashoffset: 0;
|
||||
stroke-linejoin: miter;
|
||||
stroke-miterlimit: 4;
|
||||
fill: rgb(255, 255, 255);
|
||||
fill-rule: nonzero;
|
||||
opacity: 1;
|
||||
visibility: hidden;
|
||||
"
|
||||
vector-effect="non-scaling-stroke"
|
||||
x="-540"
|
||||
y="-540"
|
||||
rx="0"
|
||||
ry="0"
|
||||
width="1080"
|
||||
height="1080"
|
||||
/>
|
||||
</g>
|
||||
<g transform="matrix(1 0 0 1 540 540)">
|
||||
<rect
|
||||
style="
|
||||
stroke: none;
|
||||
stroke-width: 1;
|
||||
stroke-dasharray: none;
|
||||
stroke-linecap: butt;
|
||||
stroke-dashoffset: 0;
|
||||
stroke-linejoin: miter;
|
||||
stroke-miterlimit: 4;
|
||||
fill: rgb(255, 255, 255);
|
||||
fill-rule: nonzero;
|
||||
opacity: 1;
|
||||
visibility: hidden;
|
||||
"
|
||||
vector-effect="non-scaling-stroke"
|
||||
x="-540"
|
||||
y="-540"
|
||||
rx="0"
|
||||
ry="0"
|
||||
width="1080"
|
||||
height="1080"
|
||||
/>
|
||||
</g>
|
||||
<g transform="matrix(2.02 0 0 2.02 540 540)">
|
||||
<rect
|
||||
style="
|
||||
stroke: none;
|
||||
stroke-width: 1;
|
||||
stroke-dasharray: none;
|
||||
stroke-linecap: butt;
|
||||
stroke-dashoffset: 0;
|
||||
stroke-linejoin: miter;
|
||||
stroke-miterlimit: 4;
|
||||
fill: rgb(255, 255, 255);
|
||||
fill-rule: nonzero;
|
||||
opacity: 1;
|
||||
visibility: hidden;
|
||||
"
|
||||
vector-effect="non-scaling-stroke"
|
||||
x="-540"
|
||||
y="-540"
|
||||
rx="0"
|
||||
ry="0"
|
||||
width="1080"
|
||||
height="1080"
|
||||
/>
|
||||
</g>
|
||||
<g transform="matrix(3.68 0 0 3.68 540.38 540.48)">
|
||||
<path
|
||||
style="
|
||||
stroke: none;
|
||||
stroke-width: 1;
|
||||
stroke-dasharray: none;
|
||||
stroke-linecap: butt;
|
||||
stroke-dashoffset: 0;
|
||||
stroke-linejoin: miter;
|
||||
stroke-miterlimit: 4;
|
||||
fill: rgb(74, 173, 32);
|
||||
fill-rule: nonzero;
|
||||
opacity: 1;
|
||||
"
|
||||
vector-effect="non-scaling-stroke"
|
||||
transform=" translate(-392.21, -570.16)"
|
||||
d="M 392.26 705.96 C 376.77 705.96 361.28999999999996 706.0400000000001 345.8 705.95 C 318.16 705.7900000000001 297.6 685.2700000000001 297.22 657.57 C 297.15000000000003 652.24 297.07000000000005 646.9100000000001 297.25 641.59 C 297.36 638.23 296.3 636.6 292.72 636.89 C 290.24 637.09 287.73 636.98 285.23 636.9 C 277.1 636.63 271.70000000000005 631.65 271.38 623.49 C 271.06 615.1800000000001 271.06 606.83 271.37 598.52 C 271.69 590.05 277.04 585.23 285.58 585.01 C 297.21 584.72 297.19 584.72 297.21999999999997 573.01 C 297.22999999999996 567.36 297.14 561.72 297.97999999999996 556.0699999999999 C 301.25999999999993 533.93 320.72999999999996 516.4599999999999 343.09 516.04 C 355.07 515.81 367.07 515.86 379.04999999999995 516.02 C 382.72999999999996 516.0699999999999 384.02 514.87 383.96 511.15 C 383.77 500.65999999999997 383.76 490.16999999999996 383.96999999999997 479.67999999999995 C 384.04999999999995 476.00999999999993 382.96 473.65999999999997 379.92999999999995 471.37999999999994 C 372.23999999999995 465.5799999999999 369.78 456.25999999999993 373.06999999999994 447.7199999999999 C 376.18999999999994 439.5999999999999 385.13999999999993 433.7399999999999 393.4599999999999 434.3599999999999 C 402.63999999999993 435.0399999999999 410.43999999999994 441.3499999999999 412.4599999999999 450.2199999999999 C 414.4799999999999 459.0299999999999 411.7099999999999 466.4299999999999 404.4699999999999 471.7899999999999 C 401.8699999999999 473.7199999999999 400.9199999999999 475.69999999999993 400.9699999999999 478.8299999999999 C 401.1199999999999 489.1499999999999 401.2499999999999 499.4799999999999 400.9299999999999 509.79999999999995 C 400.7899999999999 514.5 402.0299999999999 516.24 406.9999999999999 516.0799999999999 C 417.8099999999999 515.7299999999999 428.6399999999999 515.91 439.4699999999999 515.9899999999999 C 466.5199999999999 516.2099999999999 486.7199999999999 536.2299999999999 487.2399999999999 563.3 C 487.3399999999999 568.29 487.2599999999999 573.29 487.2799999999999 578.29 C 487.2999999999999 585 487.3099999999999 585 493.7899999999999 585.02 C 495.94999999999993 585.03 498.1199999999999 584.96 500.2799999999999 585.06 C 507.94999999999993 585.43 512.9999999999999 590.42 513.1499999999999 598.1199999999999 C 513.3199999999998 606.6099999999999 513.3099999999998 615.1099999999999 513.1599999999999 623.5999999999999 C 513.0299999999999 631.3599999999999 508.1999999999999 636.31 500.47999999999985 636.8699999999999 C 498.15999999999985 637.0399999999998 495.77999999999986 637.2199999999999 493.49999999999983 636.8899999999999 C 488.1999999999998 636.1299999999999 486.86999999999983 638.5399999999998 487.1999999999998 643.3999999999999 C 487.54999999999984 648.5399999999998 487.3499999999998 653.7199999999999 487.23999999999984 658.8799999999999 C 486.67999999999984 685.6599999999999 466.4599999999998 705.7399999999999 439.71999999999986 705.9599999999999 C 423.9 706.06 408.08 705.95 392.26 705.96 z"
|
||||
stroke-linecap="round"
|
||||
/>
|
||||
</g>
|
||||
<g transform="matrix(-3.68 0 0 -3.68 546.38 845.01)">
|
||||
<path
|
||||
style="
|
||||
stroke: none;
|
||||
stroke-width: 1;
|
||||
stroke-dasharray: none;
|
||||
stroke-linecap: butt;
|
||||
stroke-dashoffset: 0;
|
||||
stroke-linejoin: miter;
|
||||
stroke-miterlimit: 4;
|
||||
fill: rgb(56, 134, 22);
|
||||
fill-rule: nonzero;
|
||||
opacity: 1;
|
||||
"
|
||||
vector-effect="non-scaling-stroke"
|
||||
transform=" translate(-394.07, -654.42)"
|
||||
d="M 394.26 632.93 C 404.75 632.93 415.23 632.9 425.71999999999997 632.9399999999999 C 431.92999999999995 632.9599999999999 433.52 634.7399999999999 432.90999999999997 640.7099999999999 C 430.99999999999994 659.66 414.40999999999997 675.2199999999999 395.38 675.91 C 376.87 676.5799999999999 359.57 662.65 356 644.1899999999999 C 355.72 642.7199999999999 355.33 641.26 355.19 639.78 C 354.71 634.9 356.32 633.01 361.3 632.97 C 372.29 632.87 383.28 632.93 394.26 632.93 z"
|
||||
stroke-linecap="round"
|
||||
/>
|
||||
</g>
|
||||
<g transform="matrix(3.68 0 0 3.68 673.99 594.08)">
|
||||
<path
|
||||
style="
|
||||
stroke: none;
|
||||
stroke-width: 1;
|
||||
stroke-dasharray: none;
|
||||
stroke-linecap: butt;
|
||||
stroke-dashoffset: 0;
|
||||
stroke-linejoin: miter;
|
||||
stroke-miterlimit: 4;
|
||||
fill: rgb(56, 135, 22);
|
||||
fill-rule: nonzero;
|
||||
opacity: 1;
|
||||
"
|
||||
vector-effect="non-scaling-stroke"
|
||||
transform=" translate(-428.75, -584.99)"
|
||||
d="M 428.83 602 C 419.12 601.96 411.59999999999997 594.6 411.53 585.07 C 411.46999999999997 575.4100000000001 419.21 567.9100000000001 429.16999999999996 567.98 C 438.33 568.0500000000001 445.93999999999994 575.71 445.97999999999996 584.91 C 446.02 594.33 438.29 602.04 428.83 602 z"
|
||||
stroke-linecap="round"
|
||||
/>
|
||||
</g>
|
||||
<g transform="matrix(3.68 0 0 3.68 406.92 594.18)">
|
||||
<path
|
||||
style="
|
||||
stroke: none;
|
||||
stroke-width: 1;
|
||||
stroke-dasharray: none;
|
||||
stroke-linecap: butt;
|
||||
stroke-dashoffset: 0;
|
||||
stroke-linejoin: miter;
|
||||
stroke-miterlimit: 4;
|
||||
fill: rgb(56, 135, 22);
|
||||
fill-rule: nonzero;
|
||||
opacity: 1;
|
||||
"
|
||||
vector-effect="non-scaling-stroke"
|
||||
transform=" translate(-356.06, -584.99)"
|
||||
d="M 339.05 584.57 C 339.19 574.94 346.67 567.84 356.53000000000003 567.99 C 366.26000000000005 568.14 373.21000000000004 575.46 373.07000000000005 585.42 C 372.94000000000005 595.16 365.62000000000006 602.13 355.68000000000006 602 C 346.04 601.87 338.91 594.4 339.05 584.57 z"
|
||||
stroke-linecap="round"
|
||||
/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
<div class="message">
|
||||
Sorry,
|
||||
<a
|
||||
href="https://waha.devlike.pro/docs/how-to/waha-dashboard"
|
||||
target="_blank"
|
||||
>Dashboard</a
|
||||
>
|
||||
is not available in <strong>WAHA Core</strong> version.
|
||||
<br />
|
||||
Please consider upgrading to <strong>WAHA Plus</strong>.
|
||||
</div>
|
||||
<div style="margin-top: 2rem; margin-bottom: 1rem">
|
||||
<a
|
||||
class="upgrade-link link-button"
|
||||
href="https://waha.devlike.pro/docs/how-to/plus-version/"
|
||||
target="_blank"
|
||||
>Upgrade to WAHA Plus</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
After Width: | Height: | Size: 74 KiB |
|
Before Width: | Height: | Size: 646 B After Width: | Height: | Size: 807 B |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 21 KiB |
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M15 19L17 21L21 17M13 3H8.2C7.0799 3 6.51984 3 6.09202 3.21799C5.71569 3.40973 5.40973 3.71569 5.21799 4.09202C5 4.51984 5 5.0799 5 6.2V17.8C5 18.9201 5 19.4802 5.21799 19.908C5.40973 20.2843 5.71569 20.5903 6.09202 20.782C6.51984 21 7.0799 21 8.2 21H11.5M13 3L19 9M13 3V7.4C13 7.96005 13 8.24008 13.109 8.45399C13.2049 8.64215 13.3578 8.79513 13.546 8.89101C13.7599 9 14.0399 9 14.6 9H19M19 9V13.4M9 17H11.5M9 13H15M9 9H10" stroke="#388716" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 747 B |
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
|
||||
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M15 19L17 21L21 17M13 3H8.2C7.0799 3 6.51984 3 6.09202 3.21799C5.71569 3.40973 5.40973 3.71569 5.21799 4.09202C5 4.51984 5 5.0799 5 6.2V17.8C5 18.9201 5 19.4802 5.21799 19.908C5.40973 20.2843 5.71569 20.5903 6.09202 20.782C6.51984 21 7.0799 21 8.2 21H11.5M13 3L19 9M13 3V7.4C13 7.96005 13 8.24008 13.109 8.45399C13.2049 8.64215 13.3578 8.79513 13.546 8.89101C13.7599 9 14.0399 9 14.6 9H19M19 9V13.4M9 17H11.5M9 13H15M9 9H10" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 744 B |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 61 KiB |
|
After Width: | Height: | Size: 84 KiB |
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1080" height="1080" viewBox="0 0 1080 1080" xml:space="preserve">
|
||||
<desc>Created with Fabric.js 5.2.4</desc>
|
||||
<defs>
|
||||
</defs>
|
||||
<g transform="matrix(1 0 0 1 540 540)" id="94fb7419-c823-4df4-843f-bbcfe644afa4" >
|
||||
</g>
|
||||
<g transform="matrix(1 0 0 1 540 540)" id="a7bb2e9d-f416-4045-ad8c-f43c3c44b881" >
|
||||
<rect style="stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(255,255,255); fill-rule: nonzero; opacity: 1; visibility: hidden;" vector-effect="non-scaling-stroke" x="-540" y="-540" rx="0" ry="0" width="1080" height="1080" />
|
||||
</g>
|
||||
<g transform="matrix(2.02 0 0 2.02 540 540)" >
|
||||
<g style="" vector-effect="non-scaling-stroke" >
|
||||
<g transform="matrix(1 0 0 1 0 0)" >
|
||||
<rect style="stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(255,255,255); fill-rule: nonzero; opacity: 1; visibility: hidden;" vector-effect="non-scaling-stroke" x="-540" y="-540" rx="0" ry="0" width="1080" height="1080" />
|
||||
</g>
|
||||
<g transform="matrix(1.82 0 0 1.82 -0.02 0)" >
|
||||
<path style="stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(74,173,32); fill-rule: nonzero; opacity: 1;" vector-effect="non-scaling-stroke" transform=" translate(-392.21, -570.16)" d="M 392.26 705.96 C 376.77 705.96 361.28999999999996 706.0400000000001 345.8 705.95 C 318.16 705.7900000000001 297.6 685.2700000000001 297.22 657.57 C 297.15000000000003 652.24 297.07000000000005 646.9100000000001 297.25 641.59 C 297.36 638.23 296.3 636.6 292.72 636.89 C 290.24 637.09 287.73 636.98 285.23 636.9 C 277.1 636.63 271.70000000000005 631.65 271.38 623.49 C 271.06 615.1800000000001 271.06 606.83 271.37 598.52 C 271.69 590.05 277.04 585.23 285.58 585.01 C 297.21 584.72 297.19 584.72 297.21999999999997 573.01 C 297.22999999999996 567.36 297.14 561.72 297.97999999999996 556.0699999999999 C 301.25999999999993 533.93 320.72999999999996 516.4599999999999 343.09 516.04 C 355.07 515.81 367.07 515.86 379.04999999999995 516.02 C 382.72999999999996 516.0699999999999 384.02 514.87 383.96 511.15 C 383.77 500.65999999999997 383.76 490.16999999999996 383.96999999999997 479.67999999999995 C 384.04999999999995 476.00999999999993 382.96 473.65999999999997 379.92999999999995 471.37999999999994 C 372.23999999999995 465.5799999999999 369.78 456.25999999999993 373.06999999999994 447.7199999999999 C 376.18999999999994 439.5999999999999 385.13999999999993 433.7399999999999 393.4599999999999 434.3599999999999 C 402.63999999999993 435.0399999999999 410.43999999999994 441.3499999999999 412.4599999999999 450.2199999999999 C 414.4799999999999 459.0299999999999 411.7099999999999 466.4299999999999 404.4699999999999 471.7899999999999 C 401.8699999999999 473.7199999999999 400.9199999999999 475.69999999999993 400.9699999999999 478.8299999999999 C 401.1199999999999 489.1499999999999 401.2499999999999 499.4799999999999 400.9299999999999 509.79999999999995 C 400.7899999999999 514.5 402.0299999999999 516.24 406.9999999999999 516.0799999999999 C 417.8099999999999 515.7299999999999 428.6399999999999 515.91 439.4699999999999 515.9899999999999 C 466.5199999999999 516.2099999999999 486.7199999999999 536.2299999999999 487.2399999999999 563.3 C 487.3399999999999 568.29 487.2599999999999 573.29 487.2799999999999 578.29 C 487.2999999999999 585 487.3099999999999 585 493.7899999999999 585.02 C 495.94999999999993 585.03 498.1199999999999 584.96 500.2799999999999 585.06 C 507.94999999999993 585.43 512.9999999999999 590.42 513.1499999999999 598.1199999999999 C 513.3199999999998 606.6099999999999 513.3099999999998 615.1099999999999 513.1599999999999 623.5999999999999 C 513.0299999999999 631.3599999999999 508.1999999999999 636.31 500.47999999999985 636.8699999999999 C 498.15999999999985 637.0399999999998 495.77999999999986 637.2199999999999 493.49999999999983 636.8899999999999 C 488.1999999999998 636.1299999999999 486.86999999999983 638.5399999999998 487.1999999999998 643.3999999999999 C 487.54999999999984 648.5399999999998 487.3499999999998 653.7199999999999 487.23999999999984 658.8799999999999 C 486.67999999999984 685.6599999999999 466.4599999999998 705.7399999999999 439.71999999999986 705.9599999999999 C 423.9 706.06 408.08 705.95 392.26 705.96 z" stroke-linecap="round" />
|
||||
</g>
|
||||
<g transform="matrix(1.82 0 0 1.82 3.23 153.01)" >
|
||||
<path style="stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(56,134,22); fill-rule: nonzero; opacity: 1;" vector-effect="non-scaling-stroke" transform=" translate(-394.07, -654.42)" d="M 394.26 632.93 C 404.75 632.93 415.23 632.9 425.71999999999997 632.9399999999999 C 431.92999999999995 632.9599999999999 433.52 634.7399999999999 432.90999999999997 640.7099999999999 C 430.99999999999994 659.66 414.40999999999997 675.2199999999999 395.38 675.91 C 376.87 676.5799999999999 359.57 662.65 356 644.1899999999999 C 355.72 642.7199999999999 355.33 641.26 355.19 639.78 C 354.71 634.9 356.32 633.01 361.3 632.97 C 372.29 632.87 383.28 632.93 394.26 632.93 z" stroke-linecap="round" />
|
||||
</g>
|
||||
<g transform="matrix(1.82 0 0 1.82 66.29 26.74)" >
|
||||
<path style="stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(56,135,22); fill-rule: nonzero; opacity: 1;" vector-effect="non-scaling-stroke" transform=" translate(-428.75, -584.99)" d="M 428.83 602 C 419.12 601.96 411.59999999999997 594.6 411.53 585.07 C 411.46999999999997 575.4100000000001 419.21 567.9100000000001 429.16999999999996 567.98 C 438.33 568.0500000000001 445.93999999999994 575.71 445.97999999999996 584.91 C 446.02 594.33 438.29 602.04 428.83 602 z" stroke-linecap="round" />
|
||||
</g>
|
||||
<g transform="matrix(1.82 0 0 1.82 -65.91 26.78)" >
|
||||
<path style="stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-dashoffset: 0; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(56,135,22); fill-rule: nonzero; opacity: 1;" vector-effect="non-scaling-stroke" transform=" translate(-356.06, -584.99)" d="M 339.05 584.57 C 339.19 574.94 346.67 567.84 356.53000000000003 567.99 C 366.26000000000005 568.14 373.21000000000004 575.46 373.07000000000005 585.42 C 372.94000000000005 595.16 365.62000000000006 602.13 355.68000000000006 602 C 346.04 601.87 338.91 594.4 339.05 584.57 z" stroke-linecap="round" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.7 KiB |
@@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 27.8.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Слой_1"
|
||||
width="1000"
|
||||
height="1000"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="230 260 500 550"
|
||||
style="background-color: #94DB77" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#94DB77;}
|
||||
.st1{fill:#4AAD20;}
|
||||
.st2{fill:#388616;}
|
||||
.st3{fill:#388716;}
|
||||
.st4{fill:#E9F3E4;}
|
||||
</style>
|
||||
<g>
|
||||
<path class="st0" d="M191.12,540.08c0-91.78,0.03-183.55-0.1-275.33c0-3.5,0.49-4.75,5.66-4.75
|
||||
c187.59,0.13,375.17,0.13,562.76,0.02c4.6,0,5.54,0.74,5.54,4.34c-0.14,183.72-0.14,367.44,0.02,551.16c0,4-1.5,4.47-6.02,4.47
|
||||
c-187.38-0.09-374.75-0.1-562.13,0.01c-4.78,0-5.86-0.84-5.86-4.59C191.15,723.63,191.12,631.86,191.12,540.08z"/>
|
||||
<path class="st1" d="M392.26,705.96c-15.49,0-30.97,0.08-46.46-0.01c-27.64-0.16-48.2-20.68-48.58-48.38
|
||||
c-0.07-5.33-0.15-10.66,0.03-15.98c0.11-3.36-0.95-4.99-4.53-4.7c-2.48,0.2-4.99,0.09-7.49,0.01c-8.13-0.27-13.53-5.25-13.85-13.41
|
||||
c-0.32-8.31-0.32-16.66-0.01-24.97c0.32-8.47,5.67-13.29,14.21-13.51c11.63-0.29,11.61-0.29,11.64-12
|
||||
c0.01-5.65-0.08-11.29,0.76-16.94c3.28-22.14,22.75-39.61,45.11-40.03c11.98-0.23,23.98-0.18,35.96-0.02
|
||||
c3.68,0.05,4.97-1.15,4.91-4.87c-0.19-10.49-0.2-20.98,0.01-31.47c0.08-3.67-1.01-6.02-4.04-8.3c-7.69-5.8-10.15-15.12-6.86-23.66
|
||||
c3.12-8.12,12.07-13.98,20.39-13.36c9.18,0.68,16.98,6.99,19,15.86c2.02,8.81-0.75,16.21-7.99,21.57c-2.6,1.93-3.55,3.91-3.5,7.04
|
||||
c0.15,10.32,0.28,20.65-0.04,30.97c-0.14,4.7,1.1,6.44,6.07,6.28c10.81-0.35,21.64-0.17,32.47-0.09
|
||||
c27.05,0.22,47.25,20.24,47.77,47.31c0.1,4.99,0.02,9.99,0.04,14.99c0.02,6.71,0.03,6.71,6.51,6.73c2.16,0.01,4.33-0.06,6.49,0.04
|
||||
c7.67,0.37,12.72,5.36,12.87,13.06c0.17,8.49,0.16,16.99,0.01,25.48c-0.13,7.76-4.96,12.71-12.68,13.27
|
||||
c-2.32,0.17-4.7,0.35-6.98,0.02c-5.3-0.76-6.63,1.65-6.3,6.51c0.35,5.14,0.15,10.32,0.04,15.48
|
||||
c-0.56,26.78-20.78,46.86-47.52,47.08C423.9,706.06,408.08,705.95,392.26,705.96z"/>
|
||||
<path class="st1" d="M598.2,362.07c59.99,0.04,108.7,48.78,108.71,108.8c0.01,60.11-49.08,109.12-109.16,108.98
|
||||
C538.06,579.71,489,530.4,489.14,470.66C489.28,410.82,538.28,362.04,598.2,362.07z"/>
|
||||
<path class="st2" d="M394.26,632.93c10.49,0,20.97-0.03,31.46,0.01c6.21,0.02,7.8,1.8,7.19,7.77c-1.91,18.95-18.5,34.51-37.53,35.2
|
||||
c-18.51,0.67-35.81-13.26-39.38-31.72c-0.28-1.47-0.67-2.93-0.81-4.41c-0.48-4.88,1.13-6.77,6.11-6.81
|
||||
C372.29,632.87,383.28,632.93,394.26,632.93z"/>
|
||||
<path class="st3" d="M428.83,602c-9.71-0.04-17.23-7.4-17.3-16.93c-0.06-9.66,7.68-17.16,17.64-17.09
|
||||
c9.16,0.07,16.77,7.73,16.81,16.93C446.02,594.33,438.29,602.04,428.83,602z"/>
|
||||
<path class="st3" d="M339.05,584.57c0.14-9.63,7.62-16.73,17.48-16.58c9.73,0.15,16.68,7.47,16.54,17.43
|
||||
c-0.13,9.74-7.45,16.71-17.39,16.58C346.04,601.87,338.91,594.4,339.05,584.57z"/>
|
||||
<path class="st4" d="M598.39,405.96c35.8-0.01,64.91,29.38,64.43,65.03c-0.49,35.73-30.23,64.62-65.81,63.8
|
||||
c-8.91-0.21-17.55-2.04-25.56-6.01c-2.93-1.46-5.49-1.58-8.53-0.72c-8.48,2.4-17.03,4.53-25.54,6.84
|
||||
c-2.86,0.78-3.98,0.46-2.97-2.94c2.37-7.97,4.29-16.07,6.69-24.03c1.07-3.56,0.85-6.48-0.81-9.95
|
||||
C519.91,455.33,551.14,405.98,598.39,405.96z"/>
|
||||
<path class="st1" d="M548.99,520.52c1.54-5.81,2.66-10.77,4.2-15.6c0.89-2.79,0.54-4.93-0.91-7.47
|
||||
c-18.93-33.1,0.22-73.52,37.83-80.02c28.33-4.9,56.38,15.3,60.95,43.88c4.74,29.61-15.08,57.38-43.86,61.82
|
||||
c-12.32,1.9-23.85,0-34.68-6c-2.55-1.41-4.83-1.63-7.54-0.84C559.94,517.75,554.84,518.98,548.99,520.52z"/>
|
||||
<path class="st4" d="M615.43,501.21c-7.36-0.22-13.98-3.02-20.17-6.59c-11.52-6.64-20.22-16.22-26.57-27.83
|
||||
c-4.58-8.38-3.88-16.68,1.39-22.88c4.54-5.35,10.44-4.55,13.13,1.78c0.85,1.99,1.52,4.08,2.57,5.95c2.35,4.2,2.04,7.87-1.68,11.1
|
||||
c-2.2,1.92-1.79,3.85-0.29,6.12c4.63,6.96,10.62,12.24,18.05,16.08c3.6,1.86,6.4,1.78,8.35-1.92c2.73-5.2,6.35-5.45,10.9-2.5
|
||||
c1.38,0.9,2.97,1.49,4.46,2.22c6.33,3.1,7.13,9.14,1.71,13.92C623.96,499.62,620.04,501.38,615.43,501.21z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 77 KiB |
|
After Width: | Height: | Size: 90 KiB |
|
After Width: | Height: | Size: 83 KiB |
|
After Width: | Height: | Size: 73 KiB |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><svg width="145px" height="40px" viewBox="0 0 145 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><linearGradient x1="61.5370404%" y1="13%" x2="34.2376801%" y2="129.365079%" id="linearGradient-1"><stop stop-color="#EF7829" offset="0%"/><stop stop-color="#F0692A" offset="28%"/><stop stop-color="#F15E2C" offset="63%"/><stop stop-color="#F15A2C" offset="100%"/></linearGradient></defs><g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g id="Blocks/Header_Unlogged" transform="translate(-15.000000, -15.000000)"><g id="icons/boosty_logo" transform="translate(15.000000, 15.000000)"><g id="Shape"><path d="M138.119363,13.14856 L132.002653,22.63144 L131.397878,13.14856 L122.575597,13.14856 C123.384615,10.366 124.037135,8.13256 124.037135,8.13256 L124.381963,7.01848 L117.6313,7.01848 L117.312997,8.13256 L115.851459,13.14856 L108.660477,13.14856 C102.750663,13.14856 99.4244032,14.8276 98.0503979,18.00352 C97.2546419,15.09952 94.6206897,13.14856 90.5782493,13.14856 C87.2902077,13.135208 84.1128672,14.3300173 81.6551724,16.504 C80.464191,14.45536 78.1061008,13.1512 74.8116711,13.1512 C71.2975199,13.1360778 67.9189855,14.5000837 65.4084881,16.94752 C64.3103448,14.656 61.8541114,13.14856 58.3262599,13.14856 C57.1586378,13.1510938 55.9961737,13.302814 54.867374,13.6 L55.397878,11.77312 C55.4066092,11.7439195 55.4181572,11.7156279 55.4323607,11.68864 L56.7904509,7 L50.066313,7 L45.7798408,21.73384 C45.668435,22.02952 45.5676393,22.32784 45.4801061,22.63144 C45.2902336,23.2752559 45.1623364,23.9355911 45.0981432,24.60352 C44.5384615,28.714 46.3474801,31.816 51.3660477,32.0272 C51.8475451,32.0843575 52.332067,32.1125687 52.8169761,32.11168 C56.2925823,32.0722669 59.6211655,30.7100879 62.1193634,28.3048 C63.1564987,30.6148 65.5676393,32.11168 69.2970822,32.11168 C72.5436452,32.0790306 75.6705362,30.8873894 78.1087533,28.7536 C79.2493369,30.80488 81.5862069,32.11168 85.061008,32.11168 L101.917772,32.11168 C107.143236,32.11168 110.095491,31.08472 111.6313,28.85392 C111.6313,30.98176 112.851459,32.11168 115.941645,32.11168 C118.437666,32.11168 121.777188,31.5652 126.366048,30.43792 L119.687003,39.9208 L126.411141,39.9208 L144.846154,13.14856 L138.119363,13.14856 Z M58.9310345,22.63144 C58.3023873,24.79096 56.2785146,26.53336 54.4217507,26.53336 C52.5649867,26.53336 51.5676393,24.79096 52.1962865,22.63144 C52.8249337,20.47192 54.8488064,18.72688 56.6923077,18.72688 C58.535809,18.72688 59.5596817,20.464 58.9310345,22.63144 Z M75.4164456,22.63144 C74.7877984,24.79096 72.7639257,26.53336 70.9071618,26.53336 C69.0503979,26.53336 68.0769231,24.79096 68.6923077,22.63144 C69.3076923,20.47192 71.3448276,18.72688 73.2015915,18.72688 C75.0583554,18.72688 76.0344828,20.464 75.4164456,22.63144 Z M84.4562334,22.63144 C85.0848806,20.46928 87.1087533,18.72688 88.9522546,18.72688 C90.795756,18.72688 91.8090186,20.46928 91.1803714,22.63144 C90.5517241,24.7936 88.5941645,26.4832 86.7586207,26.536 L86.6074271,26.536 C84.801061,26.4832 83.8355438,24.76192 84.4562334,22.63144 Z M106.127321,25.85752 C105.787798,26.64952 103.132626,26.53072 102.466844,26.54128 L95.928382,26.536 C96.8103436,25.360374 97.4758216,24.0383816 97.8938992,22.63144 C97.9363395,22.48888 97.9734748,22.34896 98.0079576,22.20904 C98.7108753,23.2096 100.201592,24.11248 103.100796,24.68536 C105.864721,25.216 106.3687,25.05496 106.127321,25.85752 Z M112.777188,23.7244 C112.204244,21.49624 109.721485,20.6224 106.241379,20.2 C104.785146,20.02576 103.965517,19.95712 104.148541,19.3288 C104.289125,18.8404 105.018568,18.73744 106.586207,18.73744 L114.230769,18.73744 L112.777188,23.7244 Z M119.496021,23.74552 C119.496021,23.70064 120.151194,21.4804 120.952255,18.72952 L125.217507,18.72952 L125.915119,25.8364 C118.888594,27.328 118.713528,26.92672 119.496021,23.74552 L119.496021,23.74552 Z" fill="#242B2C" fill-rule="nonzero"/><path d="M1.03841146,23.8920635 L7.81508464,0 L18.2158138,0 L16.1119922,7.40740741 C16.0897554,7.44994435 16.0716695,7.49460291 16.0579948,7.54074074 L10.5357227,27.1005291 L15.6903971,27.1005291 C13.537424,32.5848325 11.8524284,36.8846561 10.6354102,40 C1.12771484,39.8920635 -1.53892578,32.9481481 0.795423177,24.7322751 L1.03841146,23.8920635 Z M10.672793,40 L23.2084961,21.6 L17.8897526,21.6 L22.5169141,9.81375661 C30.4586849,10.6603175 34.1824284,17.0285714 31.993457,24.7301587 C29.6424935,33.015873 20.1285677,40 10.8659375,40 L10.672793,40 Z" fill="url(#linearGradient-1)" fill-rule="nonzero"/></g></g></g></g></svg>
|
||||
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
@@ -0,0 +1 @@
|
||||
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 339.43 295.27"><title>tether-usdt-logo</title><path d="M62.15,1.45l-61.89,130a2.52,2.52,0,0,0,.54,2.94L167.95,294.56a2.55,2.55,0,0,0,3.53,0L338.63,134.4a2.52,2.52,0,0,0,.54-2.94l-61.89-130A2.5,2.5,0,0,0,275,0H64.45a2.5,2.5,0,0,0-2.3,1.45h0Z" style="fill:#50af95;fill-rule:evenodd"/><path d="M191.19,144.8v0c-1.2.09-7.4,0.46-21.23,0.46-11,0-18.81-.33-21.55-0.46v0c-42.51-1.87-74.24-9.27-74.24-18.13s31.73-16.25,74.24-18.15v28.91c2.78,0.2,10.74.67,21.74,0.67,13.2,0,19.81-.55,21-0.66v-28.9c42.42,1.89,74.08,9.29,74.08,18.13s-31.65,16.24-74.08,18.12h0Zm0-39.25V79.68h59.2V40.23H89.21V79.68H148.4v25.86c-48.11,2.21-84.29,11.74-84.29,23.16s36.18,20.94,84.29,23.16v82.9h42.78V151.83c48-2.21,84.12-11.73,84.12-23.14s-36.09-20.93-84.12-23.15h0Zm0,0h0Z" style="fill:#fff;fill-rule:evenodd"/></svg>
|
||||
|
After Width: | Height: | Size: 874 B |
@@ -1 +1 @@
|
||||
{"openapi":"3.1.0","paths":{"/api/{session}/auth/qr":{"get":{"operationId":"AuthController_getQR","summary":"Get QR code for pairing WhatsApp Web.","parameters":[{"name":"session","required":true,"in":"path","schema":{"default":"default"},"description":"WhatsApp session name"},{"name":"format","required":true,"in":"query","schema":{"default":"image","enum":["image","raw"],"type":"string"}}],"responses":{"200":{"content":{"image/png":{"schema":{"type":"string","format":"binary"}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/Base64File"},{"$ref":"#/components/schemas/QRCodeValue"}]}}},"description":""}},"tags":["auth"],"security":[{"api_key":[]}]}},"/api/{session}/auth/request-code":{"post":{"operationId":"AuthController_requestCode","summary":"Request authentication code.","parameters":[{"name":"session","required":true,"in":"path","schema":{"default":"default"},"description":"WhatsApp session name"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestCodeRequest"}}}},"responses":{"201":{"description":""}},"tags":["auth"],"security":[{"api_key":[]}]}},"/api/{session}/auth/authorize-code":{"post":{"operationId":"AuthController_authorizeCode","summary":"Send OTP authentication code.","parameters":[{"name":"session","required":true,"in":"path","schema":{"default":"default"},"description":"WhatsApp session name"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTPRequest"}}}},"responses":{"201":{"description":""}},"tags":["auth"],"security":[{"api_key":[]}]}},"/api/sessions/start":{"post":{"operationId":"SessionsController_start","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionStartRequest"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionDTO"}}}}},"tags":["sessions"],"security":[{"api_key":[]}]}},"/api/sessions/stop":{"post":{"operationId":"SessionsController_stop","summary":"Stop session","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionStopRequest"}}}},"responses":{"201":{"description":""}},"tags":["sessions"],"security":[{"api_key":[]}]}},"/api/sessions/logout":{"post":{"operationId":"SessionsController_clean","summary":"Logout from session.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionLogoutRequest"}}}},"responses":{"201":{"description":""}},"tags":["sessions"],"security":[{"api_key":[]}]}},"/api/sessions":{"get":{"operationId":"SessionsController_list","parameters":[{"name":"all","required":false,"in":"query","example":false,"description":"Return all sessions, including those that are in the STOPPED state.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SessionInfo"}}}}}},"tags":["sessions"],"security":[{"api_key":[]}]}},"/api/sessions/{session}/me":{"get":{"operationId":"SessionController_getMe","summary":"Get information about the authenticated account","parameters":[{"name":"session","required":true,"in":"path","schema":{"default":"default"},"description":"WhatsApp session name"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeInfo"}}}}},"tags":["sessions"],"security":[{"api_key":[]}]}},"/api/checkNumberStatus":{"get":{"operationId":"ChattingController_checkNumberStatus","summary":"Check number status","parameters":[{"name":"phone","required":true,"in":"query","schema":{"type":"string"}},{"name":"session","required":true,"in":"query","schema":{"default":"default","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WANumberExistResult"}}}}},"tags":["chatting"],"security":[{"api_key":[]}]}},"/api/sendContactVcard":{"post":{"operationId":"ChattingController_sendContactVcard","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageContactVcardRequest"}}}},"responses":{"201":{"description":""}},"tags":["chatting"],"security":[{"api_key":[]}]}},"/api/sendText":{"get":{"operationId":"ChattingController_sendTextGet","summary":"Send a text message","parameters":[{"name":"phone","required":true,"in":"query","schema":{"type":"string"}},{"name":"text","required":true,"in":"query","schema":{"type":"string"}},{"name":"session","required":true,"in":"query","schema":{"default":"default","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object"}}}}},"tags":["chatting"],"security":[{"api_key":[]}]},"post":{"operationId":"ChattingController_sendText","summary":"Send a text message","parameters":[],"requestBody":{"required":true,Line truncated
|
||||
{"openapi":"3.1.0","paths":{"/api/{session}/auth/qr":{"get":{"operationId":"AuthController_getQR","summary":"Get QR code for pairing WhatsApp Web.","parameters":[{"name":"session","required":true,"in":"path","schema":{"default":"default"},"description":"WhatsApp session name"},{"name":"format","required":true,"in":"query","schema":{"default":"image","enum":["image","raw"],"type":"string"}}],"responses":{"200":{"content":{"image/png":{"schema":{"type":"string","format":"binary"}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/Base64File"},{"$ref":"#/components/schemas/QRCodeValue"}]}}},"description":""}},"tags":["auth"],"security":[{"api_key":[]}]}},"/api/{session}/auth/request-code":{"post":{"operationId":"AuthController_requestCode","summary":"Request authentication code.","parameters":[{"name":"session","required":true,"in":"path","schema":{"default":"default"},"description":"WhatsApp session name"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestCodeRequest"}}}},"responses":{"201":{"description":""}},"tags":["auth"],"security":[{"api_key":[]}]}},"/api/{session}/auth/authorize-code":{"post":{"operationId":"AuthController_authorizeCode","summary":"Send OTP authentication code.","parameters":[{"name":"session","required":true,"in":"path","schema":{"default":"default"},"description":"WhatsApp session name"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OTPRequest"}}}},"responses":{"201":{"description":""}},"tags":["auth"],"security":[{"api_key":[]}]}},"/api/{session}/auth/captcha":{"get":{"operationId":"AuthController_getCaptcha","summary":"Get captcha image.","parameters":[{"name":"session","required":true,"in":"path","schema":{"default":"default"},"description":"WhatsApp session name"}],"responses":{"200":{"content":{"image/png":{"schema":{"type":"string","format":"binary"}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/Base64File"}]}}},"description":""}},"tags":["auth"],"security":[{"api_key":[]}]},"post":{"operationId":"AuthController_saveCaptcha","summary":"Enter captcha code.","parameters":[{"name":"session","required":true,"in":"path","schema":{"default":"default"},"description":"WhatsApp session name"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptchaBody"}}}},"responses":{"201":{"description":""}},"tags":["auth"],"security":[{"api_key":[]}]}},"/api/sessions/start":{"post":{"operationId":"SessionsController_start","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionStartRequest"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionDTO"}}}}},"tags":["sessions"],"security":[{"api_key":[]}]}},"/api/sessions/stop":{"post":{"operationId":"SessionsController_stop","summary":"Stop session","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionStopRequest"}}}},"responses":{"201":{"description":""}},"tags":["sessions"],"security":[{"api_key":[]}]}},"/api/sessions/logout":{"post":{"operationId":"SessionsController_clean","summary":"Logout from session.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionLogoutRequest"}}}},"responses":{"201":{"description":""}},"tags":["sessions"],"security":[{"api_key":[]}]}},"/api/sessions":{"get":{"operationId":"SessionsController_list","parameters":[{"name":"all","required":false,"in":"query","example":false,"description":"Return all sessions, including those that are in the STOPPED state.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SessionInfo"}}}}}},"tags":["sessions"],"security":[{"api_key":[]}]}},"/api/sessions/{session}":{"get":{"operationId":"SessionsController_get","parameters":[{"name":"session","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionInfo"}}}}},"tags":["sessions"],"security":[{"api_key":[]}]}},"/api/sessions/{session}/me":{"get":{"operationId":"SessionController_getMe","summary":"Get information about the authenticated account","parameters":[{"name":"session","required":true,"in":"path","schema":{"default":"default"},"description":"WhatsApp session name"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeInfo"}}}}},"tags":["sessions"],"security":[{"api_key":[]}]}},"/api/checkNumberStatus":{"get":{"operationId":"ChattingController_checkNumberStatus","summary":"Check number status","parameters":[{"name":"phone","required":true,"in":"query","schema":{"type":"string"}},{"nLine truncated
|
||||
@@ -2,6 +2,8 @@
|
||||
"collection": "@nestjs/schematics",
|
||||
"sourceRoot": "src",
|
||||
"compilerOptions": {
|
||||
"plugins": ["@nestjs/swagger"]
|
||||
"plugins": ["@nestjs/swagger"],
|
||||
"assets": ["dashboard/**", "core/engines/webjs/*"],
|
||||
"watchAssets": true
|
||||
}
|
||||
}
|
||||
@@ -48,6 +48,7 @@
|
||||
"mongodb": "^6.3.0",
|
||||
"passport": "^0.6.0",
|
||||
"passport-headerapikey": "^1.2.2",
|
||||
"puppeteer": "^21.0.0",
|
||||
"qrcode": "^1.5.1",
|
||||
"qrcode-terminal": "^0.12.0",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
@@ -57,7 +58,7 @@
|
||||
"rxjs": "^7.1.0",
|
||||
"swagger-ui-express": "^4.1.4",
|
||||
"venom-bot": "5.0.1",
|
||||
"whatsapp-web.js": "https://github.com/devlikeapro/whatsapp-web.js#main-fork"
|
||||
"whatsapp-web.js": "https://github.com/devlikeapro/whatsapp-web.js#main-fork-update"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@nestjs/cli": "^9.0.0",
|
||||
|
||||
@@ -1,11 +1,26 @@
|
||||
import { Controller, Delete, Get, Param, Post, Query } from '@nestjs/common';
|
||||
import {
|
||||
Body,
|
||||
Controller,
|
||||
Delete,
|
||||
Get,
|
||||
Param,
|
||||
Post,
|
||||
Put,
|
||||
Query,
|
||||
} from '@nestjs/common';
|
||||
import { ApiOperation, ApiSecurity, ApiTags } from '@nestjs/swagger';
|
||||
|
||||
import { SessionManager } from '../core/abc/manager.abc';
|
||||
import { WhatsappSession } from '../core/abc/session.abc';
|
||||
import { parseBool } from '../helpers';
|
||||
import { GetChatMessagesQuery } from '../structures/chats.dto';
|
||||
import { SessionApiParam, SessionParam } from './helpers';
|
||||
import { EditMessageRequest } from '../structures/chatting.dto';
|
||||
import {
|
||||
ChatIdApiParam,
|
||||
MessageIdApiParam,
|
||||
SessionApiParam,
|
||||
SessionParam,
|
||||
} from './helpers';
|
||||
|
||||
@ApiSecurity('api_key')
|
||||
@Controller('api/:session/chats')
|
||||
@@ -51,6 +66,33 @@ class ChatsController {
|
||||
) {
|
||||
return session.clearMessages(chatId);
|
||||
}
|
||||
|
||||
@Delete(':chatId/messages/:messageId')
|
||||
@SessionApiParam
|
||||
@ChatIdApiParam
|
||||
@MessageIdApiParam
|
||||
@ApiOperation({ summary: 'Deletes a message from the chat' })
|
||||
deleteMessage(
|
||||
@SessionParam session: WhatsappSession,
|
||||
@Param('chatId') chatId: string,
|
||||
@Param('messageId') messageId: string,
|
||||
) {
|
||||
return session.deleteMessage(chatId, messageId);
|
||||
}
|
||||
|
||||
@Put(':chatId/messages/:messageId')
|
||||
@SessionApiParam
|
||||
@ChatIdApiParam
|
||||
@MessageIdApiParam
|
||||
@ApiOperation({ summary: 'Edits a message in the chat' })
|
||||
editMessage(
|
||||
@SessionParam session: WhatsappSession,
|
||||
@Param('chatId') chatId: string,
|
||||
@Param('messageId') messageId: string,
|
||||
@Body() body: EditMessageRequest,
|
||||
) {
|
||||
return session.editMessage(chatId, messageId, body);
|
||||
}
|
||||
}
|
||||
|
||||
export { ChatsController };
|
||||
@@ -14,6 +14,7 @@ import {
|
||||
MessagePollRequest,
|
||||
MessageReactionRequest,
|
||||
MessageReplyRequest,
|
||||
MessageStarRequest,
|
||||
MessageTextQuery,
|
||||
MessageTextRequest,
|
||||
MessageVideoRequest,
|
||||
@@ -157,6 +158,14 @@ export class ChattingController {
|
||||
return whatsapp.setReaction(request);
|
||||
}
|
||||
|
||||
@Put('/star')
|
||||
@ApiOperation({ summary: 'Star or unstar a message' })
|
||||
async setStar(@Body() request: MessageStarRequest) {
|
||||
const whatsapp = this.manager.getSession(request.session);
|
||||
await whatsapp.setStar(request);
|
||||
return;
|
||||
}
|
||||
|
||||
@Get('/messages')
|
||||
@ApiOperation({ summary: 'Get messages in a chat' })
|
||||
getMessages(@Query() query: GetMessageQuery) {
|
||||
|
||||
@@ -56,11 +56,12 @@ export class GroupsController {
|
||||
summary:
|
||||
'Updates the group settings to only allow admins to edit group info (title, description, photo).',
|
||||
})
|
||||
setGroupAdminOnly(
|
||||
setInfoAdminOnly(
|
||||
@SessionParam session: WhatsappSession,
|
||||
@Param('id') id: string,
|
||||
@Body() request: SettingsSecurityChangeInfo,
|
||||
) {
|
||||
return session.setInfoAdminsOnly(id, true);
|
||||
return session.setInfoAdminsOnly(id, request.adminsOnly);
|
||||
}
|
||||
|
||||
@Get(':id/settings/security/info-admin-only')
|
||||
@@ -76,6 +77,32 @@ export class GroupsController {
|
||||
return session.getInfoAdminsOnly(id);
|
||||
}
|
||||
|
||||
@Put(':id/settings/security/messages-admin-only')
|
||||
@SessionApiParam
|
||||
@ApiOperation({
|
||||
summary:
|
||||
'Updates the group settings to only allow admins to send messages.',
|
||||
})
|
||||
setMessagesAdminOnly(
|
||||
@SessionParam session: WhatsappSession,
|
||||
@Param('id') id: string,
|
||||
@Body() request: SettingsSecurityChangeInfo,
|
||||
) {
|
||||
return session.setMessagesAdminsOnly(id, request.adminsOnly);
|
||||
}
|
||||
|
||||
@Get(':id/settings/security/messages-admin-only')
|
||||
@SessionApiParam
|
||||
@ApiOperation({
|
||||
summary: 'Gets the group settings to only allow admins to send messages.',
|
||||
})
|
||||
getMessagesAdminOnly(
|
||||
@SessionParam session: WhatsappSession,
|
||||
@Param('id') id: string,
|
||||
): Promise<SettingsSecurityChangeInfo> {
|
||||
return session.getMessagesAdminsOnly(id);
|
||||
}
|
||||
|
||||
@Delete(':id')
|
||||
@SessionApiParam
|
||||
@ApiOperation({ summary: 'Delete the group.' })
|
||||
|
||||
@@ -48,6 +48,22 @@ export const SessionApiParam = ApiParam({
|
||||
*/
|
||||
export const SessionParam = Param('session', SessionPipe);
|
||||
|
||||
export const ChatIdApiParam = ApiParam({
|
||||
name: 'chatId',
|
||||
required: true,
|
||||
type: 'string',
|
||||
description: 'Chat ID',
|
||||
example: '123456789@c.us',
|
||||
});
|
||||
|
||||
export const MessageIdApiParam = ApiParam({
|
||||
name: 'messageId',
|
||||
required: true,
|
||||
type: 'string',
|
||||
description: 'Message ID',
|
||||
example: 'true_123456789@c.us_BAE6A33293978B16',
|
||||
});
|
||||
|
||||
function getRefSchemaPaths(models) {
|
||||
return models.map((model) => {
|
||||
return { $ref: getSchemaPath(model) };
|
||||
|
||||
@@ -1,4 +1,13 @@
|
||||
import { Body, Controller, Get, Post, Query } from '@nestjs/common';
|
||||
import {
|
||||
Body,
|
||||
Controller,
|
||||
Delete,
|
||||
Get,
|
||||
NotFoundException,
|
||||
Param,
|
||||
Post,
|
||||
Query,
|
||||
} from '@nestjs/common';
|
||||
import {
|
||||
ApiExtraModels,
|
||||
ApiOperation,
|
||||
@@ -39,9 +48,10 @@ class SessionsController {
|
||||
@Post('/stop/')
|
||||
@ApiOperation({ summary: 'Stop session' })
|
||||
async stop(@Body() request: SessionStopRequest): Promise<void> {
|
||||
await this.manager.stop(request);
|
||||
if (request.logout) {
|
||||
await this.manager.logout(request);
|
||||
} else {
|
||||
await this.manager.stop(request);
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -57,6 +67,15 @@ class SessionsController {
|
||||
const all = parseBool(query.all);
|
||||
return this.manager.getSessions(all);
|
||||
}
|
||||
|
||||
@Get('/:session')
|
||||
async get(@Param('session') name: string): Promise<SessionInfo> {
|
||||
const session = this.manager.getSessionInfo(name);
|
||||
if (session === null) {
|
||||
throw new NotFoundException('Session not found');
|
||||
}
|
||||
return session;
|
||||
}
|
||||
}
|
||||
|
||||
@ApiSecurity('api_key')
|
||||
|
||||
@@ -8,13 +8,13 @@ import { getEngineName } from './version';
|
||||
|
||||
@Injectable()
|
||||
export class WhatsappConfigService {
|
||||
public files_uri = '/api/files';
|
||||
public filesUri = '/api/files';
|
||||
public schema = 'http';
|
||||
|
||||
constructor(private configService: ConfigService) {}
|
||||
|
||||
get filesURL(): string {
|
||||
return `${this.schema}://${this.hostname}:${this.port}${this.files_uri}/`;
|
||||
return `${this.schema}://${this.hostname}:${this.port}${this.filesUri}/`;
|
||||
}
|
||||
|
||||
get hostname(): string {
|
||||
@@ -131,31 +131,27 @@ export class WhatsappConfigService {
|
||||
return this.configService.get('WHATSAPP_API_KEY', '');
|
||||
}
|
||||
|
||||
getSwaggerEnabled(): boolean {
|
||||
const value = this.configService.get('WHATSAPP_SWAGGER_ENABLED', 'true');
|
||||
getDashboardEnabled(): boolean {
|
||||
const value = this.configService.get('WAHA_DASHBOARD_ENABLED', 'true');
|
||||
return parseBool(value);
|
||||
}
|
||||
|
||||
getSwaggerUsernamePassword(): [string, string] | undefined {
|
||||
const user = this.configService.get('WHATSAPP_SWAGGER_USERNAME', undefined);
|
||||
const password = this.configService.get(
|
||||
'WHATSAPP_SWAGGER_PASSWORD',
|
||||
undefined,
|
||||
);
|
||||
if (!user && !password) {
|
||||
getDashboardUsernamePassword(): [string, string] | null {
|
||||
if (!this.getDashboardEnabled()) {
|
||||
return null;
|
||||
}
|
||||
const user = this.configService.get('WAHA_DASHBOARD_USERNAME', 'waha');
|
||||
const password = this.configService.get('WAHA_DASHBOARD_PASSWORD', 'waha');
|
||||
if (!user || !password) {
|
||||
console.log(
|
||||
'Please set up both WHATSAPP_SWAGGER_USERNAME and WHATSAPP_SWAGGER_PASSWORD ' +
|
||||
'Please set up both WAHA_DASHBOARD_USERNAME and WAHA_DASHBOARD_PASSWORD ' +
|
||||
'to enable swagger authentication.',
|
||||
);
|
||||
return undefined;
|
||||
return null;
|
||||
}
|
||||
return [user, password];
|
||||
}
|
||||
|
||||
getSwaggerAdvancedConfigEnabled(): boolean {
|
||||
return this.configService.get('WHATSAPP_SWAGGER_CONFIG_ADVANCED', false);
|
||||
}
|
||||
|
||||
getHealthMediaFilesThreshold(): number {
|
||||
return this.configService.get<number>(
|
||||
'WHATSAPP_HEALTH_MEDIA_FILES_THRESHOLD_MB',
|
||||
|
||||
@@ -4,30 +4,52 @@ import { DECORATORS } from '@nestjs/swagger/dist/constants';
|
||||
|
||||
import { WhatsappConfigService } from '../config.service';
|
||||
import { VERSION } from '../version';
|
||||
import { SwaggerConfigServiceCore } from './config/SwaggerConfigServiceCore';
|
||||
|
||||
export class SwaggerModuleCore {
|
||||
configure(app: INestApplication, webhooks: any[]) {
|
||||
export class SwaggerConfiguratorCore {
|
||||
constructor(protected app: INestApplication) {}
|
||||
|
||||
get title() {
|
||||
return 'WAHA - WhatsApp HTTP API';
|
||||
}
|
||||
|
||||
get description() {
|
||||
return (
|
||||
'WhatsApp HTTP API that you can run in a click!<br/>' +
|
||||
'<br/>' +
|
||||
'Learn more:' +
|
||||
'<ul>' +
|
||||
'<li><a href="https://waha.devlike.pro/" target="_blank">Documentation</a></li>' +
|
||||
'<li><a href="https://waha.devlike.pro/docs/how-to/engines/#features" target="_blank">Supported features in engines</a></li>' +
|
||||
'<li><a href="https://github.com/devlikeapro/whatsapp-http-api" target="_blank">GitHub - WAHA Core</a></li>' +
|
||||
'<li><a href="https://github.com/devlikeapro/whatsapp-http-api-plu' + // Separate line to pass pre-commit check
|
||||
's" target="_blank">GitHub - WAHA Plus</a></li>' +
|
||||
'<li><b>NEW!</b> - <a href="/dashboard">WAHA Dashboard</a></li>' +
|
||||
'<li><b>NEW!</b> - <a href="https://waha.devlike.pro/docs/how-to/waha-dashboard">WAHA Dashboard Documentation</a></li>' +
|
||||
'</ul>' +
|
||||
'<p>Support the project and get WAHA Plus version!</p>' +
|
||||
'<ul>' +
|
||||
'<li><a href="https://waha.devlike.pro/docs/how-to/plu' + // Separate line to pass pre-commit check
|
||||
's-version/" target="_blank">WAHA Plus</a></li>' +
|
||||
'<li><a href="https://patreon.com/wa_http_api/" target="_blank">Patreon</a></li>' +
|
||||
'<li><a href="https://boosty.to/wa-http-api/" target="_blank">Boosty</a></li>' +
|
||||
'<li><a href="https://portal.devlike.pro/" target="_blank">Patron Portal</a></li>' +
|
||||
'</ul>'
|
||||
);
|
||||
}
|
||||
|
||||
get externalDocUrl() {
|
||||
return 'https://waha.devlike.pro/';
|
||||
}
|
||||
|
||||
configure(webhooks: any[]) {
|
||||
const app = this.app;
|
||||
const builder = new DocumentBuilder();
|
||||
|
||||
builder
|
||||
.setTitle('WAHA - WhatsApp HTTP API')
|
||||
.setDescription(
|
||||
'WhatsApp HTTP API that you can run in a click!<br/>' +
|
||||
'<ul>' +
|
||||
'<li><a href="https://waha.devlike.pro/" target="_blank">Documentation</a></li>' +
|
||||
'<li><a href="https://waha.devlike.pro/docs/how-to/engines/#features" target="_blank">Supported features in engines</a></li>' +
|
||||
'<li><a href="https://github.com/devlikeapro/whatsapp-http-api" target="_blank">GitHub - WAHA Core</a></li>' +
|
||||
'<li><a href="https://github.com/devlikeapro/whatsapp-http-api-plu' + // Separate line to pass pre-commit check
|
||||
's" target="_blank">GitHub - WAHA Plus</a></li>' +
|
||||
'</ul>' +
|
||||
'<br/>' +
|
||||
'Support the project and get WAHA Plus version!' +
|
||||
'<ul>' +
|
||||
'<li><a href="https://patreon.com/wa_http_api/" target="_blank">Patreon</a></li>' +
|
||||
'<li><a href="https://boosty.to/wa-http-api/" target="_blank">Boosty</a></li>' +
|
||||
'</ul>',
|
||||
)
|
||||
.setExternalDoc('WAHA', 'https://waha.devlike.pro/')
|
||||
.setTitle(this.title)
|
||||
.setDescription(this.description)
|
||||
.setExternalDoc(this.title, this.externalDocUrl)
|
||||
.setVersion(VERSION.version)
|
||||
.addTag('sessions', 'Control WhatsApp sessions')
|
||||
.addTag('auth', 'Authentication')
|
||||
@@ -54,7 +76,8 @@ export class SwaggerModuleCore {
|
||||
});
|
||||
|
||||
const config = app.get(WhatsappConfigService);
|
||||
if (config.getSwaggerAdvancedConfigEnabled()) {
|
||||
const swaggerConfig = app.get(SwaggerConfigServiceCore);
|
||||
if (swaggerConfig.advancedConfigEnabled) {
|
||||
builder.addServer('{protocol}://{host}:{port}/{baseUrl}', '', {
|
||||
protocol: {
|
||||
default: 'http',
|
||||
@@ -89,7 +112,7 @@ export class SwaggerModuleCore {
|
||||
);
|
||||
document = this.configureWebhooks(document, webhooks);
|
||||
SwaggerModule.setup('', app, document, {
|
||||
customSiteTitle: 'WAHA - WhatsApp HTTP API',
|
||||
customSiteTitle: this.title,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -37,5 +37,7 @@ export abstract class SessionManager implements OnApplicationShutdown {
|
||||
|
||||
abstract getSession(name: string): WhatsappSession;
|
||||
|
||||
abstract getSessionInfo(name: string): Promise<SessionInfo | null>;
|
||||
|
||||
abstract getSessions(all: boolean): Promise<SessionInfo[]>;
|
||||
}
|
||||