Kann SMS und Voice-Nachrichten mit seven.io verschicken
- Python 100%
Wiederverwendbarer Baustein (eigenes Paket), nutzbar in beliebigen Programmen, Cron-Jobs und Alerts: - client.py: synchroner SevenClient.send_sms / send_voice (Voice als SSML, XML-escaped); Result mit ok/code/price/error, best-effort Fehlerbehandlung, dry_run-Modus - cli.py: `seven-send sms|voice` mit --dry-run, --json, sauberen Exit-Codes; API-Key aus --api-key oder $SEVEN_API_KEY - src-Layout, pyproject (console_script seven-send), MIT-Lizenz - 12 Tests (Client + CLI), httpx gemockt Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| src/seven_send | ||
| tests | ||
| .gitignore | ||
| LICENSE | ||
| pyproject.toml | ||
| README.md | ||
seven-send
Kleine, wiederverwendbare Library + CLI zum Verschicken von SMS und TTS-Sprachanrufen über die seven.io-API. Bewusst provider-fokussiert und schlank — als Baustein für beliebige Programme, Cron-Jobs oder Monitoring-Alerts.
Installation
pipx install git+https://kitux.de/forgejo/dschlueter/seven_send.git
# oder lokal zur Entwicklung:
pip install -e ".[dev]"
CLI
export SEVEN_API_KEY=dein-key
seven-send sms --to +4915112345678 --text "Hallo Welt"
seven-send voice --to +4915112345678 --text "Dies wird vorgelesen." --voice de-de-female
seven-send --dry-run sms --to +49… --text "nur testen" # nichts senden
seven-send --json sms --to +49… --text "..." # maschinenlesbar
Exit-Codes: 0 Erfolg · 1 Sendefehler · 2 Konfig-/Aufruf-Fehler.
Library
from seven_send import SevenClient
c = SevenClient(api_key, sms_from="Notruf", voice_name="de-de-female")
res = c.send_sms("+4915112345678", "Hallo")
if not res: # bool(res) == res.ok
print("Fehler:", res.error)
c.send_voice("+4915112345678", "Achtung, dies ist eine Ansage.")
SevenClient ist synchron. Aus asynchronem Code:
res = await asyncio.to_thread(c.send_sms, "+49…", "Hallo")
Konfiguration
| Parameter | Default | Bedeutung |
|---|---|---|
api_key |
– | seven.io API-Key (oder $SEVEN_API_KEY für die CLI) |
sms_from |
Notruf |
Absender-ID der SMS (alphanumerisch, max. 11 Zeichen) |
voice_from |
None |
Caller-ID für Anrufe (verifizierte Nummer) |
voice_name |
de-de-female |
SSML-Stimme für die Anruf-Ansage |
dry_run |
False |
nichts senden, nur protokollieren |
Test
pip install -e ".[dev]"
pytest -q
Lizenz
MIT — siehe LICENSE.