Metadata-Version: 2.4
Name: simple-sip-client
Version: 0.1.0
Summary: Pure-Python SIP VoIP client library
Author: SerafinoBarwinski
License-Expression: MIT
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Communications :: Telephony
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file
Dynamic: requires-python

# simple-sip

Pure-Python SIP VoIP client library (no external dependencies for SIP/RTP).

[![Publish to PyPI](https://github.com/SerafinoBarwinski/simple-sip-python/actions/workflows/publish.yml/badge.svg?branch=main)](https://github.com/SerafinoBarwinski/simple-sip-python/actions/workflows/publish.yml)
## Project Structure

```
voip/
├── README.md
├── setup.py
├── pyproject.toml
├── hold-queue-config.json
├── demo.py              # Interactive SIP client demo
├── hold-queue.py        # Music-on-hold with announcements
├── queue-demo.py        # Simple audio streaming demo
├── debug_audio.py       # RTP audio dump tool
├── main.py              # CLI-based SIP client
└── src/
    └── simple_sip/      # Python package
        ├── __init__.py
        ├── sip_client.py   # SIP client (register, call, events)
        ├── sip_message.py  # SIP message parser/generator
        ├── sip_auth.py     # Digest authentication
        ├── sip_transport.py # UDP transport
        ├── sip_sdp.py      # SDP parser/answer/offer
        ├── sip_media.py    # RTP media stream
        └── ringtone.py     # Ringtone player
```

## Installation

```bash
pip install -e .
```

Then use from any script:

```python
from simple_sip import SIPClient
```

Or run demos directly (auto-adds `src/` to path):

```bash
python demo.py
python hold-queue.py
```

## Demos

- **demo.py** – Interactive SIP client (receive/make calls)
- **hold-queue.py** – Auto-answer with music-on-hold + announcements
- **queue-demo.py** – Stream audio file as RTP to caller
- **debug_audio.py** – Save incoming RTP audio to WAV files
- **main.py** – CLI with `--on-invite` scripts

## Configuration

Edit `hold-queue-config.json` for hold-queue.py settings.
Environment variables `SIP_SERVER`, `SIP_PORT`, `SIP_USER`, `SIP_PASS`
override defaults in demo scripts.

## License

MIT
