Kann SMS und Voice-Nachrichten mit seven.io verschicken
Find a file
Dieter Schlüter fad93e194f fix: seven.io-Statuscode als nacktes int/float robust parsen (0.1.1)
Der SMS-Endpunkt liefert standardmäßig nur den nackten Statuscode (z. B. 100),
der als JSON zu einem int decodiert — _parse rief darauf data.get() auf und
crashte mit AttributeError. Jetzt wird ein Nicht-Objekt-JSON als Statuscode
behandelt (ok = code == "100").

- client.py: _parse behandelt dict / int-Code / Text einheitlich
- Tests: nackter int-Code 100 (ok) und 900 (Fehler)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 12:51:11 +02:00
src/seven_send fix: seven.io-Statuscode als nacktes int/float robust parsen (0.1.1) 2026-06-25 12:51:11 +02:00
tests fix: seven.io-Statuscode als nacktes int/float robust parsen (0.1.1) 2026-06-25 12:51:11 +02:00
.gitignore feat: seven-send 0.1.0 — Library + CLI für SMS und TTS-Anrufe via seven.io 2026-06-25 11:33:12 +02:00
LICENSE feat: seven-send 0.1.0 — Library + CLI für SMS und TTS-Anrufe via seven.io 2026-06-25 11:33:12 +02:00
pyproject.toml fix: seven.io-Statuscode als nacktes int/float robust parsen (0.1.1) 2026-06-25 12:51:11 +02:00
README.md feat: seven-send 0.1.0 — Library + CLI für SMS und TTS-Anrufe via seven.io 2026-06-25 11:33:12 +02:00

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.