Files
starface-blacklist-module/v8-9-10/README.md
T
Stefan Hacker a5b1de275d first commit
2026-06-09 10:17:37 +02:00

114 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# BlacklistBlock - STARFACE Custom Block
Ein Custom Block für den STARFACE Module Designer, der eingehende Anrufe gegen eine
konfigurierbare Blacklist prüft und anonyme Anrufe (unterdrückte Rufnummer) separat
behandelt. Pro Eintrag kann festgelegt werden, **was** mit dem Anruf passieren soll.
## Funktionsweise
Der Block wird **bei jedem eingehenden Anruf** ausgeführt (Modultyp *Call-Processing*).
Ablauf:
1. `GetCaller2` ermittelt Anrufernummer, Name und das Flag `isAnonymous`.
2. **Anonymer Anruf** (unterdrückte Rufnummer): es greift die *Aktion bei anonymen Anrufen*.
3. Andernfalls wird die Nummer gegen die **Blacklist-Einträge** geprüft (erster Treffer gewinnt).
4. Bei einem Treffer wird die zugehörige Aktion ausgeführt.
5. Kein Treffer / Aktion `NONE` / `ALLOW` → der Block tut nichts, der Anruf läuft normal weiter.
Die Aktionen nutzen die eingebauten STARFACE-Blöcke (`Hangup`, `Busy`, `CallPhonenumber2`,
`Answer` + `PlaybackResourceFile2`), die per Reflection im selben Anruf-Kontext aufgerufen
werden dadurch bleibt der Block über STARFACE-Versionen hinweg robust.
## Aktionen
| Aktion | Wirkung |
|------------|---------------------------------------------------------------------|
| `HANGUP` | Anruf sofort auflegen (Anrufer wird getrennt) |
| `BUSY` | Besetztzeichen senden |
| `REDIRECT` | Anruf auf eine andere Nummer/Nebenstelle umleiten (Ziel erforderlich)|
| `ANNOUNCE` | Anruf annehmen, Ansage abspielen, dann auflegen |
| `ALLOW` | Ausnahme Anruf trotz Treffer durchstellen (für Whitelist-Fälle) |
| `NONE` | (nur anonym) nichts tun, Anruf normal durchstellen |
## Kompatibilität
- STARFACE 8.x, 9.x, 10.x (Java 21)
## Konfigurationsfelder (Eingabe)
| Feld | Typ | Beschreibung | Default |
|------|-----|--------------|---------|
| `blacklistEntries` | STRING (mehrzeilig) | Nummern + optionale Aktion/Ziel, eine pro Zeile | |
| `defaultAction` | STRING (Auswahl) | Aktion für Einträge ohne eigene Aktion | `HANGUP` |
| `defaultRedirectTarget` | STRING | Ziel für REDIRECT-Einträge ohne eigenes Ziel | |
| `announcementFile` | STRING | Name der Sound-Ressource für `ANNOUNCE` | |
| `anonymousAction` | STRING (Auswahl) | Behandlung anonymer Anrufe | `NONE` |
| `anonymousRedirectTarget` | STRING | Ziel bei `REDIRECT` für anonyme Anrufe | |
| `countryCode` | STRING | Eigene Ländervorwahl (Deutschland = 49) | `49` |
| `prefixMatch` | BOOLEAN | Bereichssperre: Eintrag sperrt auch beginnende Nummern | `true` |
## Ausgabe-Variablen
| Feld | Typ | Beschreibung |
|------|-----|--------------|
| `caller` | STRING | Erkannte Anrufernummer (international normalisiert) |
| `isAnonymous` | BOOLEAN | Rufnummer unterdrückt? |
| `blocked` | BOOLEAN | Wurde der Anruf behandelt (geblockt/umgeleitet)? |
| `actionTaken` | STRING | Tatsächlich ausgeführte Aktion |
| `statusMessage` | STRING | Status-Meldung |
## Format der Blacklist-Einträge
Eine Nummer pro Zeile (Komma geht auch). Pro Zeile optional eine eigene Aktion und ein Ziel:
```
nummer;AKTION;ziel
```
Beispiele:
```
# Kommentarzeile, wird ignoriert
+49301234567 # nutzt die Standard-Aktion
0190;BUSY # dieser (Bereich) immer besetzt
004989;REDIRECT;100 # auf Nebenstelle 100 umleiten
+4972112345;ALLOW # Ausnahme: trotz Bereichssperre durchstellen
0900;ANNOUNCE # Ansage abspielen und auflegen
```
**Reihenfolge:** Der erste passende Eintrag gewinnt. `ALLOW`-Ausnahmen daher **vor**
breite Bereichssperren setzen.
## Nummern-Vergleich
Alle Nummern werden vor dem Vergleich in eine einheitliche internationale Ziffernform
gebracht (`countryCode` = 49):
| Eingabe | normalisiert |
|---------|--------------|
| `+49 721 12345` | `4972112345` |
| `0049 721 12345` | `4972112345` |
| `0721 12345` | `4972112345` |
| `100` (intern) | `100` |
Bei `prefixMatch = true` sperrt ein Eintrag auch alle Nummern, die mit ihm beginnen
(z.B. `0190` → gesamter `0190`-Bereich). Zum Schutz vor versehentlichem Über-Sperren
greift die Bereichssperre erst ab 3 Ziffern; kürzere Einträge werden nur exakt verglichen.
## Build
```bash
./build-block.sh
```
Die STARFACE-API-JARs werden in `libs/starface/` erwartet. Sind sie dort nicht vorhanden,
nutzt das Script automatisch die JARs des `mail2fax`-Moduls
(`../../mail2fax/v8-9-10/libs/starface/`). Ergebnis: `BlacklistBlock.class`.
Es werden **keine** zusätzlichen Bibliotheken benötigt (kein JavaMail o.ä.).
## Installation im Module Designer
Siehe **[INSTALLATION.md](INSTALLATION.md)** für die Schritt-für-Schritt-Anleitung.
</content>