https://github.com/green-api/green-api-chat
https://github.com/green-api/green-api-chat
Last synced: 11 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/green-api/green-api-chat
- Owner: green-api
- Created: 2025-07-02T11:39:24.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-07-31T13:35:24.000Z (11 months ago)
- Last Synced: 2025-08-01T10:49:34.772Z (11 months ago)
- Language: TypeScript
- Size: 1.26 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# π¦ sw-console-chat
Chat module for personal accounts using [GREEN-API](https://green-api.com/en).
## π₯ Installation
To install dependencies:
```bash
npm install
```
## π Development Mode
Start the development server:
```bash
npm run dev
```
## π¦ Production Build
Build the app for production:
```bash
npm run build
```
Compiled files will be located in the `dist/` directory.
---
## π Authorization Methods
You can provide authorization data to the chat module using either **postMessage** or **URL query parameters**.
---
### 1. Authorization via `postMessage`
To send authorization data from a parent window to an embedded iframe, use the `postMessage` API.
#### Example:
```ts
iframeReference.current?.contentWindow?.postMessage(
{
type: MessageEventTypeEnum.INIT,
payload: {
login: login,
apiTokenUser: apiTokenUser,
idUser: idUser,
idInstance: instanceData.idInstance,
apiTokenInstance: instanceData.apiTokenInstance,
apiUrl: instanceData.apiUrl,
mediaUrl: instanceData.mediaUrl,
tariff: instanceData.tariff,
locale: resolvedLanguage,
theme: currentTheme,
platform: platform,
projectId: projectId,
// customization
brandDescription: 'Welcome to our support chat!',
logo: 'https://example.com/logo.png',
},
},
CHAT_APP_URL // Replace with the actual iframe URL
);
```
#### Payload Fields
| Field | Type | Description |
| ------------------ | --------------------- | ------------------------------------------- |
| `login` | `string` | User login |
| `apiTokenUser` | `string` | User API token |
| `idUser` | `string` | User ID |
| `idInstance` | `number` | Instance ID |
| `apiTokenInstance` | `string` | API token for the instance |
| `apiUrl` | `string` | Base API URL |
| `mediaUrl` | `string` | Media upload URL |
| `tariff` | `TariffsEnum` | Tariff plan (see below) |
| `locale` | `string \| undefined` | Optional language code (e.g., `en`, `ru`) |
| `theme` | `ThemesEnum` | Theme mode (see below) |
| `platform` | `string` | Platform ID (e.g., `web`, `android`, `ios`) |
| `projectId` | `string` | Project identifier |
| `brandDescription` | `string` | Welcome message when no chat is selected |
| `logo` | `string` | Image/logo URL above the description |
#### TariffsEnum
```ts
export const enum TariffsEnum {
Developer = 'DEVELOPER',
Business = 'BUSINESS',
BusinessUSD = 'BUSINESS_USD',
BusinessKZT = 'BUSINESS_KZT',
}
```
#### ThemesEnum
```ts
export const enum ThemesEnum {
Default = 'default',
Dark = 'dark',
}
```
---
### 2. Authorization via URL Query Parameters
You can also pass authorization and customization data via the URL:
```
http://localhost:5173/?idInstance=YOUR_ID&apiTokenInstance=YOUR_API_TOKEN&apiUrl=https://api.green-api.com/&mediaUrl=https://media.green-api.com/&lng=ru&dsc=ΠΠΎΠ±ΡΠΎ%20ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°ΡΡ%20Π²%20ΡΠ°Ρ&logo=https://example.com/logo.png
```
#### Required Query Parameters
| Parameter | Description |
| ------------------ | -------------------------- |
| `idInstance` | Instance ID |
| `apiTokenInstance` | API token for the instance |
| `apiUrl` | Base API URL |
| `mediaUrl` | Media API URL |
#### Optional Customization Parameters
| Parameter | Description |
|-----------|----------------------------------------------------------|
| `lng` | Language (`ru`, `en`, `he`) |
| `dsc` | Description text on home screen when no chat is selected |
| `logo` | Image/logo URL shown above the description |
| `chatId` | If you need only one chat. In format XXXXXXXXXXX@c.us |
## π License
MIT License
---
# π¦ sw-console-chat
ΠΠΎΠ΄ΡΠ»Ρ ΡΠ°ΡΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ [GREEN-API](https://green-api.com/).
## π₯ Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ:
```bash
npm install
```
## π Π Π΅ΠΆΠΈΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
ΠΠ°ΠΏΡΡΠΊ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ:
```bash
npm run dev
```
## π¦ Π‘Π±ΠΎΡΠΊΠ° Π΄Π»Ρ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π°
Π‘Π±ΠΎΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π°:
```bash
npm run build
```
Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π±ΡΠ΄ΡΡ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡΡ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ `dist/`.
---
## π ΠΠ΅ΡΠΎΠ΄Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ Π² ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ°ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ **postMessage** ΠΈΠ»ΠΈ **ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² URL**.
---
### 1. ΠΠ²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· `postMessage`
Π§ΡΠΎΠ±Ρ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ· ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Π² Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ iframe, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ API `postMessage`.
#### ΠΡΠΈΠΌΠ΅Ρ:
```ts
iframeReference.current?.contentWindow?.postMessage(
{
type: MessageEventTypeEnum.INIT,
payload: {
login: login,
apiTokenUser: apiTokenUser,
idUser: idUser,
idInstance: instanceData.idInstance,
apiTokenInstance: instanceData.apiTokenInstance,
apiUrl: instanceData.apiUrl,
mediaUrl: instanceData.mediaUrl,
tariff: instanceData.tariff,
locale: resolvedLanguage,
theme: currentTheme,
platform: platform,
projectId: projectId,
// ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΡ
brandDescription: 'ΠΠΎΠ±ΡΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°ΡΡ Π² Π½Π°Ρ ΡΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ!',
logo: 'https://example.com/logo.png',
},
},
CHAT_APP_URL // ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π° ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ URL iframe
);
```
#### ΠΠΎΠ»Ρ payload
| ΠΠΎΠ»Π΅ | Π’ΠΈΠΏ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
| ------------------ | --------------------- | ----------------------------------------------------- |
| `login` | `string` | ΠΠΎΠ³ΠΈΠ½ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ |
| `apiTokenUser` | `string` | API ΡΠΎΠΊΠ΅Π½ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ |
| `idUser` | `string` | ID ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ |
| `idInstance` | `number` | ID ΠΈΠ½ΡΡΠ°Π½ΡΠ° |
| `apiTokenInstance` | `string` | API ΡΠΎΠΊΠ΅Π½ ΠΈΠ½ΡΡΠ°Π½ΡΠ° |
| `apiUrl` | `string` | ΠΠ°Π·ΠΎΠ²ΡΠΉ URL API |
| `mediaUrl` | `string` | URL Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΌΠ΅Π΄ΠΈΠ° |
| `tariff` | `TariffsEnum` | Π’Π°ΡΠΈΡΠ½ΡΠΉ ΠΏΠ»Π°Π½ (ΡΠΌ. Π½ΠΈΠΆΠ΅) |
| `locale` | `string \| undefined` | ΠΠ΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΡΠ·ΡΠΊΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, `en`, `ru`, `he`) |
| `theme` | `ThemesEnum` | Π’Π΅ΠΌΠ° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° (ΡΠΌ. Π½ΠΈΠΆΠ΅) |
| `platform` | `string` | ΠΠ»Π°ΡΡΠΎΡΠΌΠ° (`web`, `android`, `ios`) |
| `projectId` | `string` | ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° |
| `brandDescription` | `string` | Π’Π΅ΠΊΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΡΠ°Ρ Π½Π΅ Π²ΡΠ±ΡΠ°Π½ |
| `logo` | `string` | Π‘ΡΡΠ»ΠΊΠ° Π½Π° Π»ΠΎΠ³ΠΎΡΠΈΠΏ, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΠΉ Π½Π°Π΄ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ |
#### TariffsEnum
```ts
export const enum TariffsEnum {
Developer = 'DEVELOPER',
Business = 'BUSINESS',
BusinessUSD = 'BUSINESS_USD',
BusinessKZT = 'BUSINESS_KZT',
}
```
#### ThemesEnum
```ts
export const enum ThemesEnum {
Default = 'default',
Dark = 'dark',
}
```
---
### 2. ΠΠ²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ URL
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ URL ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
```
http://localhost:5173/?idInstance=YOUR_ID&apiTokenInstance=YOUR_API_TOKEN&apiUrl=https://api.green-api.com/&mediaUrl=https://media.green-api.com/&lng=ru&dsc=ΠΠΎΠ±ΡΠΎ%20ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°ΡΡ%20Π²%20ΡΠ°Ρ&logo=https://example.com/logo.png
```
#### ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ
| ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
| ------------------ | ---------------------------- |
| `idInstance` | ID ΠΈΠ½ΡΡΠ°Π½ΡΠ° |
| `apiTokenInstance` | API ΡΠΎΠΊΠ΅Π½ ΠΈΠ½ΡΡΠ°Π½ΡΠ° |
| `apiUrl` | ΠΠ°Π·ΠΎΠ²ΡΠΉ URL API |
| `mediaUrl` | URL Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΌΠ΅Π΄ΠΈΠ°ΡΠ°ΠΉΠ»ΠΎΠ² |
#### ΠΠ΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΠΈ
| ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|----------|-----------------------------------------------------------------|
| `lng` | Π―Π·ΡΠΊ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° (`ru`, `en`, `he`) |
| `dsc` | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΠΎΠ΅ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅, ΠΊΠΎΠ³Π΄Π° ΡΠ°Ρ Π½Π΅ Π²ΡΠ±ΡΠ°Π½ |
| `logo` | Π‘ΡΡΠ»ΠΊΠ° Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅/Π»ΠΎΠ³ΠΎΡΠΈΠΏ, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΠΎΠ΅ Π½Π°Π΄ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ |
| `chatId` | ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Ρ. Π€ΠΎΡΠΌΠ°Ρ XXXXXXXXXXX@c.us |
## π ΠΠΈΡΠ΅Π½Π·ΠΈΡ
ΠΠΈΡΠ΅Π½Π·ΠΈΡ MIT