Create local evolution-api workspace skill for development reuse
Build and Deploy (Gitea) / build-and-deploy (push) Successful in 59s
Details
Build and Deploy (Gitea) / build-and-deploy (push) Successful in 59s
Details
This commit is contained in:
parent
eda76c8914
commit
b6a57c6f00
|
|
@ -0,0 +1,103 @@
|
|||
---
|
||||
name: evolution-api
|
||||
description: Manage connection, creation, deletion and messaging workflows for WhatsApp using Evolution API v2.
|
||||
---
|
||||
|
||||
# Evolution API v2 Integration & Troubleshooting Skill
|
||||
|
||||
This guide outlines how to configure, connect, and troubleshoot WhatsApp integration using Evolution API (v2.x.x) across SaaS environments.
|
||||
|
||||
## 1. Instance Creation Payload (Evolution API v2)
|
||||
When creating a WhatsApp instance via `POST /instance/create`, the endpoint requires specific fields. In version **v2.3.x or higher**, the parameter `"integration": "WHATSAPP-BAILEYS"` is **mandatory**. Omitting it will result in a `400 Bad Request` with the error `Invalid integration`.
|
||||
|
||||
### Request Configuration:
|
||||
- **Method**: `POST`
|
||||
- **URL**: `https://<evolution_url>/instance/create`
|
||||
- **Headers**:
|
||||
- `apikey`: `<global_api_key>`
|
||||
- `Content-Type`: `application/json`
|
||||
- **Body**:
|
||||
```json
|
||||
{
|
||||
"instanceName": "microtecflix",
|
||||
"token": "optional_custom_token",
|
||||
"qrcode": true,
|
||||
"integration": "WHATSAPP-BAILEYS"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. Checking Connection State
|
||||
To check if the WhatsApp instance is connected:
|
||||
- **Method**: `GET`
|
||||
- **URL**: `https://<evolution_url>/instance/connectionState/<instanceName>`
|
||||
- **Headers**: `apikey: <global_api_key>`
|
||||
- **Response**: Returns the state (e.g., `open`, `connecting`, `closed`).
|
||||
- If it returns `open`, the device is successfully paired.
|
||||
|
||||
---
|
||||
|
||||
## 3. Retrieving the QR Code
|
||||
To fetch the QR code for scanning:
|
||||
- **Method**: `GET`
|
||||
- **URL**: `https://<evolution_url>/instance/connect/<instanceName>`
|
||||
- **Headers**: `apikey: <global_api_key>`
|
||||
- **Response**: Returns a JSON containing `{ base64: "data:image/png;base64,...", pairingCode: "..." }`. Display this `base64` image on the frontend.
|
||||
|
||||
---
|
||||
|
||||
## 4. Troubleshooting: "Não foi possível conectar o dispositivo" / Connection Failure
|
||||
A common error during QR code scanning is `Não foi possível conectar o dispositivo` on the phone, while the API is stuck. This is caused by a corrupted Baileys session cache in the Evolution API container.
|
||||
|
||||
### Resolution Steps:
|
||||
1. **Do not use logout only**: Just running `DELETE /instance/logout/<instanceName>` only closes the current session but leaves the corrupted files on the server.
|
||||
2. **Delete the Instance**: Completely remove the instance from the server using the delete endpoint:
|
||||
- **Method**: `DELETE`
|
||||
- **URL**: `https://<evolution_url>/instance/delete/<instanceName>`
|
||||
- **Headers**: `apikey: <global_api_key>`
|
||||
3. **Re-create and Re-scan**: Call the create endpoint (`POST /instance/create`) again with the Baileys integration. This allocates a clean session directory, generating a fresh QR Code that scans instantly.
|
||||
|
||||
---
|
||||
|
||||
## 5. Reference Implementation (Node.js/Express)
|
||||
|
||||
```typescript
|
||||
import axios from 'axios';
|
||||
|
||||
async function getQRCode(apiUrl: string, apiKey: string, instance: string) {
|
||||
const headers = { apikey: apiKey };
|
||||
|
||||
// 1. Check connection state
|
||||
try {
|
||||
const stateRes = await axios.get(`${apiUrl}/instance/connectionState/${instance}`, { headers });
|
||||
if (stateRes.data?.instance?.state === 'open') {
|
||||
return { connected: true };
|
||||
}
|
||||
} catch (err: any) {
|
||||
if (err.response?.status === 404) {
|
||||
// 2. Automatically create instance if not found
|
||||
await axios.post(`${apiUrl}/instance/create`, {
|
||||
instanceName: instance,
|
||||
qrcode: true,
|
||||
integration: 'WHATSAPP-BAILEYS'
|
||||
}, { headers });
|
||||
} else {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
// 3. Fetch fresh connection QR Code
|
||||
const connectRes = await axios.get(`${apiUrl}/instance/connect/${instance}`, { headers });
|
||||
return {
|
||||
connected: false,
|
||||
qrCode: connectRes.data.base64 || connectRes.data.qrcode || null
|
||||
};
|
||||
}
|
||||
|
||||
async function resetInstance(apiUrl: string, apiKey: string, instance: string) {
|
||||
const headers = { apikey: apiKey };
|
||||
// Completely delete the instance to wipe the Baileys session cache
|
||||
await axios.delete(`${apiUrl}/instance/delete/${instance}`, { headers });
|
||||
}
|
||||
```
|
||||
Loading…
Reference in New Issue