Fax-Client für Asterisk

Ber5erker

Mitglied
Mitglied seit
6 Apr 2004
Beiträge
305
Punkte für Reaktionen
0
Punkte
16
Dies ist ein erster Versuch einer Client/Server-Anwendung, um vom (Linux-) Rechner aus über Asterisk txfax Faxe zu verschicken.

Wer wie ich z.B. KdeprintFax nutzt kann dort dann einfach das Fax-System auf HylaFax stellen.

WICHTIG: auf dem Client sollte kein Hylafax installiert sein, da ich den gleichen Namen für den Client nutze wie HylaFax!
Gegebenenfalls ist mein Client umzubenennen.
Ich verwende den (m.E.) freien Port 4558.

Das Script benutzt die gleichen Flags wie der originale Hylax-Client.

/usr/bin/sendfax -n -h <server> -d <user>@<faxnummer> [-f <from-email>] [-x <office>] <postscript-file>

-f und -x sind z.Zt. noch ohne Funktion

All das ist absolute Beta, da ich (fast) null Plan von Perl habe!

Wer macht mit und verfeinert diese Anwendung?

Wer hat Ahnung von Windows und würde dafür auch einen Client schreiben?
 

Anhänge

  • astfax.tar.gz
    2.1 KB · Aufrufe: 110
Keine resonanz? Nagut, dann spinn ich die Sache mal einfach weiter.

Also das obige Script rennt unter KDE schon sehr stabil und fehlerfrei (solange man die Faxnummer ordentlich und ohne Leerzeichen und so eintippt).

Für Windows stolperte ich nun über "redmon", über den man dann einen Druckauftrag abfangen bzw. über Scripte oder andere Programme umleiten und weiterverarbeiten kann.
-> http://www.cs.wisc.edu/~ghost/redmon/

Auf dieser Basis sollte sich eigentlich mittels WSH oder auch Perl eine ähnliche funktionalität erstellen lassen.

Leider bin ich nicht Freund mit WSH, Möglichkeiten bietet diese Scriptsprache aber allemal.

Weitere Ideen, Vorschläge oder Lösungen?
 
Spassige Sache. Schade, dass ich im Moment nicht ausreichend Zeit habe und auch nicht den noetigen Leidensdruck, um das Skript mal in der Praxis zu testen. Das wird sich wahrscheinlich auch erst nach meinem Umzug im Maerz naechsten Jahres aendern - wenn alles wie geplant klappt, habe ich in der neuen Wohnung kein ISDN und telekomuniziere nur uebers Internet.
 
Super, tolle Sache.

Da ich Probleme mit analogen FAX-Geräten an meinen CISCO-ATAs habe (Verbindungsabbrüche ), suche ich auch eine Lösung mit app_txfax.

Da wir medizinische Befunde versenden, brauchen wir eine Bestätigung, ov das FAX angekommen its, oder ob es einen Fehler gegeben hat.

Leider gibt app_txfax ja keinen brauchbaren Resultcode zurück, oder?

Hat da noch jemand eine Idee?

Viele Grüße

Thomas
 
Ich hab großes Interesse an Deiner Lösung. Hab mir gerade mal die Skripte durchgesehen. Verstehe ich das richtig: Du erzeugst eine Postscript Datei aus der Anwendung heraus. Dann schickst Du diese an Deinen Daemon und dieser wandelt PS nach Tiff und erzeugt ein Call-File für den Asterisk. Wo kommt die Zielnummer her? Praktisch wäre es ja nun, wenn man einen Druckertreiber für Windows hätte, der nach der Faxnummer fragt (und am besten einen schicken Fax-Kopf oben auf der Seite einfügt). Achja, warum machst Du keine Wiederholungen im Callfile? Falls die Gegenstelle nicht abnimmt würde Asterisk dann nach einer einzustellenden Zeit im Callfile einfach noch mal versuchen.
Ob das Senden erfolgreich war kann man dann im Wählplan abfragen. Da ich schon Fax-zu-EMail habe und damit jeder Nummerninhaber eine Mailadresse angegeben hat, könnte (zumindest ich) eine Sendebestätigung per EMail senden.
 
@speedy:

Kannst Du bitte konkret erklären, wie das Versandergebnis (für eine Sendebestätigung) abfragbar ist?


Vielen Dank

Thomas
 
Na wenn das Fax versendet wurde, dann wird im Wählplan die nächste Priorität ausgeführt.
exten => 1234,1,txfax(....)
exten => 1234,2,agi(...)
Da könnte man also ein AGI-Skript laufen lassen, oder irgend etwas anderes. Wenn das AGI-Skript nicht läuft, so wurde txfax unterbrochen. Dann gibts im aktuellen CVS von Asterisk noch Deadagi, das wird noch ausgeführt, wenn die Leitung/Channel schon aufgelegt ist. Damit könnte man also Fehler erkennen. Außerdem gibt txfax bei Erfolg 0 zurück, bei einem Fehler -1. Da sollte sich auch was mit anstellen lassen. Ein Blick in den Sourcecode kann man ja auch mal werfen: ftp://ftp.soft-switch.org/pub/spandsp/spandsp-0.0.2pre10/app_txfax.c
So genau hab ich mir alles noch nicht angesehen, erst einmal brauche ich einen praktikablen Weg aus einer Anwendung heraus zu einer Tiff-Datei. Und das sollte praktischerweise ein Druckertreiber sein, der entweder Postscript oder Tiff erzeugen kann und auch die Ziel-Faxnummer irgendwie übergeben kann. Am besten wäre ein Druckertreiber, der eine E-Mail erzeugt. Im Anhang das zu sendende Fax und im Betreff (oder Mailtext) die Faxnummer. So etwas gibts sogar bei einem kommerziellen Faxserver-Anbieter, aber ich wills ja als Open Source haben ...
 
Bisher nutze ich HylaFAX und drucke aus einer von mir erstellten Anwendung (Windows) heraus auf einen virtuellen SAMBA-Drucker (im Moment läuft auf dem LINUX noch der LPD, geht aber auch mit CUPS). Dieser Druckerfilter (bei LPD), bzw. das CUPS-Backend (mit Shellscript) extrahiert aus dem Postscript (auf den Windowskisten ist ein Apple-Postscript-Treiber eingestellt) die FAX-Nummer, die eMail-Adresse und die Auftragsnummer. Diese Informationen sind mit weißer Farbe auf weißem Hintergrund in dem Report gedruckt und auf dem FAX dann nicht zu sehen. Damit hat man alles, was man zum faxen mit HylaFAX braucht. So ähnlich soll es dann auch mit app_txfax.so laufen.

Wie das dann für beliebige Anwendungen laufen soll, ist dann noch zu klären.

Was das app_txfax angeht: Bist Du dir mit dem Resultcode sicher? Ist der 0, wenn das FAX ohne fehler komplett übertragen wurde und umgekehrt?

Kann man sich deadagi (ich brauche STABLE-Asterisk, wegen bristuff) nicht sparen und den Resultcode in der h-Priority abfangen? Wie kann man eigentlich den Resultcode abfragen?

Vielleicht kommen wir ja zu einer gemeinsamen Lösung.

Viele Grüße

Thomas
 
thomasd schrieb:
Bisher nutze ich HylaFAX und drucke aus einer von mir erstellten Anwendung (Windows) heraus auf einen virtuellen SAMBA-Drucker

Genau so was wollte ich vermeiden. Eine eigene Anwendung nur zum Faxen ist erst einmal Aufwand und zum anderen nicht so flexibel wie ein Drucker zum Faxen, der aus jeder Anwendung heraus genutzt werden könnte.

thomasd schrieb:
Was das app_txfax angeht: Bist Du dir mit dem Resultcode sicher? Ist der 0, wenn das FAX ohne fehler komplett übertragen wurde und umgekehrt?

Ja ich bin mir sicher. Das steht zumindest so im Sourcecode drin (siehe Link im vorherigen Code) und sollte daher auch so sein.

thomasd schrieb:
Kann man sich deadagi (ich brauche STABLE-Asterisk, wegen bristuff) nicht sparen und den Resultcode in der h-Priority abfangen? Wie kann man eigentlich den Resultcode abfragen?

Ja ich hab auch den stabilen Asterisk, müßte mir dann also auch was einfallen lassen. Ich hab mir aber wie gesagt noch keine Gedanken zum Wählplan und Sendebestätigungen gemacht. Erst einmal brauche ich eine Lösung um die Faxe auf den Asterisk-Server zu bekommen. Da gibts ja auch was schönes: http://www.inter7.com/index.php?page=astfax Allerdings muß man die E-Mail dann erst einmal schreiben und das Fax als Tiff haben. Es mangelt also wieder am Druckertreiber. Wenn ich eine Lösung Fax --> Asterisk Server habe, dann können wir uns gern wieder über den Wählplan unterhalten...
 
Servus zusammen,

ich hätte da vielleicht eine nicht ganz so komfortable Lösung, sie wäre aber einfach und Plattformneutral.

Alles was man bräuchte, um die Faxgeschichte von "Ber5erker" anlaufen zu lassen, wäre ein CGI Formular, welches ein paar Metadaten (Faxnummer, Absender, etc.) und z.B. eine .ps Datei an den (auf dem ASTERISK) liegenden Webserver sendet. Das ganze ist also ähnlich wie eine Email-Formular, an welches ich eine Datei anhänge. So wären alle Daten (PS-Faxdatei, Faxnummer,etc.) für den Faxversand vorhanden. Man brauch also lediglich einen PS Drucker, von dem aus man in eine .ps Datei druckt, anschliessend das FaxCGI Formular ausfüllt, Fax Datei auswählt und das ganze dann abschickt, fertig :D .

Tabellar
 
Ja so ein Formular ist ja auch schnell gemacht (gebt mir ne Stunde und das steht). Aber wer druckt bitte in eine PS Datei, geht dann mit dem Browser auf eine Seite, wählt dort die PS-Datei und gibt die Daten ein? Das ist für privatzwecke vielleicht machbar, aber ich will es für ein paar mehr Nutzer haben. Und dort muss es komfortabler und einfacher gehen. Das heißt man hat seine Anwendung und verschickt aus dieser Faxe. Eine Zusatzanwendung wie so ein Web-Formular schreckt Nutzer ab.
Nichts für ungut, die Idee ist ja machbar ...
 
Richtig. Wie wäre es denn erstmal damit:

Für die Word/OO-Benutzer wäre es doch kein Problem, im Dokument etwas in der Form reinzuschreiben:
@@@@FAX:0203-300XXNN@@[email protected]@@Kurztext@@@@
Das könnte dann ja auch mit einem Makro in der Textverarbeitung gefüllt werden und mit weisser Schrift "gedruckt" werden, falls es jemand unschön findet. Das kann dann ja per SAMBA auf einen LPD oder CUPS gedruckt werden, ein Script (lässt sich schon mit "sed" und "awk" auseinanderdröseln) extrahiert die 3 Parameter, erstellt eine TIFF und übergibt das ganze Astrerisk.
 
Tja, wenn das für den User zu aufwendig ist, dann denke ich, geht die Sache nur über CUPS mit einem PS Druckertreiber, den man selber um entsprechende Metafelder (Faxnummer...) erweitert. Das ist wohl aber nicht in einer Stunde gemacht :roll: . Wir haben da auch schon dran rumgedacht ( im Zusammenhang mit HylaFax), aber es scheiterte immer am Aufwand (und das Können) den PS-Druckertreiber zu modifizieren...

Tabellar
 
Hallo,

ich habe mich eingehendst mit dem Thema Faxversand mit * eingelesen.

Habe ein Cisco ATA186 und will damit einfach nur ein fax aus meinem analogen Papierfax versenden.

Papierfax -> ATA186 -> SIP -> Asterisk -> via capi (ISDN)versand ins pstn .

Hab einiges Interessantes in Erfahrung bringen können:
Code:
Just some information for people. If you want to be able to print from windows to fax compatible tiff files (for use with SpanDSP) you can use the following software:

http://www.faxaway.com/toolbooth/converter.htm

We have this installed and working here. Once you have a tif file you can copy it to the asterisk box (say /tmp/testfax.tif) and then write a sample.call file to /var/spool/asterisk/outgoing where the file contains:

Channel: Zap/1/1234567

Application: txfax
Data: /tmp/testfax.tif

Where 1234567 is the number you want to send the fax to.

Also (thanks to Toby Mills) just put LOCALSTATIONID=+64 3 455 5770 into the globals section of extensions.conf to set up your station ID for outgoing faxes

You can check whether everything is set up correctly by sending a fax to telecom's test facility.

http://www.telecom.co.nz/content/0,3900,202732-1476,00.html
###
http://www.sineapps.com/news.php?rssid=39
###
Title: RE: [Asterisk-Users] SoftFAX/spandsp - release 0.0.1i - txfax findings

Hi,

We have no problems sending to HP and Panasonic fax machines in the office.
We do have problems when we try to send faxes to services supporting
fax, i.e. J2 or our UC platform. The receiving side doesn't recognize fax.

To send a fax we drop into /var/spool/asterisk/outgoing:
Channel: Zap/g1/<fax number>
MaxRetries: 0
WaitTime: 20
Context: webley_txfax
Extension: txfax_ext
Priority: 1
SetVar: TXFAX_NAME=<fax name>

and extensions.conf contains:
[webley_txfax]
exten => txfax_ext,1,txfax(${TXFAX_NAME}|caller)
exten => txfax_ext,2,Hangup

Two questions:
1. Sounds like txfax sends just one CNG tone. Can we have a parameter making
        txfax issue periodic CNGs until it gets CED back? This might resolve the
        problem with the receiver missing the first (and only) tone and therefore
        working as if this is not a fax?
2. For Zap channels - don't we need to take care of 'dataquality', 'ignoredtmf'
        and/or 'faxhandled'? In several cases J2 would send CED, so asterisk
        switched to a fax extension creating a complete mess.

Thank you.

Alex Zarubin
Webley Systems 
###
http://www.mail-archive.com/[email protected]/msg30912.html
###
Natürlich auch das von scotstuff ...

Frage: Wäre der Lösungsansatz, das ich
1. in /var/spool/asterisk/outgoing anstatt ZAP einfach Capi eintrage richtig?
2. Ist der Lösugsansatz richtig, das ich in der extensions.conf ein Eintrag mache indem ich die DW des Faxes (nennen wir die DW 886702 ist SIP/atafax) so eintrage als würde ich ein Fax empfangen?
danach soll es mir über einen Systemaufruf dieses irgendwo hineinschreiben (wobei ich nicht weiss wie ich die eigentliche Versenderfax nummer mitnehmen kann). Danach müsste ich mit txfax diese *tiff datei herausnehmen (mit einem skript alle 10 min nachschauen ob neues file im Verzeichnis ist) und dadurch dann versenden?

Ich denke bestimmt zu kompliziert.

Hat es irgendwer schon gelöst mit einem Papierfax über ein ata über Asterisk via isdn raus zu Faxen?

Eingehende Faxe konvertiere ich über Asterisk, wie in der Scottstuff Doku beschrieben, alle in pdf, sodass ich damit keinen Stress habe und ausgehende Faxe über das system (z.b. aus office heraus über Hylafax und mit cepheus als gui auf win). Wer darüber Auskunft haben will gebe ich gerne meine Lösungen im detail bekannt.

Vielen Dank im voraus
 
speedy1980 schrieb:
Ja so ein Formular ist ja auch schnell gemacht (gebt mir ne Stunde und das steht). Aber wer druckt bitte in eine PS Datei, geht dann mit dem Browser auf eine Seite, wählt dort die PS-Datei und gibt die Daten ein? Das ist für privatzwecke vielleicht machbar, aber ich will es für ein paar mehr Nutzer haben. Und dort muss es komfortabler und einfacher gehen. Das heißt man hat seine Anwendung und verschickt aus dieser Faxe. Eine Zusatzanwendung wie so ein Web-Formular schreckt Nutzer ab.
Nichts für ungut, die Idee ist ja machbar ...
Ich hab das mal gemacht. Für die drei Faxe im Jahr, die ich senden will reichts allemal. Wer also Interesse hat ...
Meine Extension dazu sieht wie folgt aus:
Code:
[faxout]
 exten => standard,1,SetVar(NOTIFY_NOT_OK=/bin/echo | /usr/bin/nail -s "Fax am <${DATE}> um <${TIME}> konnte NICHT gesendet werden." ${EMAIL})
 exten => standard,2,SetVar(NOTIFY_OK=/bin/echo | /usr/bin/nail -s "Fax am <${DATE}> um <${TIME}> wurde erfolgreich gesendet." ${EMAIL})
 exten => standard,3,TxFax(${FAXFILE}|caller)
 exten => standard,4,System(${NOTIFY_OK})
 exten => standard,5,System(/bin/rm -f ${FAXFILE} ${CALLFILE})
 exten => standard,6,Busy
 exten => standard,104,System(${NOTIFY_NOT_OK})
dann noch einen user "faxout" anlegen und diesem in der /etc/sudoers dass Recht geben in das outgoing Verzeichnis des Asterisk zu schreiben. Mein Asterisk läuft nämlich (noch) als root. Das CGI-Script sollte aber nicht suid-root laufen und dem regulären webuser wollte ich auch kein root-recht einräumen. Deshalb in /etc/sudoers:
Code:
faxout ALL=(ALL) NOPASSWD:/bin/cp /var/spool/asterisk/faxout/*call /var/spool/asterisk/outgoing
In das Web Formular kann man nun entweder *.ps oder *.pdf reinwerfen und es sollte - wenn alles glatt geht - versand werden. Wenn nicht, bleibt der tiff und der call file im faxout-dir liegen und kann nochmal manuell angeschoben werden. Ausserdem benutze ich eine Capi-Karte als schnittstelle ins isdn. Wer da was anderes hat, muss das in /etc/asterisk/faxversand/callfile ändern.
Bei meinen Test habe ich allerdings festgestellt, dass ich nicht an ISDN-Faxe (PC usw. funktionieren) verschicken kann. Ich vermute das Problem bei meiner Capi-Karte die nicht signalisiert, dass jetzt ein Fax versand werden soll. Kennt sich jemand damit aus und hat einen Tipp?
Danke

/bin/lan
 

Anhänge

  • faxout.tgz
    2.9 KB · Aufrufe: 90
hatte üble probleme damit, denn die .call dateien muessen dem benutzer gehören unter dem auch die asterisk läuft.
und meine läuft nicht unter root.

somit musste ich im perl-script die rechte ändern (chown)
 
Ich bin auch an einer Lösung interessiert, die ermöglicht unter Windows sowie Linux einfach per "Drucken" und Nummerneingabe Faxe über Asterisk (oder von mir aus auch Hylafx+ISDN) zu verschicken. Hat jemand neue Infos?
 
Unter Windows kann man Fritz!Fax nehmen, wenn sich im Linux-Rechner eine AVM-Karte befindet und Remotecapi installiert ist.
 
Tippfehler schrieb:
Unter Windows kann man Fritz!Fax nehmen, wenn sich im Linux-Rechner eine AVM-Karte befindet und Remotecapi installiert ist.
ich nutze es mit dem mtg-capri server, der dem Netzwerk die Capi bereitstellt. Vielleicht geht das sogar mit anderen ISDN Karten im Server und nicht nur mit den AVMs. Im Grunde suche ich genau so eine Umsetzung auch für Linux Clients, dh eine Nachfrage nach der Telefonnummer, nachdem man auf "Drucken..." gegangen ist.
 
Man könnte auch hylafax nehmen. Gibts für linux und für win clients.
Asterisk und Hyla können auf capi zugreifen. Man muss asterisk nur die FAX-Nummer vorenthalten.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.