Skip to content

Commit 375e38a

Browse files
committed
2025.12.1
1 parent e394531 commit 375e38a

File tree

8 files changed

+761
-137
lines changed

8 files changed

+761
-137
lines changed

content/docs/apps/about/-config.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,27 @@
22

33
To use
44
[**🧩 Apps**]({{< relref "/docs/apps/about" >}})
5-
, you need to configure the following environment variables in addition to the standard
5+
, you **MUST** configure the following environment variables in addition to the standard
66
[**⚙️ Configuration**]({{< relref "/docs/how-to/config" >}}):
77

88
**Apps**:
99

1010
- `WAHA_APPS_ENABLED=True` - Enables the [**🧩 Apps**]({{< relref "/docs/apps/about" >}}) functionality
11+
- `WAHA_APPS_ON=calls,chatwoot` - Enables only specific apps (comma-separated).
12+
- If not set, all available apps will be enabled (`chatwoot` **requires** `REDIS_URL` and `WAHA_API_KEY_PLAIN` to be set).
13+
- `WAHA_APPS_OFF=chatwoot` - Disables specific apps (comma-separated).
1114
- `WAHA_PUBLIC_URL=https://w.example.com` — the publicly available link to the dashboard (use this if `WAHA_BASE_URL` is set to an internal address for Docker).
1215
- `REDIS_URL=redis://:redis@redis:6379` - Specifies the Redis URL required for processing background jobs
1316
- `WHATSAPP_DEFAULT_ENGINE=GOWS` - Sets the recommended engine for reliable **WhatsApp** automation
14-
- `WAHA_API_KEY_PLAIN=0000000000000000` - plain password **required** for Apps in environment variables
17+
- `WAHA_API_KEY_PLAIN=0000000000000000` - plain password **required** for some Apps in environment variables
1518
- It's a quick solution, we're working on removing it so you can use `sha512` version as in `WAHA_API_KEY`
1619

1720
**ChatWoot App (WAHA)**:
1821
- `WAHA_APPS_CHATWOOT_LANGUAGES_FOLDER=/app/.languages` - folder for additional languages (if language exists it'll override templates in the original templates)
1922
- `WAHA_CHATWOOT_COMMAND_PREFIX` - `wa/{command}` - prefix for commands sent from ChatWoot to WAHA (default: `wa/`)
2023
- `WAHA_CHATWOOT_MESSAGE_CALENDAR_THRESHOLD_SECONDS=600` - threshold in seconds to show the calendar icon
2124

22-
**ChatWoot App (ChatWoot)**:
25+
**ChatWoot App (ChatWoot)**:
2326
- `RACK_TIMEOUT_SERVICE_TIMEOUT=60` — increases the default Rack timeout to 60s (default is 15s).
2427
- `CONVERSATION_MESSAGE_PER_MINUTE_LIMIT=3000` - **important** to increase if you're using `wa/messages pull`
2528
- `RACK_ATTACK_LIMIT=30000` - **important** to increase if you're using `wa/messages pull`

content/docs/apps/about/index.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,53 @@ slug: "about"
2020
## Available Apps
2121
Apps available to connect:
2222
- [**ChatWoot**]({{< relref "/docs/apps/chatwoot" >}}) - use your **WhatsApp** in **ChatWoot CRM**
23+
- [**Calls**]({{< relref "/docs/apps/calls" >}}) - automatically **reject calls** and **auto-reply with a message**
2324

2425
## Configuration
2526

2627
{{< include file="content/docs/apps/about/-config.md" >}}
2728

29+
## API
30+
31+
{{< callout context="tip" title="Session API" icon="outline/article" >}}
32+
You can fetch and update apps using [**🖥️ Sessions**]({{< relref "/docs/how-to/sessions#apps" >}}) API endpoints.
33+
{{< /callout >}}
34+
35+
### List apps for a session
36+
```http request
37+
GET /api/apps?session={session}
38+
```
39+
40+
### Create a new app
41+
```http request
42+
POST /api/apps
43+
```
44+
45+
```json {title="Body"}
46+
{
47+
"enabled": true,
48+
"id": "app_{id}",
49+
"session": "string",
50+
"app": "chatwoot",
51+
"config": {}
52+
}
53+
```
54+
55+
- `id` - use **random long string** for `app: chatwoot` or **session name** for `app: calls`
56+
- `config` - check the latest app config in [**📚 Swagger**]({{< relref "/docs/how-to/swagger" >}}).
57+
- `ChatWootAppConfig`
58+
- `CallsAppConfig`
59+
60+
### Update an app
61+
```http request
62+
PUT /api/apps/{appId}
63+
```
64+
65+
### Delete an app
66+
```http request
67+
DELETE /api/apps/{appId}
68+
```
69+
2870
## How it works
2971

3072
{{< include file="content/docs/apps/about/-how-it-works.md" >}}

content/docs/apps/calls/index.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
---
2+
title: "Calls"
3+
description: "Calls App"
4+
lead: "Calls App"
5+
date: 2025-07-10T08:49:31+00:00
6+
lastmod: 2024-07-10T08:49:31+00:00
7+
draft: false
8+
menu:
9+
docs:
10+
weight: 303
11+
images: []
12+
toc: true
13+
---
14+
15+
You can **automatically reject calls** and **auto-reply with a message** using this app.
16+
17+
## Installation
18+
- Configure env variables
19+
```bash {title=".env"}
20+
WAHA_APPS_ENABLED=True
21+
# If you don't need "chatwoot" app - explicity specify apps to enable
22+
WAHA_APPS_ON=calls
23+
```
24+
- Restart WAHA server
25+
```bash
26+
docker compose up -d
27+
```
28+
29+
- Create an app using [**📊 Dashboard**]({{< relref "/docs/how-to/dashboard" >}}) or API below
30+
31+
## API
32+
You can use [**🧩 Apps API**]({{< relref "/docs/apps/about#api" >}}) or [**🖥️ Sessions**]({{< relref "/docs/how-to/sessions#apps" >}}) API endpoints.
33+
34+
```http request
35+
POST /api/apps
36+
```
37+
38+
{{< callout context="tip" title="Latest Config in Swagger" icon="outline/article" >}}
39+
You can find latest `CallsAppConfig` in [**📚 Swagger**]({{< relref "/docs/how-to/swagger" >}}).
40+
{{< /callout >}}
41+
42+
```json
43+
{
44+
"app": "calls",
45+
"session": "{session}",
46+
"id": "app_{session}",
47+
"config": {
48+
"dm": {
49+
"reject": true,
50+
"message": "📞❌ We don't take calls right now.\n🎤 Please send a voice message or 📝 text — we'll reply ASAP!"
51+
},
52+
"group": {
53+
"reject": true,
54+
"message": "📞❌ We don't take calls right now.\n🎤 Please send a voice message or 📝 text — we'll reply ASAP!"
55+
}
56+
}
57+
}
58+
```

content/docs/apps/chatwoot/index.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,49 @@ We cover all installation and configuration aspects in the following series of a
3333

3434
{{< include file="content/docs/apps/about/-config.md" >}}
3535

36+
## API
37+
You can use [**🧩 Apps API**]({{< relref "/docs/apps/about#api" >}}) or [**🖥️ Sessions**]({{< relref "/docs/how-to/sessions#apps" >}}) API endpoints.
38+
39+
```http request
40+
POST /api/apps
41+
```
42+
43+
44+
{{< callout context="tip" title="Latest Config in Swagger" icon="outline/article" >}}
45+
You can find latest `ChatWootAppConfig` in [**📚 Swagger**]({{< relref "/docs/how-to/swagger" >}}).
46+
{{< /callout >}}
47+
48+
```json
49+
{
50+
"id": "app_RANDOMLOINGSTRING_LIKE_UUID",
51+
"session": "default",
52+
"app": "chatwoot",
53+
"config": {
54+
"linkPreview": "OFF",
55+
"locale": "en-US",
56+
"url": "http://localhost:3009",
57+
"accountId": 1,
58+
"accountToken": "CHATWOOT_ACCOUNT_OTKEN",
59+
"inboxId": 1,
60+
"inboxIdentifier": "CHATWOOT_INBOX_IDENTIFIER",
61+
"templates": {},
62+
"commands": {
63+
"server": true,
64+
"queue": true
65+
},
66+
"conversations": {
67+
"sort": "created_newest",
68+
"status": [
69+
"open",
70+
"pending",
71+
"snoozed"
72+
]
73+
}
74+
},
75+
"enabled": true
76+
}
77+
```
78+
3679
## Conversations
3780
You can map **WhatsApp** chats to **Chatwoot** conversations in two ways.
3881
Your **Chatwoot** and **WAHA** settings **must be kept in sync**.

content/docs/how-to/sessions/index.md

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,91 @@ You can configure proxy when for all sessions by set up environment variables.
351351
Read more about it on [**Proxy page** ->]({{< relref "/docs/how-to/proxy" >}}) or [**Configuration page** ->]({{<
352352
relref "/docs/how-to/config#proxy" >}}).
353353

354+
### Apps
355+
You can fetch [**🧩 Apps**]({{< relref "/docs/apps/about" >}}) associated with a session using `expand=apps` query parameter.
356+
357+
{{< callout context="tip" title="Apps API" icon="outline/article" >}}
358+
We'd recommend using [**🧩 Apps API**]({{< relref "/docs/apps/about#api" >}}) to manage apps.
359+
{{< /callout >}}
360+
361+
For **single session**:
362+
```http request
363+
GET /api/sessions/{session}?expand=apps
364+
```
365+
366+
For **all sessions**:
367+
```http request
368+
GET /api/sessions/?expand=apps
369+
```
370+
371+
```json { title="Response" }
372+
{
373+
"name": "default",
374+
"apps": [
375+
{
376+
"id": "app_default",
377+
"session": "default",
378+
"app": "calls",
379+
"config": {
380+
"dm": {
381+
"reject": true,
382+
"message": "📞❌ We don't take calls right now.\n🎤 Please send a voice message or 📝 text — we'll reply ASAP!"
383+
},
384+
"group": {
385+
"reject": true,
386+
"message": "📞❌ We don't take calls right now.\n🎤 Please send a voice message or 📝 text — we'll reply ASAP!"
387+
}
388+
},
389+
"enabled": true
390+
}
391+
]
392+
}
393+
```
394+
395+
You can **create a session** or **update** a session with associated apps using `apps` field in the body.
396+
397+
```http request
398+
POST /api/sessions
399+
```
400+
```http request
401+
PUT /api/sessions/{session}
402+
```
403+
404+
```jsonc { title="" }
405+
{
406+
"name": "default",
407+
"apps": [
408+
{
409+
"app": "calls",
410+
"id": "app_default",
411+
"session": "",
412+
"config": {
413+
"dm": {
414+
"reject": true,
415+
"message": "📞❌ We don't take calls right now.\n🎤 Please send a voice message or 📝 text — we'll reply ASAP!"
416+
},
417+
"group": {
418+
"reject": true,
419+
"message": "📞❌ We don't take calls right now.\n🎤 Please send a voice message or 📝 text — we'll reply ASAP!"
420+
}
421+
}
422+
}
423+
]
424+
}
425+
```
426+
427+
{{< callout context="danger" title="Use Long Random Id for ChatWoot App" icon="outline/shield-check" >}}
428+
429+
Use long, random string for `app: chatwoot` `id` field!
430+
431+
```bash {title="Generate Random App ID"}
432+
uuidgen | tr -d '-'
433+
> 2e1005a40ef74edda01ffb1ade877fd3
434+
app_2e1005a40ef74edda01ffb1ade877fd3
435+
```
436+
437+
{{< /callout >}}
438+
354439
### WEBJS
355440

356441
![Dashboard - WEBJS](session-config-webjs.png)

content/docs/overview/changelog/index.md

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,20 @@ Check the [**🔧 Install & Update**]({{< relref "/docs/how-to/install" >}}) pag
6060
- `2025.12.1` - **WEBJS** - Add `call.rejected` event when rejected via API
6161
- `2025.12.1` - **GOWS** - Add `call` events - fix #1673
6262

63+
**🧩 Apps**
64+
- `2025.12.1` - [**🧩 Calls App**]({{< relref "/docs/apps/calls" >}}) to reject calls and send reply messages - fix #1694
65+
- `2025.12.1` - [**🧩 Apps API**]({{< relref "/docs/apps/about#api" >}}) and [**🖥️ Sessions - Apps**]({{< relref "/docs/how-to/sessions#apps" >}}) to manage apps via API
66+
- `2025.12.1` - `WAHA_APPS_ON` and `WAHA_APPS_OFF` to control which apps to enable (so it doesn't require redis for chatwoot)
67+
68+
6369
**🧩 ChatWoot**
64-
- `2025.12.1` - add [**📞 Calls**]({{< relref "/docs/how-to/calls" >}}) messages
65-
- `2025.12.1` - fix symbols in the middle of text - fix #1643
70+
- `2025.12.1` - add [**📞 Calls**]({{< relref "/docs/how-to/calls" >}}) messages
71+
- `2025.12.1` - fix symbols in the middle of text - fix #1643
72+
- `2025.12.1` - `config.conversations.markAsRead` - fix #1650
73+
74+
🛠️ **Fixes**
75+
- `2025.12.1` - **WEBJS** - fix stuck in `SCAN_QR_CODE` - fix #1690 closes #1695
76+
- `2025.12.1` - **NOWEB** - fix `poll.vote` for `@lid` - fix #1688
6677

6778
{{< /autolink-prs >}}
6879
{{< /autolink-issues >}}

hugo_stats.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -453,8 +453,6 @@
453453
"-key-fixes",
454454
"-labels",
455455
"-labels-gows",
456-
"-leaner-engines",
457-
"-leaner-engines-especially-gows",
458456
"-lid-to-cus-api",
459457
"-lighter-engines",
460458
"-mark-messages-as-read",
@@ -591,6 +589,7 @@
591589
"contacts-pagination",
592590
"contacts-sync",
593591
"conversations",
592+
"create-a-new-app",
594593
"create-a-new-channel",
595594
"create-a-new-group",
596595
"create-label",
@@ -603,6 +602,7 @@
603602
"debug",
604603
"delete-a-channel",
605604
"delete-all-messages",
605+
"delete-an-app",
606606
"delete-chat",
607607
"delete-group-picture",
608608
"delete-label",
@@ -796,6 +796,7 @@
796796
"lids-faq",
797797
"link-preview",
798798
"links",
799+
"list-apps-for-a-session",
799800
"list-sessions",
800801
"logging",
801802
"logout",
@@ -1440,6 +1441,7 @@
14401441
"unpin-message",
14411442
"unread-chat",
14421443
"update",
1444+
"update-an-app",
14431445
"update-avatar",
14441446
"update-contact",
14451447
"update-label",

0 commit comments

Comments
 (0)