# huesos

Basis for developing chat-robots with "Web App" technology for Telegram

## Installation

### AnangoDB

1. Create a Graph with the specified values
**Name:** catalog<br>
<br>
**edgeDefinition:** entry<br>
**fromCollections:** categoy, product<br>
**toCollections:** category

2. Create a Graph with the specified values
**Name:** sessions<br>
<br>
**edgeDefinition:** connect<br>
**fromCollections:** account<br>
**toCollections:** session

3. Create indexes for the "product" collection
**Type:** "Inverted Index"<br>
**Fields:** name.ru<br>
**Analyzer:** "text_ru"<br>
**Search field:** true<br>
**Name:** name_ru<br>
<br>
*Add indexes for all search parameters and for all languages (search language is selected based on the user's language, <br>
otherwise from the default language specified in the active settings from **settings** collection document)*<br>
<br>
*See fields in the `mirzaev/arming_bot/models/product`<br>
**name.ru**, **description.ru** and **compatibility.ru***
    
4. Create a View with the specified values
**type:** search-alias (you can also use "arangosearch")<br>
**name:** **product**s_search<br>
**indexes:**
```json
"indexes": [
    {
      "collection": "product",
      "index": "title_ru" # THIS IS AN EXAMPLE
    }
  ]
```

### NGINX

1. Example of NGINX server file
```nginx
location / {
    try_files $uri $uri/ /index.php;
}

location ~ /(?<type>categories|products) {
    root /var/www/arming_bot/mirzaev/arming_bot/system/storage;
    try_files $uri =404;
}

location ~ \.php$ {
    ...
}
```

### SystemD (or any alternative you like)

1. Execute: `sudo cp telegram-huesos.service /etc/systemd/system/telegram-huesos.service`

*before you execute the command think about **what it does** and whether the **paths** are specified correctly*<br>
*the configuration file is very simple and you can remake it for any alternative to SystemD that you like*

## Settings
Settings of chat-robot and Web App<br>
<br>
Make sure you have a **settings** collection (can be created automatically) and at least one document with the "status" parameter set to "active"
```json
{
    "status": "active"
}
```

### language
Language for system messages if user language could not be determined<br>
<br>
**Value:** en

## Suspensions
System of suspensions of chat-robot and Web App<br>
<br>
Make sure you have a **suspension** collection (can be created automatically)
```json
{
    "end": 1726068961,
    "targets": {
        "chat-robot": true,
        "web app": true
    }
    "access": {
        "tester": true,
        "developer": true
    },
    "description": {
        "ru": "Разрабатываю каталог, поиск и корзину",
        "en": "I am developing a catalog, search and cart"
    }
}
```