Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/s-4i5/quote-service
Сервис, цитирующий отправленные сообщения группе в вк
https://github.com/s-4i5/quote-service
openfeign postgresql redis-cache spring spring-boot spring-cloud spring-mvc vk-api vk-bot
Last synced: 25 days ago
JSON representation
Сервис, цитирующий отправленные сообщения группе в вк
- Host: GitHub
- URL: https://github.com/s-4i5/quote-service
- Owner: S-4I5
- Created: 2024-08-15T14:23:55.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-08-15T15:13:02.000Z (6 months ago)
- Last Synced: 2024-11-16T22:35:05.199Z (3 months ago)
- Topics: openfeign, postgresql, redis-cache, spring, spring-boot, spring-cloud, spring-mvc, vk-api, vk-bot
- Language: Java
- Homepage:
- Size: 31.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Quote-service
Spring boot сервис, цитирующий отправленные сообщения группе в вк
## 1. ENVs
| Name | Type | Default value | Description |
|-------------------------|--------|-------------------------------------------|-----------------------------|
| PORT | String | 8080 | Servet port |
| REDIS_HOST | String | localhost | Redis host |
| REDIS_PORT | String | 6379 | Redis port |
| DATABASE_URL | String | jdbc:postgresql://localhost:5432/postgres | DB connection url |
| DATABASE_USERNAME | String | postgres | DB username |
| DATABASE_PASSWORD | String | password | DB password |
| LOGGING_LEVEL | String | trace | Logging level |
| INIT_GROUP_API_VERSION | String | 5.199 | Default source api version |
| INIT_GROUP_ACCESS_TOKEN | String | token | Default source access token |
| INIT_GROUP_SECRET | String | secret | Default source secret |## 2. Deployment via docker-compose
```
docker-compose up
```## 3. Swagger documentation
```
http://localhost:8080/api/v1/swagger-ui/index.html#/
```## 4. Vk Setup
Для работы сервиса необходимо подключить `Callback Api`, ибо именно через него он узнаёт о поступлении сообщений.
Подробнее об его работе можно прочитать в [документации](https://dev.vk.com/ru/api/callback/getting-started).
Необходимо настроить отправку callback'ов на отправку сообщений. Сервис может работать сразу с несколькими группами, и
для того, чтобы сервис обрабатывал входящие сообщения от источника, его нужно "зарегистрировать" в application.yaml. Это
можно сделать либо изменив данные "базового" источника, указав нужные через [env](##ENVs), либо же добавить туда новый.* Пример:
```
vk:
....
sources:
testGroup: //'Id' группы, который нужно будет указаывать в url
version: someVersion(ex: 5.199) //Версия
access-token: someToken //Токен группы (Необходимы права на управление группой и доступ к сообещниям)
secret: someSecret //Код api, который будет присылаться для верификации
```## 5. Quick workflow explanation
P.S. Подробные Json-shemas можно найти в [сваггере](##Swagger documentation)
или [документации Vk Api](https://dev.vk.com/ru/reference/json-schema)Для отправки callback'а источнику необходимо обратиться к POST http://{someHost}/api/v1/callback/{groupId}
При приходе любого callback'а перед его обработкой проверяется secret источника. Если строки не совпадают - вылетает
403.
Далее обрабатываются два типо сообщений: "confirmation" и "message_new"
* "Type `"confirmation"`:
Запрашивает код для подтверждения, после подтверждения которого `Callback api` начинает присылать сервису сообщения. Для
его обработки сервис обращается к [Vk Api](https://dev.vk.com/ru/method/groups.getCallbackConfirmationCode) и получает необходимый код по
uri : `/method/groups.getCallbackConfirmationCode`, после чего возвращает его.* Type `"message_new"`:
Сообщает сервису о поступлении нового сообщения. Для его обработки сервис обращается к [Vk Api](https://dev.vk.com/ru/method/users.get)
uri : `/method/users.get` для получения инициалов отправителя, чтобы использовать их в ответном сообщении. Для
оптимизации этой операции есть redis cache, в котором сервис перед запросом проверяет наличие данной информации. После
получения сервис инициирует отправку кастомизированного сообщения пользователю используя [Vk Api](https://dev.vk.com/ru/method/messages.send)
uri : `/method/messages.send`, после чего сохраняет отправленное сообщение в PostgreSql.