An open API service indexing awesome lists of open source software.

https://github.com/green-api/green-api-chat


https://github.com/green-api/green-api-chat

Last synced: 11 months ago
JSON representation

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