Synaplan
기업을 위한 오픈소스 AI 플랫폼
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
An enterprise-grade AI call center system built on FreeSwitch and Spring Boot, providing multi-tenant, multi-skill-group, and intelligent routing. | 基于 FreeSwitch 和 Spring Boot 构建的企业级 AI 呼叫中心系统,支持多租户、多技能组、智能路由等完整呼叫中心功能。
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗An enterprise-grade AI call center system built on FreeSwitch and Spring Boot, providing multi-tenant, multi-skill-group, and intelligent routing — a complete set of call center capabilities.
中文 | English
🌟 If this project helps you, please give it a ⭐ Star! 🙏
Official site: https://dongjb741280.github.io/ai-call-center/
This is an AI call center solution built on a microservices architecture, integrating FreeSwitch as the call engine and providing complete call management, agent management, intelligent routing, monitoring and statistics. It supports multi-company and multi-skill-group management, with enterprise-grade high-concurrency and high-availability characteristics.
This project is primarily intended for large-scale human inbound and outbound calling scenarios, or as the foundation for AI-powered unattended calling.
For a pure AI call center (unattended-first), please refer to:
ai-call-center/
├── voxai-common/ # Core business module (data layer)
├── voxai-admin/ # Admin API service (port 7100)
├── voxai-call/ # FreeSwitch integration service (port 7200)
├── voxai-ivr/ # IVR engine service (port 7300)
├── freeswitch/ # FreeSwitch configuration and Docker image
├── portal/ # Product portal (VoxHub)
├── docs/ # Business docs (scope/flows/data model/engine interfaces)
├── .github/workflows/ # GitHub Actions (portal CI/CD)
├── .gitlab-ci.yml # GitLab CI/CD pipeline
└── Dockerfile # Multi-stage Docker build
cc_ivr_workflow.content into a node graph, executes by play/input/transferplayback / play_and_get_digitsvoxai-call on completion to route to skill group/agent/VDN/hangupcc_vdn_phone → cc_vdn_code, selects the active route by cc_vdn_schedule (weekday/date/time range)cc_vdn_config.route_type): skill group / playback / IVR / agent / outboundplay_and_get_digits after playback, match against cc_vdn_dtmf to route to skill group/IVR/route code/agent extension/hangupvoxai-ivr parses the cc_ivr_workflow definition, executes play/input/transfer, then hands backdocs/sql/ (voxai.sql full database dump, migration_*.sql incremental migrations)Edit application-dev.properties:
# Database
spring.datasource.url=jdbc:mysql://localhost:3306/voxai
spring.datasource.username=root
spring.datasource.password=your_password
# Redis
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=your_redis_password
# MinIO
voxai.minio.endpoint=http://localhost:9000
voxai.minio.access.key=admin
voxai.minio.secret.key=your_secret_key
# Build all modules (skip tests)
mvn clean install -DskipTests
# Build a single module
mvn clean install -pl voxai-admin -DskipTests
# voxai-admin (admin backend, port 7100)
java -jar voxai-admin/target/voxai-admin-1.0.0.jar
# voxai-call (call service, port 7200)
java -jar voxai-call/target/voxai-call-1.0.0.jar
# voxai-ivr (IVR engine, port 7300)
java -jar voxai-ivr/target/voxai-ivr-1.0.0.jar
# Build and push to Harbor
mvn compile jib:build -pl voxai-admin,voxai-call \
-DsendCredentialsOverHttp=true \
-Ddocker.repostory=localhost:8444 \
-Djib.to.tags=latest
# Or build to the local Docker Daemon
mvn compile jib:dockerBuild -pl voxai-admin
# Pull from Harbor and start
docker pull localhost:8444/voxai/voxai-admin:latest
docker run -d --name voxai-admin --network host \
localhost:8444/voxai/voxai-admin:latest
http://localhost:7100/voxai-admin/swagger-ui/index.htmlhttp://localhost:7200/voxai-call/swagger-ui/index.htmlCompile → Unit Tests → SonarQube → Package → Jib Build (Harbor) → Nexus Publish → 1Panel API Deploy
↓
Watchtower (k8s-work-4)
Dual safeguard, auto pull & restart
localhost:8444)images/pull + containers/upgradedocker run -d \
--name watchtower --restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /root/.docker/config.json:/config.json \
-e DOCKER_CONFIG=/ \
containrrr/watchtower \
--interval 30 --cleanup \
voxai-admin voxai-call
Depends on the Harbor login credentials in
/root/.docker/config.json
| Variable | Description |
|---|---|
HARBOR_REGISTRY | Harbor image registry address |
HARBOR_REGISTRY_USER | Harbor username |
HARBOR_REGISTRY_PASS | Harbor password |
ONEPANEL_URL | 1Panel panel address (Option A) |
ONEPANEL_API_KEY | 1Panel API Key (Option A) |
SONAR_HOST_URL | SonarQube server address |
SONAR_TOKEN | SonarQube Token |
NEXUS_URL / NEXUS_USER / NEXUS_PASSWORD | Nexus repository credentials |
Admin context path
/voxai-admin(port 7100), call context path/voxai-call(port 7200).
POST /voxai-admin/index/login - admin loginGET /voxai-admin/index/logout - admin logoutGET /voxai-admin/index/health - admin health checkGET /voxai-call/index/health - call health check/config)GET /voxai-admin/config/agent - agent listPOST /voxai-admin/config/agent - add agentGET /voxai-admin/config/group - skill group listPOST /voxai-admin/config/group - add skill groupGET /voxai-admin/config/group/agent/{id} - agents in a skill group/cti)POST /voxai-call/cti/call/makeCall - make a callPOST /voxai-call/cti/call/hangup - hang upPOST /voxai-call/cti/call/hold / cancelHold - hold / unholdPOST /voxai-call/cti/call/readyMute / cancelMute - mute / unmutePOST /voxai-call/cti/agent/ready / notReady - set ready / not readyPOST /voxai-call/cti/agent/logout - agent logoutGET /voxai-call/cti/admin/call - call listGET /voxai-admin/index/health - voxai-admin health check (port 7100)GET /voxai-call/index/health - voxai-call health check (port 7200)src/main/java/
├── com.voxai.api/ # API service
│ ├── web/ # Controller layer
│ ├── service/ # Service layer
│ └── configration/ # Configuration classes
├── com.voxai.core/ # Core module
│ ├── entity/ # Entities
│ ├── mapper/ # Data access layer
│ └── enums/ # Enums
└── com.voxai/ # FreeSwitch integration
├── cc/ # Call control
├── fs/ # FreeSwitch event handling
└── websocket/ # WebSocket communication
A: Refer to the configuration files under freeswitch/, which support both CentOS and Debian.
A: Implement a new assignment algorithm under voxai-call/src/main/java/com/voxai/cc/acd/assign/.
A: Integrate via WebHook callbacks or message queues, supporting HTTP and RabbitMQ.
A: Add new entities and interfaces in the voxai-common module, and implement the concrete business logic in voxai-admin.
This project is licensed under the MIT License. See the LICENSE file for details.
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)HARBOR_REGISTRY prefix)Note: This project is for learning and research only. For commercial use, please ensure compliance with relevant laws and regulations.