|
| 1 | +# 📞 CallGate |
| 2 | + |
| 3 | +[](https://opensource.org/licenses/Apache-2.0) |
| 4 | + |
| 5 | +**Call Management API for Android** |
| 6 | + |
| 7 | +CallGate provides programmatic control of phone calls through a REST API, specifically designed for automation scenarios requiring basic call management without voice interaction. |
| 8 | + |
| 9 | +> ⚠️ **No Audio Handling** - This app only manages call initiation/termination, **does NOT handle voice playback or recording** |
| 10 | +
|
| 11 | +## 🌟 Features |
| 12 | + |
| 13 | +- 📲 Start/stop calls via HTTP requests |
| 14 | +- 🔐 Basic authentication protection |
| 15 | +- 📶 Local server operation (no internet required) |
| 16 | +- 🛠️ Simple JSON API structure |
| 17 | + |
| 18 | +## 📌 Related Projects |
| 19 | + |
| 20 | +✅ **SMSGate** - Companion project for SMS management: [https://sms-gate.app/](https://sms-gate.app/) |
| 21 | +_Manage text messages through a similar API-driven approach._ |
| 22 | + |
| 23 | +## 🚀 Getting Started |
| 24 | + |
| 25 | +### Prerequisites |
| 26 | +- Android device with SIM card |
| 27 | +- Network access to the device |
| 28 | + |
| 29 | +### Setup |
| 30 | +1. Install the [APK](https://github.com/call-gate-app/android-app/releases/latest) on your Android device |
| 31 | +2. Start the server by tapping the "Offline" button |
| 32 | +3. Ensure the icon appears in the status bar |
| 33 | +4. Open Settings → Server to view default credentials |
| 34 | + |
| 35 | +## 🛠️ Usage |
| 36 | + |
| 37 | +### API Endpoints |
| 38 | +Base URL: `http://<device-ip>:8084/api/v1` |
| 39 | + |
| 40 | +#### Start a Call |
| 41 | +```http |
| 42 | +POST /calls |
| 43 | +``` |
| 44 | +**Request:** |
| 45 | +```bash |
| 46 | +curl -X POST \ |
| 47 | + -H "Content-Type: application/json" \ |
| 48 | + -u username:password \ |
| 49 | + -d '{"call": {"phoneNumber": "123456789"}}' \ |
| 50 | + http://device-ip:8084/api/v1/calls |
| 51 | +``` |
| 52 | +**Response:** |
| 53 | +- `200 OK`: Call initiated successfully |
| 54 | +- `400 Bad Request`: Invalid request |
| 55 | +- `401 Unauthorized`: Invalid credentials |
| 56 | +- `500 Internal Server Error`: Call failed |
| 57 | + |
| 58 | +#### End Active Call |
| 59 | +```http |
| 60 | +DELETE /calls |
| 61 | +``` |
| 62 | +**Request:** |
| 63 | +```bash |
| 64 | +curl -X DELETE \ |
| 65 | + -u username:password \ |
| 66 | + http://device-ip:8084/api/v1/calls |
| 67 | +``` |
| 68 | +**Response:** |
| 69 | +- `204 No Content`: Call terminated |
| 70 | +<!-- - `404 Not Found`: No active call --> |
| 71 | +- `500 Internal Server Error`: Termination error |
| 72 | + |
| 73 | +## 🔒 Important Notes |
| 74 | + |
| 75 | +- **Call Limitations**: Only manages call initiation/termination - no voice capabilities |
| 76 | +- Security Recommendations: |
| 77 | + - Rotate credentials regularly |
| 78 | + - Restrict to trusted networks |
| 79 | + - Consider encryption for remote access |
| 80 | + |
| 81 | +## 📌 Project Status |
| 82 | + |
| 83 | +**Active Development** |
| 84 | + |
| 85 | +⚠️ **Experimental Version** - API may change without notice |
| 86 | +Current focus areas: |
| 87 | +- Improved call state management |
| 88 | +- Enhanced error handling |
| 89 | +- Enhanced Android versions compatibility |
| 90 | + |
| 91 | +## 🤝 Contributing |
| 92 | + |
| 93 | +We welcome contributions! Please: |
| 94 | +1. Fork the repository |
| 95 | +2. Create your feature branch (`git checkout -b feature/amazing-feature`) |
| 96 | +3. Commit changes (`git commit -m 'Add amazing feature'`) |
| 97 | +4. Push to branch (`git push origin feature/amazing-feature`) |
| 98 | +5. Open a Pull Request |
| 99 | + |
| 100 | +## 📜 License |
| 101 | + |
| 102 | +Distributed under the Apache 2.0 License. See [LICENSE](LICENSE) for details. |
0 commit comments