ubuntuusers.de

CapiSuite

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Das Programm CapiSuite 🇩🇪 bietet eine relativ einfache Methode, einen Linux-Rechner mit einer CAPI-fähigen ISDN-Karte in einen Anrufbeantworter (AB) und/oder ein Faxgerät zu verwandeln. Eingehende Anrufe und Faxe werden gespeichert und als Sound- (.wav) bzw. PDF-Dateien per (interner) E-Mail zugestellt. Auch eine Fernabfrage des ABs mit persönlichem PIN-Code ist möglich.

Für fortgeschrittene Benutzer, die sich in der Programmiersprache Python auskennen, bieten die Skripting-Fähigkeiten der CapiSuite noch ganz andere Möglichkeiten: beispielsweise automatische Anrufe bei bestimmten Systemereignissen oder automatisierte Call-In-Systeme. Optional kann noch ein Skript zum sofortigen Ausdrucken eingehender Faxe eingebunden werden.

Das Programm wird seit mehreren Jahren nicht mehr weiterentwickelt, funktioniert aber weiterhin tadellos. Die entscheidende Hürde ist die Inbetriebnahme der benötigten ISDN-Karte unter Linux.

Installation

Als Allererstes braucht man ein funktionierendes CAPI-System auf dem Rechner. Dafür wird entweder eine aktive ISDN-Karte, die von Haus eine integrierte CAPI besitzt, oder eine passive wie eine FRITZ!Card von AVM benötigt, wobei hier der Kartentreiber für die CAPI-Unterstützung sorgt.

Wie letztere installiert wird, beschreibt der Artikel AVM_FRITZ!Card_PCI (bis einschließlich Ubuntu 11.04). Das Paket pppdcapiplugin braucht man nicht, wenn man nur Fax- und/oder Sprachdienste nutzen will und den Internetzugang über einen Router realisiert hat.

Mailserver

Dann benötigt man noch einen funktionierenden Mailserver. Postfix funktioniert z.B. wunderbar. Zum Testen kann man sich anschließend das Paket

  • mailutils

installieren [1] und ausprobieren, ob man sich mit

mail -s Test Email-Adresse 

erfolgreich Mail an die eigene interne Adresse (Benutzername@Rechnername) schicken kann. Der lokale Mail-Server muss unverschlüsselte Verbindungen akzeptieren, deshalb sollte in der Datei /etc/postfix/main.cf folgende Zeile enthalten sein:

smtpd_tls_security_level = may

Falls an eine externe Mailadresse versendet werden sollen, muss die Adresse des Absenders (username@example.com) mit einer gültigen Domain versehen sein. Andernfalls ist eine Fehlermeldung des Providers vorprogrammiert und die Mail kann nicht verschickt werden. Dies kann sowohl in den globalen als auch in den benutzerspezifischen Abschnitten erfolgen (siehe Anrufbeantworter und Faxgerät).

CapiSuite

Zum Schluss braucht man natürlich noch das Paket [1]

  • capisuite (universe, bis Ubuntu 11.04)

  • libsox-fmt-all (universe, Audio-Codecs)

Paketliste zum Kopieren:

sudo apt-get install capisuite libsox-fmt-all 

Oder mit apturl installieren, Link: apt://capisuite,libsox-fmt-all

Ubuntu 13.10 und 14.04

Capisuite ist nicht mehr in den offiziellen Paketquellen enthalten. Man muss sich deshalb den Quellcode herunterladen und diesen an Ubuntu 13.10 anpassen. Eine Anleitung findet sich im Forum.

Unter Ubuntu 14.04 scheinen die Pythonscripte nicht mehr zu funktionieren. Als Alternative zum Faxversand bietet sich Hylafax/Capi4hylafax an.

Konfiguration

Anrufbeantworter

Alles was man machen muss, um den Anrufbeantworter zu aktivieren, ist die Datei /etc/capisuite/answering_machine.conf entsprechend zu bearbeiten. Im Gegensatz zu anderen Diensten muss CapiSuite anschließend nicht neu gestartet werden, da Änderungen in der Konfiguration automatisch berücksichtigt werden.

Man beginnt mit der Sektion für die globalen Einstellungen, genannt [GLOBAL], die man weitgehend so lassen kann, wie sie ist. Wenn man möchte, kann man in der Zeile mit voice_email_from= anstatt root eine richtige E-Mailadresse eintragen, die dann in den Mails als Absender erscheint.

Wichtig sind die folgenden Sektionen, die nach den jeweiligen Benutzern benannt sind und die persönlichen Einstellungen beinhalten. Dabei muss auf dem System ein gleichlautender Benutzer existieren. Hier ein Beispiel:

[Benutzername]
# Telefonnummer (MSN), auf die das Gerät reagieren soll. Verschiedene Benutzer brauchen einen 
# eigenen Abschnitt: [anderer Benutzername] mit entsprechend unterschiedlicher Nummer.
voice_numbers="123456"
# mehrere Nummern sind auch möglich:
# voice_numbers="123456,123457,123458"
# was mit dem Anruf passiert: MailAndSave, SaveOnly oder None (nur Ansage)
voice_action="MailAndSave"
# Aufnahmelänge:
record_length="60"
# (interne) E-Mail Adresse des Empfängers:
voice_email="Benutzername@Rechnername"
# PIN für Fernabfrage:
pin="00000"

Falls die Aufzeichnung an eine externe Mailadresse versendet werden soll:

voice_email_from="CapiSuite AB <username@example.com>"

Dabei bitte beachten, dass .wav-Dateien nicht komprimiert sind und relativ viel Platz belegen!

Experten-Info:

Die Sprachaufzeichnungen sind leider normalerweise ziemlich leise. Wem das nicht gefällt, der muss die entsprechenden Python-Skripte ändern. Und zwar muss die Zeile 230 in der Datei /usr/lib/python2.5/site-packages/cs_helpers.py wie folgt geändert werden, und danach der vorkompilierte Bytecode in Gestalt der Dateien cs_helpers.pyc und cs_helpers.pyo gelöscht werden:

ret = os.spawnlp(os.P_WAIT,"sox","sox",'''"-v","3",attachment,"-w",'''basename+"wav")

Alternativ kann man dem Rauschen beim Abspielen der .wav-Datei diese Datei wie folgt begegnen:

ret = os.spawnlp(os.P_WAIT,"sox","sox",'''"-X","-v","3",'''attachment,"-w",basename+"wav")

Das "-X" beseitigt das Rauschen (getestet auf Ubuntu 8.04.2 64-Bit).

Die vom Anrufbeantworter erstellten .la-Dateien (a-Law ISDN Audioformat) können mit folgendem Befehl abgespielt:

play <Pfad><Beispiel.la> 

und mit:

sox <Pfad><Beispiel.la> <Pfad><Beispiel.wav> 

in eine .wav-Datei umgewandelt werden. Bei der Zustellung per E-Mail geschieht dies automatisch.

Faxgerät

Auch die Faxfunktion hat ihre eigene Konfigurationsdatei - /etc/capisuite/fax.conf - die der des Anrufbeantworters sehr ähnlich ist. Da CapiSuite eine integrierte Faxweiche besitzt, kann man Anrufbeantworter und Faxgerät ohne weiteres die gleiche Rufnummer (MSN) zuweisen. Die [GLOBAL]-Sektion besitzt ebenfalls vernünftige Voreinstellungen, daher an dieser Stelle gleich eine kommentierte Benutzer-Sektion:

[Benutzername]
fax_numbers="123456"
# Fax-Nummer für den Empfänger; mit Länderkennung und OHNE führende Null bei der Vorwahl:
fax_stationID="+49 40 123456"
# Fax-Meldung (beliebiger Text):
fax_headline="Faxen machen - sent by CapiSuite"
# (interne) E-Mail Adresse des Empfängers:
fax_email="Benutzername@Rechnername"
# 'None' macht hier keinen Sinn:
fax_action="MailAndSave"

Falls die Faxe an eine externe Mailadresse versendet werden sollen:

fax_email_from="Fax von CapiSuite <username@example.com>"

Fehlerbehebung Faxempfang

Ohne folgenden Bugfix funktioniert der Faxempfang nicht. Das Problem liegt an einem Umlaut (ü) in einem Kommentar des Skripts /usr/lib/capisuite/incoming.py, der entfernt bzw. in "ue" umbenannt werden muss [6]. Hier die korrigierte Zeile:

problems on Redhat, thx to Herbert Huebner for reporting

Danach sollte der Faxempfang funktionieren.

OpenOffice.org

Um aus OpenOffice.org heraus faxen zu können, muss man mit Hilfe des Programms /usr/lib/openoffice/program/spadmin einen neuen Fax-Drucker konfigurieren (das Programm spadmin ist auch Bestandteil von LibreOffice). Im spadmin-Fenster "Neuer Drucker" auswählen, dann "eine Faxlösung anbinden", "der Standardtreiber" und dann folgendes als Kommandozeile angeben:

/usr/bin/capisuitefax -q -d "(PHONE)" "(TMP)"

Dann noch einen Namen für den Drucker vergeben und "Fertig stellen".

Scanner einbinden

Das Programm xsane bietet die Möglichkeit, neben der eigentlichen Scanfunktion eine eingescannte Vorlage direkt zu faxen. Hierzu müssen lediglich die Einstellungen angepasst werden. Diese befinden sich in xsane unter den Menüpunkten "Einstellungen → Konfiguration" in der Registerkarte Fax:

Befehl: /usr/bin/capisuitefax
Option für Empfängernummer: -d
Option für Postscriptdatei: bleibt leer
Option für Normalmodus: entfernen
Option für Feinmodus: entfernen

Faxe unmittelbar ausdrucken

Um Faxe nach dem Empfang direkt auszudrucken, kann folgendes Python-Skript verwendet werden. Die erste Funktion printfax dient zum sofortigen Ausdruck, die zweite Funktion name wird weiter unten erläutert. Das Skript muss unter /usr/lib64/python2.5/site-packages/faxen_machen.py gespeichert werden [6].

Damit wird aus dem Fax (Endung .sff) eine TIFF-Datei erzeugt, diese in Postscript umgewandelt und an den Drucker umgeleitet. Anschließend wird die TIFF-Datei wieder gelöscht. Bei ausgeschaltetem Drucker verbleiben die Druckaufträge solange in der Warteschlange, bis der Drucker angeschaltet wird.

# hilfsroutinen fuer capisuite
# m.goerres 14.01.2007
# /usr/lib64/python2.5/site-packages/faxen_machen.py
#
# printfax = fax direkt ausdrucken
#

def printfax(filename):
  import cs_helpers
  # fuer die funktion sfftotiff
  # fuer string-funktionen
  import os
  # fuer die systemfunktionen
  namen = filename.split(".")
  suffix = namen[1]
  dateiname = namen[0]
  if suffix=="sff":
     ret=cs_helpers.sfftotiff(filename,dateiname+".tif")
     command="tiff2ps -a -h11 -w8.5 "+dateiname+".tif"+" | lp"
     os.system(command)
     os.unlink(dateiname+".tif")
  else:
     raise "color fax kann nicht ausgedruckt werden!"
# ende

#
# name = rueckgabe eines eindeutigen namens aus faxnummer + datum + zeit + endung
#
def name(directory,call_from,suffix):
  import time
  faxtime = time.strftime("%Y-%m-%d_%H-%M-%S")

  if call_from=="-":
     faxnumber = "unknown"
  else:
     faxnumber = call_from
  faxname = directory+"fax_"+faxnumber+"_"+faxtime+"."+suffix
  return faxname

Das Python-Skript muss nun noch am Ende der Funktion faxIncoming in der Datei /usr/lib/capisuite/incoming.py durch folgende Programmzeile aufgerufen werden [6]:

faxen_machen.printfax(filename)

Das Skript muss am Anfang der Datei /usr/lib/capisuite/incoming.py unmittelbar hinter den anderen Importzeilen importiert werden. Damit der Import funktioniert muss außerdem davor noch Python das Verzeichnis des Moduls bekannt gemacht werden.

import sys
sys.path.append(r'/usr/lib64/python2.5/site-packages/')
import faxen_machen

Dateinamen der Faxe anpassen

CapiSuite nummeriert die Faxe prinzipiell aufsteigend. Zur eindeutigen Erkennung und Zuordnung ist dies nur begrenzt hilfreich, die eingehende Faxnummer ist eindeutiger und hilfreicher.

Hierzu dient die Funktion name aus dem oben beschriebenen Python-Skript /usr/lib64/python2.5/site-packages/faxen_machen.py. Der Name des Faxes setzt sich zusammen aus der eingehenden Nummer und Empfangsdatum und -zeit, z.B. fax_012345678_2007-01-14_11-24-16.pdf. Hierzu wird die formatierte Zeitausgabe, eine Standardfunktion von Python, verwendet. Bei Bedarf kann diese natürlich beliebig angepasst werden.

Das Skript muss wie oben beschrieben am Anfang der Datei /usr/lib/capisuite/incoming.py unmittelbar hinter den anderen Importzeilen importiert werden.

Der Funktionsaufruf in der Datei /usr/lib/capisuite/incoming.py muss noch entsprechend angepasst werden:

# alter Befehl (auskommentiert):
#filename=cs_helpers.uniqueName(udir+"received/","fax",faxFormat)
# neuer Befehl:
filename=faxen_machen.name(udir+"received/",call_from,faxFormat)

Capisuite als Daemon

Um CapiSuite als Dienst direkt zu starten, muss die Datei /etc/default/capisuite angepasst werden:

run_capisuite_daemon=y

Jetzt die CapiSuite mit dem Befehl

sudo /etc/init.d/capisuite restart 

neustarten. Anrufbeantworter und Faxgerät sollten funktionieren. Ansonsten finden sich Fehlermeldungen in der Datei /var/log/capisuite.error.

Benutzung

Anrufbeantworter

Anrufe sollten jetzt automatisch aufgezeichnet und als .wav-Datei per E-Mail verschickt werden, so dass die Nachrichten aus dem E-Mail Programm heraus abgehört werden können. Dafür bietet sich z.B. das Programm aplay an.

Wenn man sich selbst von woanders anruft und mit dem Tonwahl-Verfahren die PIN-Nummer eingibt, gelangt man in das Fernabfragemenü, wo man u.a. auch einen neuen Text aufsprechen kann. Alternativ kann man auch eine Ansage als Nachricht hinterlassen und später die entsprechende .la-Datei umkopieren.

Zusätzlich kann man auch eine beliebige andere Audiodatei mit Hilfe des Programms sox in eine .la-Datei umwandeln und der CapiSuite über die Konfigurationsdirektiven voice_user_dir und announcement in der Datei /etc/capisuite/answering-machine.conf zugänglich machen.

Faxgerät

Eingehende Faxe werden wie Sprachnachrichten per E-Mail versandt. Selbst Faxe versenden kann man mit dem Befehl

capisuitefax -d Faxnummer Datei(en) 

Die Dateien müssen dafür im PDF- oder im Postscriptformat vorliegen. Mit den capisuitefax-Optionen -l und -a ID kann man sich die Sendeschlange anzeigen lassen bzw. den Auftrag mit der Nummer ID abbrechen.

OpenOffice.org

Um Dokumente mit OpenOffice.org zu faxen, einfach den eingerichteten Faxdrucker im Druckdialog auswählen und die Faxnummer im folgenden Dialogfeld eingeben.

xsane

Im Hauptdialog von xsane statt Betrachter einfach Fax auswählen, in dem erscheinenden Dialog ein Faxprojekt erstellen und die gewünschte Faxnummer eingeben. Nach Scannen der Vorlage die entsprechende Datei auswählen und auf Projekt senden drücken. Nach Umwandlung wird die Datei an CapiSuite übergeben und als Fax verschickt.

Probleme und Lösungen

mögliche Fehlermeldungen
Problem Lösung
"Sorry, you're no valid user for CapiSuite" Fehlermeldung bei Nutzung von capisuitefax - aktueller Benutzername stimmt nicht mit dem konfigurierten Nutzer in /etc/capisuite/fax.conf überein
"capisuite can't write to queue dir" oder "Druckerfehler" beim Faxen aus OpenOffice Das Verzeichnis /var/spool/capisuite/users/<username>/sendq existiert nicht, möglicherweise wurde Capisuite als Dienst noch nicht aktiviert (siehe oben); Capisuite als Dienst starten ist Voraussetzung für das Absenden von Faxen.
"ERROR occured while converting file: Error while calling sox. Not installed? Please talk to your friendly administrator." Leider installiert sox nicht alle benötigten Codecs mit, deshalb einfach das Paket libsox-dev installieren (getestet unter 8.04.2 64-Bit)
"...CapiSuite 0x7fff93c4f4c0: Error while trying to send mail: (530, '5.7.0 Must issue a STARTTLS command first', ..." Wenn diese Fehlermeldung in /var/log/capisuite.error auftaucht, dann kann die Mail nicht an den Mailserver übergeben werden, weil dieser keine unverschlüsselte Verbindung akzeptiert. Unter Installation ist eine Lösung beschrieben.

Diese Revision wurde am 13. Februar 2020 18:38 von Heinrich_Schwietering erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Server, ISDN, Kommunikation, Hardware, Büro