[gelöst] Faxe empfangen mit Asterisk über SIP-Protokoll

Ber5erker

Mitglied
Mitglied seit
6 Apr 2004
Beiträge
305
Punkte für Reaktionen
0
Punkte
16
Hallo Gemeinde!

Nachdem nun mein Asterisk soweit rund und zuverlässig läuft wollte ich mich mal ans faxen wagen.

Vorweg: ich habe keinen Festnetzanschluß und auch kein Faxgerät!

Asterisk ist der vom bri-stuff-0.1.0-RC4a installierte, dazu noch ein spandsp-0.0.2pre4 mit app_rxfax und app_txfax. System ist Debian Sarge, Kernel 2.4.27.

Kompiliert ist alles ohne Fehler.

Problem:
Asterisk sendet und empfängt keine Faxe über das SIP-Protokoll.
Ausnahme: sende ich ein Fax vom Notebook aus (XP mit XP-eigener Faxsoftware) über den ATA-286 an den Asterisk kommt das Fax an - umgekehrt funzt es komischerweise nicht..

Die Verbindung findet grundsätzlich über ALAW statt.

Weiß jemand Rat oder hat solch ein Konstrukt zum laufen bekommen? Google ist diesmal leider nicht mein Freund gewesen...
 
Re: Faxe empfangen mit Asterisk über SIP-Protokoll

Ber5erker schrieb:
Problem:
Asterisk sendet und empfängt keine Faxe über das SIP-Protokoll.

Wie hast Du das getestet (von wo nach wo)? Versucht Asterisk wenigstens irgendwas zu empfangen (mal auf der Konsole mitlesen).

Wenn was ankommt, dann aber fehlschlägt (und du übers Netz das ganze empfängst) kann das durchaus daran liegen, dass sich Übertragungsfehler (wg. fehlender Bandbreite etc.) eingeschlichen haben und tja... dann tut es halt nicht.

Was ich mir auch noch vorstellen könnte ist, dass Du keine wirkliche Nummer fürs Faxen definiert hast und Asterisk normal bei Zap-Channels das ganze versucht selber zu erkennen und in den Fax-Kontext zu stecken. Bei SIP macht Asterisk IIRC keine Erkennung ob der Anruf Sprache oder Fax ist.
 
Hi rajo,

Getestet habe ich in und aus alle(n) Richtungen. Von Extern blieb mir nur die Free-Fax-Seite http://www.logotown.de/gratis_fax.html , da ich sonst im Moment niemanden kenne, der sich auf ein Testen-Abenteuer einlassen würde.

Die extensions.conf hat eine eigene Nummer/Bereich für Fax:
Code:
[incoming]
exten => 72xxxxx,1,Goto(fax,s,1)

[fax]
exten => s,1,Answer()
exten => s,2,SetVar(FAXFILE=/var/spool/asterisk/fax/${UNIQUEID}.tif)
exten => s,3,RxFax(${FAXFILE})
exten => s,4,Congestion()
exten => s,104,Congestion()

Wenn was von der Webseite aus kommt springt rxfax ganz normal an, baut aber kein Trägersignal auf.
Mittels "#define LOG_FAX_AUDIO" in der t30.c konnte ich auch feststellen, daß nicht ein einziger Ton übetragen wurde (beide Files unter /tmp haben 0 Bytes).

Wenn ich aber intern vom Noteboot ZUM Asterisk sende (siehe ersten Text) klappt alles Prima, obwohl es ja auch über SIP übertragen wird:
Notebook -> ATA -> Asterisk
Diese interne Übertragung kommt heile an und quittiert dann auch brav mit einem "Congestion" :gruebel:
Code:
    -- Executing Goto("SIP/100-2740", "fax|s|1") in new stack
    -- Goto (fax,s,1)
    -- Executing Answer("SIP/100-2740", "") in new stack
    -- Executing SetVar("SIP/100-2740", "FAXFILE=/var/spool/asterisk/fax/1098298980.3.tif") in new stack
    -- Executing RxFAX("SIP/100-2740", "/var/spool/asterisk/fax/1098298980.3.tif") in new stack
    -- Executing Congestion("SIP/100-2740", "") in new stack
  == Spawn extension (fax, s, 4) exited non-zero on 'SIP/100-2740'
 
Könnt ihr mich mal mit verschiedenen Geräten "dichtfaxen" ?

Sipgate: 7282920

--EDIT--

Wie ich feststellen musste wird, wenn ich von einem internen Apparat aus die "Faxnummer" anrufe (egal ob über ISDN oder SIP), ein Trägersignal gesendet.
Rufe ich jedoch von extern (Handy oder Festnetz) aus den Asterisk an kommt nicht ein Piep. der Kontext [fax] springt aber an (?!).

Wo ist denn da der Unterschied zwischen SIP intern und SIP extern?
 
ES FUNKTIONIERT! :dance:

Nachdem ich die libxml2-Pakete (wer lesen kann ist klar im Vorteil ;-) ) installiert und spandsp und Asterisk neu kompiliert habe funzte es.

Empfangen tut Asterisk nun 1A - und das über das SIP-Protokoll.

Wenn jemand möchte kann er mir gerne ein Fax senden.

--EDIT--

Unerklärlich bleibt jedoch warum es vorher schon intern funktioniert hat :gruebel:
 
Hallo Ber5erker,

das ist ja fantastisch!!

Ich würde soetwas auch gerne realisieren, sehe jedoch einen Berg von Fragen vor mir. Könntest Du vielleicht für die ganze Sache ein "Howto" schreiben ? (Ich weiß, viel gefragt :( )

Meine erste Frage wäre, wie Du über XP Faxe an Asterisk sendest, ich bekomme nur mein im Laptop eingebautes Modem als Gerät angezeigt!?

Gruß,
Tin
 
Nicht das wir uns mißverstehen: ich habe ein Fax über das eingebaute Modem im Notebook via ATA an den Asterisk geschickt als wenn ich von außen reintelefoniere.

Notebook --Line--> ATA --SIP--> Asterisk

Also ganz normal Fax-Tool angeworfen, Fax erstellt und an meine interne Nummer gesendet. Als das dann ging habe ich eine Free-Fax-Seite im Internet besucht und von dort ein Fax gesendet.

Probleme bestehen im Moment noch beim _senden_ von Faxen. Dies hat bisher erst einmal geklappt.
 
Und wie druckst du die aus?
 
Nachdem das Fax angekommen ist startet der Dialplan am Ende mittels exten => h,1,system(...) ein Script, welches das .tiff in ein .pdf wandelt und mir per Mail zuschickt -> http://scottstuff.net/scott/archives/000152.html

Das PDF wiederum kann ich mir dann ganz simpel ausdrucken.

Natürlich kann man mittels Script das Fax auch direkt an einen Drucker leiten lassen - oder einfach als PDF in ein Samba-Share speichern und den Client(s) per WinPopup die Faxankunft verkünden lassen.

--EDIT--

Das Wandeln von .tiff in .pdf hat bei mir nur mit libtiff 3.5.7 funktioniert!
Ich habe mir dazu mittels alien die libtiff und libtiff-devel-Pakete von Fedora Core 2 in .deb gewandelt.
 
Danke! Sehr schön!

Und wie versendest du Faxe? Gibt es da einen virtuellen Drucker?
 
Das ist ja grad noch mein Problem: es will noch nicht so ganz, bzw Asterisk hat bis jetzt erst ein Fax versendet, und das auch nur intern ans Notebook.

Bei Linux kannst du sagen, das Fax ist ein Script. In dem Script konvertiere ich das Dokument mittels gs in ein G3-kompatibles tiff. Dieses kopiere ich dann in z.B. /tmp und generiere eine Datei mit folgendem Inhalt:
Code:
Channel: SIP/123

Application: txfax
Data: /tmp/fax.tiff
Diese Datei kommt dann in /var/spool/asterisk/outgoing und schon wählt er die Nummer 123 und sendet das Fax - oder auch nicht ;-)
 
Vielleicht musst du bei Channel mehr angeben? Meine Callfile (für Callback & Wakup) sehen viel länger aus. Ausserdem benutze ich den local channel. Vielleicht ist das besser als direkt SIP/23 anzugeben?
 
Das kann gut sein. Die Doku für spandsp sieht eh ein wenig mau aus.

Ich werd am WE mal etwas ausgiebiger testen ;-)
 
Achja, wenn es nur jetzt die Möglichkeit gäbe, ein Fax von einem Windows-Client mit virtuellem Drucker (und irgendwie ne Nummer auch ????) an Asterisk SpanDSP zu schicken :)
 
Auch das sollte einfach zu lösen sein.

Es gibt für Windows diverse Faxtreiber, die wie Drucker angesprochen werden und eine Telefonnummer aufnehmen können.

Auf der Linuxbüchse wird diese Datei dann einfach wieder "aufgedröselt" und die Nummer extrahiert.

Alles weitere dann wie oben beschrieben.

--EDIT--

Vielleicht eine Mischung aus smbfax, t38modem und samba?
 
Hallo..

ich habe versucht anhand der oben genannten Informationen
eine Nikotel-Nummer auf einen Fax-Context umzuleiten.

Folgende Meldungen erhalte ich bei dem Versuch
von extern auf diese Nummer zu faxen:
Code:
  == Spawn extension (incoming, h, 1) exited non-zero on 'SIP/thehawk3-6001'
    -- Executing Macro("SIP/thehawk3-058f", "faxreceive") in new stack
    -- Executing SetVar("SIP/thehawk3-058f", "FAXFILE=/var/spool/asterisk/fax/1108128803.37.tif") in new stack
    -- Executing DBget("SIP/thehawk3-058f", "EMAILADDR=extensionemail/thehawk3") in new stack
    -- DBget: varname=EMAILADDR, family=extensionemail, key=thehawk3
    -- DBget: Value not found in database.
    -- Executing SetVar("SIP/thehawk3-058f", "[email protected]") in new stack
    -- Executing Goto("SIP/thehawk3-058f", "3") in new stack
    -- Goto (macro-faxreceive,s,3)
    -- Executing RxFAX("SIP/thehawk3-058f", "/var/spool/asterisk/fax/1108128803.37.tif") in new stack
    -- Executing System("SIP/thehawk3-058f", "/usr/local/sbin/mailfax /var/spool/asterisk/fax/1108128803.37.tif [email][email protected][/email] 19999999999 19999999999") in new stack
Feb 11 14:34:34 NOTICE[5497]: rtp.c:505 ast_rtp_read: Unknown RTP codec 100 received
Feb 11 14:34:34 NOTICE[5497]: rtp.c:505 ast_rtp_read: Unknown RTP codec 100 received
Feb 11 14:34:34 NOTICE[5497]: rtp.c:505 ast_rtp_read: Unknown RTP codec 100 received
Feb 11 14:34:35 NOTICE[5497]: rtp.c:505 ast_rtp_read: Unknown RTP codec 100 received
Feb 11 14:34:35 NOTICE[5497]: rtp.c:505 ast_rtp_read: Unknown RTP codec 100 received
Feb 11 14:34:35 NOTICE[5497]: rtp.c:505 ast_rtp_read: Unknown RTP codec 100 received

Feb 11 14:35:04 WARNING[5497]: app_system.c:70 system_exec_helper: Unable to execute '/usr/local/sbin/mailfax /var/spool/asterisk/fax/1108128803.37.tif [email][email protected][/email] 19999999999 19999999999'
  == Spawn extension (incoming, h, 1) exited non-zero on 'SIP/thehawk3-058f'

Die .tif Datei scheint aber zu keiner Zeit zu existieren.
Der Execute von "mailfax" schlägt fehl, weil die .tif Datei nicht existiert,
dies hab ich schon durch einen manuellen Aufruf mit Parametern
herausgefunden.

extensions.conf
Code:
[macro-faxreceive]
  exten => s,1,SetVar(FAXFILE=/var/spool/asterisk/fax/${UNIQUEID}.tif)
  exten => s,2,DBGet(EMAILADDR=extensionemail/${MACRO_EXTEN})
  exten => s,3,rxfax(${FAXFILE})
  exten => s,103,SetVar([email protected])
  exten => s,104,Goto(3)

[fax]
#exten => s,1,Answer()
#exten => s,2,SetVar(FAXFILE=/var/spool/asterisk/fax/${UNIQUEID}.tif)
#exten => s,3,RxFax(${FAXFILE})
#exten => s,4,Congestion()
#exten => s,104,Congestion()
exten => thehawk3,1,Macro(faxreceive)
exten => h,1,system(/usr/local/sbin/mailfax ${FAXFILE} ${EMAILADDR} '${CALLERIDNUM} ${CALLERIDNAME}')

#
# Example
# "incoming" could named individually at your site.
# "YourAsteriskAccount" is extension on Nikotel inbound calls
#
[incoming]
include => fax
exten => thehawk,1,Dial(SIP/15,60,Ttr)
exten => thehawk2,1,GoTo(9349,1)
exten => fax,1,Goto(fax,thehawk3,1)

Es wäre echt prima, wenn ihr mir da weiter helfen könntet.

gruss
alphamaennchen
 
Wurde inzwischen schon eine Lösung zum Senden der Faxe über "var/spool/asterisk/outgoing" gefunden? Ich habs auch mal mit

Channel: SIP/123

Application: txfax
Data: /tmp/fax.tiff

probiert. Allerdings mit dem Ergebniss, dass ich die Fehlermedlung

Forbidden - wrong password on authentication for INVITE to '"vorname.nachname" <sip:[email protected]>;

bekomme

Siehe
FoIP-Fehlermeldung
 
hi Ber5erker.
ich habe dat gleiche Problem beim Faxempfang. SIP Intern-Fax klappt nur SIP Extern-Fax klappt nicht.

libxml2 ist auch installiert, den logs kann ich leider auch nichts entehmen. zeigt keine fehler an.

das problem muss also noch woanders liegen.
 
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.