{"id":15211202,"url":"https://github.com/s-4i5/quote-service","last_synced_at":"2026-03-14T05:08:32.820Z","repository":{"id":253266090,"uuid":"842982030","full_name":"S-4I5/quote-service","owner":"S-4I5","description":"Сервис, цитирующий отправленные сообщения группе в вк","archived":false,"fork":false,"pushed_at":"2024-08-15T15:13:02.000Z","size":32,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-10T22:59:29.106Z","etag":null,"topics":["openfeign","postgresql","redis-cache","spring","spring-boot","spring-cloud","spring-mvc","vk-api","vk-bot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/S-4I5.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-15T14:23:55.000Z","updated_at":"2024-08-15T15:13:05.000Z","dependencies_parsed_at":"2024-08-15T16:35:05.733Z","dependency_job_id":"e60eb076-bcdc-43a4-b450-c5a95629f744","html_url":"https://github.com/S-4I5/quote-service","commit_stats":null,"previous_names":["s-4i5/quote-service"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/S-4I5%2Fquote-service","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/S-4I5%2Fquote-service/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/S-4I5%2Fquote-service/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/S-4I5%2Fquote-service/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/S-4I5","download_url":"https://codeload.github.com/S-4I5/quote-service/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242940017,"owners_count":20209883,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["openfeign","postgresql","redis-cache","spring","spring-boot","spring-cloud","spring-mvc","vk-api","vk-bot"],"created_at":"2024-09-28T08:21:05.571Z","updated_at":"2025-12-16T04:58:13.454Z","avatar_url":"https://github.com/S-4I5.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Quote-service\n\nSpring boot сервис, цитирующий отправленные сообщения группе в вк\n\n## 1. ENVs\n\n| Name                    | Type   | Default value                             | Description                 |\n|-------------------------|--------|-------------------------------------------|-----------------------------|\n| PORT                    | String | 8080                                      | Servet port                 |\n| REDIS_HOST              | String | localhost                                 | Redis host                  |\n| REDIS_PORT              | String | 6379                                      | Redis port                  |\n| DATABASE_URL            | String | jdbc:postgresql://localhost:5432/postgres | DB connection url           |\n| DATABASE_USERNAME       | String | postgres                                  | DB username                 |\n| DATABASE_PASSWORD       | String | password                                  | DB password                 |\n| LOGGING_LEVEL           | String | trace                                     | Logging level               |\n| INIT_GROUP_API_VERSION  | String | 5.199                                     | Default source api version  |\n| INIT_GROUP_ACCESS_TOKEN | String | token                                     | Default source access token |\n| INIT_GROUP_SECRET       | String | secret                                    | Default source secret       |\n\n## 2. Deployment via docker-compose\n\n```\ndocker-compose up\n```\n\n## 3. Swagger documentation\n\n```\nhttp://localhost:8080/api/v1/swagger-ui/index.html#/\n```\n\n## 4. Vk Setup\n\nДля работы сервиса необходимо подключить `Callback Api`, ибо именно через него он узнаёт о поступлении сообщений.\nПодробнее об его работе можно прочитать в [документации](https://dev.vk.com/ru/api/callback/getting-started).\nНеобходимо настроить отправку callback'ов на отправку сообщений. Сервис может работать сразу с несколькими группами, и\nдля того, чтобы сервис обрабатывал входящие сообщения от источника, его нужно \"зарегистрировать\" в application.yaml. Это\nможно сделать либо изменив данные \"базового\" источника, указав нужные через [env](##ENVs), либо же добавить туда новый.\n\n* Пример:\n\n```\nvk:\n  ....\n  sources:\n    testGroup:                        //'Id' группы, который нужно будет указаывать в url\n      version: someVersion(ex: 5.199) //Версия\n      access-token: someToken         //Токен группы (Необходимы права на управление группой и доступ к сообещниям)\n      secret: someSecret              //Код api, который будет присылаться для верификации\n```\n\n## 5. Quick workflow explanation\n\nP.S. Подробные Json-shemas можно найти в [сваггере](##Swagger documentation)\nили [документации Vk Api](https://dev.vk.com/ru/reference/json-schema)\n\nДля отправки callback'а источнику необходимо обратиться к POST http://{someHost}/api/v1/callback/{groupId}\n\nПри приходе любого callback'а перед его обработкой проверяется secret источника. Если строки не совпадают - вылетает\n\n403.\n\nДалее обрабатываются два типо сообщений: \"confirmation\" и \"message_new\"\n\n* \"Type `\"confirmation\"`:\n\n  Запрашивает код для подтверждения, после подтверждения которого `Callback api` начинает присылать сервису сообщения. Для\n  его обработки сервис обращается к [Vk Api](https://dev.vk.com/ru/method/groups.getCallbackConfirmationCode) и получает необходимый код по\n  uri : `/method/groups.getCallbackConfirmationCode`, после чего возвращает его.\n\n* Type `\"message_new\"`:\n\n  Сообщает сервису о поступлении нового сообщения. Для его обработки сервис обращается к [Vk Api](https://dev.vk.com/ru/method/users.get)\n  uri : `/method/users.get` для получения инициалов отправителя, чтобы использовать их в ответном сообщении. Для\n  оптимизации этой операции есть redis cache, в котором сервис перед запросом проверяет наличие данной информации. После\n  получения сервис инициирует отправку кастомизированного сообщения пользователю используя [Vk Api](https://dev.vk.com/ru/method/messages.send)\n  uri : `/method/messages.send`, после чего сохраняет отправленное сообщение в PostgreSql.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fs-4i5%2Fquote-service","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fs-4i5%2Fquote-service","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fs-4i5%2Fquote-service/lists"}