Skip to content

Commit 200bcdf

Browse files
committed
README updated
1 parent 6f7fb89 commit 200bcdf

File tree

2 files changed

+239
-16
lines changed

2 files changed

+239
-16
lines changed

README.md

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
# whatsapp-api-webhook-server-python-v2
22

33
![](https://img.shields.io/badge/license-CC%20BY--ND%204.0-green)
4-
![](https://img.shields.io/pypi/status/whatsapp-api-webhook-server-python)
5-
![](https://img.shields.io/pypi/pyversions/whatsapp-api-webhook-server-python)
6-
![](https://img.shields.io/github/actions/workflow/status/green-api/whatsapp-api-webhook-server-python/python-package.yml)
7-
![](https://img.shields.io/pypi/dm/whatsapp-api-webhook-server-python)
4+
![](https://img.shields.io/pypi/status/whatsapp-api-webhook-server-python-v2)
5+
![](https://img.shields.io/pypi/pyversions/whatsapp-api-webhook-server-python-v2)
6+
![](https://img.shields.io/pypi/dm/whatsapp-api-webhook-server-python-v2)
87

98
## Support links
109

@@ -18,20 +17,19 @@
1817
[![News](https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white)](https://t.me/green_api)
1918
[![News](https://img.shields.io/badge/WhatsApp-25D366?style=for-the-badge&logo=whatsapp&logoColor=white)](https://whatsapp.com/channel/0029VaLj6J4LNSa2B5Jx6s3h)
2019

21-
- [Документация на русском языке](https://github.com/green-api/whatsapp-api-webhook-server-python-v2/blob/master/docs/README.ru.md).
20+
- [Документация на русском языке](https://github.com/green-api/whatsapp-api-webhook-server-python-v2/blob/master/README.ru.md).
2221

23-
`whatsapp-api-webhook-server-python-v2` is a library for receiving and processing webhooks from [green-api.com](https://green-api.com/en/), based on `FastAPI` server. You should get a registration token and an account ID in
24-
your [personal cabinet](https://console.green-api.com/) to use the library. There is a free developer account tariff.
22+
`whatsapp-api-webhook-server-python-v2` is a library for receiving and processing webhooks from [green-api.com](https://green-api.com/en/), based on `FastAPI` server.
23+
24+
You should get a registration token and an account ID in your [personal cabinet](https://console.green-api.com/) to use the library. To develop, you can use a free account with the "Developer" tariff.
2525

2626
## API
2727

28-
The documentation for the REST API can be found at the [link](https://green-api.com/en/docs/). The library is a wrapper
29-
for the REST API, so the documentation at the link above also applies.
28+
The documentation for the REST API can be found at the [link](https://green-api.com/en/docs/). The library is a wrapper for the REST API, so the documentation at the link above also applies.
3029

3130
## Authorization
3231

33-
To send a message or perform other Green API methods, the WhatsApp account in the phone app must be authorized. To
34-
authorize the account, go to your [cabinet](https://console.green-api.com/) and scan the QR code using the WhatsApp app.
32+
To send a message or perform other Green API methods, the WhatsApp account in the phone app must be authorized. To authorize the account, go to your [cabinet](https://console.green-api.com/) and scan the QR code using the WhatsApp app.
3533

3634
## Examples of preparing the environment
3735

@@ -90,14 +88,14 @@ Library installation:
9088
python3 -m pip install whatsapp-api-webhook-server-python-v2
9189
```
9290

93-
As an example you can download and run [our script](
94-
https://github.com/green-api/whatsapp-api-webhook-server-python-v2/blob/master/examples/receive_all_with_counter.py
95-
).
91+
As an example you can download and run [our script](https://github.com/green-api/whatsapp-api-webhook-server-python-v2/blob/master/examples/receive_all_with_counter.py):
92+
9693

9794
```shell
9895
wget https://raw.githubusercontent.com/green-api/whatsapp-api-webhook-server-python-v2/master/examples/receive_all_with_counter.py
9996
```
10097

98+
10199
```shell
102100
python3 -m receive_all_with_counter.py
103101
```
@@ -149,7 +147,7 @@ Options -> Rules for incoming connections -> Create Rule -> Rule Type = Port Pro
149147
firewall settings. options -> Rules for incoming connections -> Create Rule -> Rule Type = Port, Protocols and Port ->
150148
TCP, specify port, Action -> Allow connection).
151149

152-
### How to run example via docker-compose
150+
### How to run example via Docker
153151

154152
The machine should have Docker installed.
155153

@@ -170,7 +168,7 @@ In this case we run a webhook server on `8000` port inside container and proxy o
170168
In [personal cabinet](https://console.green-api.com/) you
171169
will need to specify the IP (or external machine name) with this (`80`) port.
172170

173-
After starting the container, the container console should receive incoming notifications.
171+
After the container is launched, the data on incoming webhooks will be available in the console.
174172

175173
Also you can run it via `docker compose` (from root repo directory):
176174

README.ru.md

Lines changed: 225 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,225 @@
1+
# whatsapp-api-webhook-server-python-v2
2+
3+
![](https://img.shields.io/badge/license-CC%20BY--ND%204.0-green)
4+
![](https://img.shields.io/pypi/status/whatsapp-api-webhook-server-python-v2)
5+
![](https://img.shields.io/pypi/pyversions/whatsapp-api-webhook-server-python-v2)
6+
![](https://img.shields.io/pypi/dm/whatsapp-api-webhook-server-python-v2)
7+
8+
## Поддержка
9+
10+
[![Support](https://img.shields.io/badge/support@green--api.com-D14836?style=for-the-badge&logo=gmail&logoColor=white)](mailto:support@green-api.com)
11+
[![Support](https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white)](https://t.me/greenapi_support_ru_bot)
12+
[![Support](https://img.shields.io/badge/WhatsApp-25D366?style=for-the-badge&logo=whatsapp&logoColor=white)](https://wa.me/79993331223)
13+
14+
## Руководства и новости
15+
16+
[![Guides](https://img.shields.io/badge/YouTube-%23FF0000.svg?style=for-the-badge&logo=YouTube&logoColor=white)](https://www.youtube.com/@green-api)
17+
[![News](https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white)](https://t.me/green_api)
18+
[![News](https://img.shields.io/badge/WhatsApp-25D366?style=for-the-badge&logo=whatsapp&logoColor=white)](https://whatsapp.com/channel/0029VaHUM5TBA1f7cG29nO1C)
19+
20+
`whatsapp-api-webhook-server-python-v2` - библиотека для получения и обработки вебхуков из мессенджера WhatsApp через API сервиса [green-api.com](https://green-api.com/), в основе которой лежит `FastAPI` сервер.
21+
22+
Чтобы воспользоваться библиотекой, нужно получить регистрационный токен
23+
и ID аккаунта в [личном кабинете](https://console.green-api.com/).
24+
Для разработки можно воспользоваться бесплатным аккаунтом с тарифом "Разработчик".
25+
26+
## API
27+
28+
Документация к REST API находится по [ссылке](https://green-api.com/docs/api/).
29+
Библиотека является оберткой к REST API, поэтому документация по ссылке выше применима и к самой библиотеке.
30+
31+
## Авторизация
32+
33+
Чтобы отправить сообщение или выполнить другие методы Green API, аккаунт WhatsApp в приложении телефона должен быть в авторизованном состоянии. Для авторизации аккаунта перейдите в [личный кабинет](https://console.green-api.com/) и сканируйте QR-код с использованием приложения WhatsApp.
34+
35+
## Примеры подготовки среды
36+
37+
### Пример подготовки среды для Ubuntu Server
38+
39+
#### Обновление системы
40+
41+
Обновим систему:
42+
43+
```shell
44+
sudo apt update
45+
sudo apt upgrade -y
46+
```
47+
48+
#### Брандмауэр
49+
50+
Настроим брандмауэр:
51+
52+
Разрешим соединение по SSH:
53+
54+
```shell
55+
sudo ufw allow ssh
56+
```
57+
58+
Базовые правила:
59+
60+
```shell
61+
sudo ufw default deny incoming
62+
sudo ufw default allow outgoing
63+
```
64+
65+
Разрешаем соединения по HTTP и HTTPS:
66+
67+
```shell
68+
sudo ufw allow http
69+
sudo ufw allow https
70+
```
71+
72+
Активируем брандмауэр:
73+
74+
```shell
75+
sudo ufw enable
76+
```
77+
78+
#### Установка
79+
80+
Необходимо установить систему управления пакетами:
81+
82+
```shell
83+
sudo apt install python3-pip
84+
```
85+
86+
Установка библиотеки:
87+
88+
```shell
89+
python3 -m pip install whatsapp-api-webhook-server-python-v2
90+
```
91+
92+
В качестве примера вы можете скачать и запустить [наш скрипт](https://github.com/green-api/whatsapp-api-webhook-server-python-v2/blob/master/examples/receive_all_with_counter.py). Скрипт отправляет в консоль все входящие уведомления.
93+
94+
```shell
95+
wget https://raw.githubusercontent.com/green-api/whatsapp-api-webhook-server-python-v2/master/examples/receive_all_with_counter.py
96+
```
97+
98+
99+
```shell
100+
python3 -m receive_all_with_counter.py
101+
```
102+
103+
### Пример подготовки среды для Windows Server
104+
105+
#### Установка Python
106+
107+
На сервере должен быть установлен Python. [Инструкция по установке Python](https://www.python.org/downloads/).
108+
109+
#### Как настроить конфигурацию веб-сервера
110+
111+
Для использования IIS (Internet Information Services) в качестве веб-сервера требуется настроить файл
112+
конфигурации `web.config`, чтобы служба IIS могла правильно выполнять код Python. Этот файл располагается в папке
113+
публикации вашего веб-сервера.
114+
115+
После установки интерпретатора следует указать обработчик HttpPlatform в файле `web.config`. Этот обработчик будет
116+
передавать подключения в автономный процесс Python.
117+
118+
Пример конфигурационного файла:
119+
120+
```xml
121+
<?xml version="1.0" encoding="utf-8"?>
122+
<configuration>
123+
<system.webServer>
124+
<handlers>
125+
<add name="PythonHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
126+
</handlers>
127+
<httpPlatform arguments="<Path-to-server-file>\receive_all_with_counter.py.py"
128+
processesPerApplication="16"
129+
processPath="<Path-to-python>\python.exe"
130+
startupTimeLimit="60"
131+
stdoutLogEnabled="true"
132+
stdoutLogFile="<Path-to-log-file>\python.log">
133+
<environmentVariables>
134+
<environmentVariable name="SOME_VARIABLE" value="%SOME_VAR%"/>
135+
</environmentVariables>
136+
</httpPlatform>
137+
</system.webServer>
138+
</configuration>
139+
```
140+
141+
- `<Path-to-python>` - путь к исполняемому файлу интерпретатора Python;
142+
- `<Path-to-server-file>` - путь к исполняемому файлу сервера (например, receive_all_with_counter.py из примера);
143+
- `<Path-to-log-file>` - путь к файлу логов.
144+
145+
Также потребуется открыть соответствующий порт во внешнюю сеть, установив настройки брандмауэра (дополнительные
146+
параметры -> Правила для входящих подключений -> Создать правило -> Тип правила = Порт, Протоколы и порт -> TCP, указать
147+
порт, Действие -> Разрешить соединение).
148+
149+
### Запуск примера сервера с помощью Docker
150+
151+
На машине должен быть установлен Docker.
152+
153+
Чтобы получить образ из Docker Hub, нужно написать команду:
154+
155+
```
156+
sudo docker pull greenapi/whatsapp-api-webhook-server-python-v2
157+
```
158+
159+
Запустим образ в контейнере с указанием порта и отображением консоли:
160+
161+
```
162+
sudo docker run -it -e PORT=8000 -p 80:8000 greenapi/whatsapp-api-webhook-server-python-v2
163+
```
164+
165+
В данном случае webhook-сервер запускается на `8000` порту внутри контейнера и проксируется на `80` порт машины, на которой запускается контейнер
166+
167+
В [личном кабинете](https://console.green-api.com/) необходимо необходимо указать IP (или домен) с этим (`80`) портом.
168+
169+
После старта контейнера в консоли будут доступны данные входящих вебхуков
170+
171+
Также можно запустить пример с помощью `docker compose` (из корневой директории репозитория):
172+
173+
```
174+
docker compose up --build
175+
```
176+
177+
## Запуск сервера
178+
179+
Для использования в ваших решениях, импортируйте `GreenAPIWebhookServer` класс и иницализируйте объект сервера:
180+
181+
```python
182+
from whatsapp_api_webhook_server_python_v2.main import GreenAPIWebhookServer
183+
184+
def event_handler(webhook_type: str, webhook_data: dict):
185+
# Пример функции, в которой необходимо
186+
# разместить вашу логику обработки
187+
...
188+
189+
handler = GreenAPIWebhookServer(
190+
event_handler=event_handler, # Функция обработки вебхуков (см. examples)
191+
host="0.0.0.0", # Ваш хост
192+
port=8080, # Ваш порт
193+
webhook_auth_header=None, # Ожидаемый заголовок авторизации (см. личный кабинет)
194+
)
195+
196+
if __name__ == "__main__":
197+
handler.start()
198+
```
199+
200+
Параметр `event_handler` это ваша функция, которая должна обрабатывать входящие вебхуки.
201+
202+
Аргументы, которые должны быть реализованы в функции:
203+
204+
| Аргумент | Описание |
205+
|---------------------|--------------------------|
206+
| `webhook_type: str` | Тип входящего вебхука |
207+
| `webhook_data: dict`| Данные вебхука |
208+
209+
Пример: [receive_all_with_counter.py](https://github.com/green-api/whatsapp-api-webhook-server-python-v2/blob/master/examples/receive_all_with_counter.py).
210+
211+
Также, если есть необходимость реализовать обарботку входящих данных самостоятельно, вы можете использовать `Pydantic v2` модели, которые находятся в файле `webhook_dto.py`
212+
213+
## Как перенаправить входящие уведомления на веб-сервер
214+
215+
Чтобы перенаправить входящие уведомления, нужно в [личном кабинете](https://console.green-api.com/) установить адрес отправки уведомлений (URL).
216+
217+
## Документация по методам сервиса
218+
219+
[Документация по методам сервиса](https://green-api.com/docs/api/)
220+
221+
## Лицензия
222+
223+
Лицензировано на условиях [
224+
Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0)
225+
](https://creativecommons.org/licenses/by-nd/4.0/). [LICENSE](../LICENSE).

0 commit comments

Comments
 (0)