T.38 Digium Fax // Sipgate-Samurai-API

  • Ersteller Ersteller Deleted member 193577
  • Erstellt am Erstellt am
D

Deleted member 193577

Guest
Hallo zusammen,

nach vielen Experimenten steht für mich fest, FAX an einem reinen SIP-Anschluss kann nur durch T.38 einigermaßen stabil funktionieren. Die beiderseitige Implementierung (Sender zu Empfänger) ist jedoch äußerst selten. Bei einem "fallback" auf audio/g711 kommt es häufig zu Übertragungsfehlern. Will man das vorhandene Fax-Gerät und T.38 verwenden, sollte man sicherstellen, dass die Gegenseite das Protokoll ebenfalls versteht. Die Idee, man nimmt das Fax einfach selbst per T.38 entgegen und verarbeitet es dann weiter. ;)

Man benötigt folgendes:
  • Einen Sipgate-Account
  • Analoges Faxgerät
  • T.38 fähigen ATA (z.B. Grandstream HT486)
  • Asterisk 1.6.2.x, oder 1.8.
  • Digiums Fax for Asterisk

Nach ein paar grundlegenden Einstellungen kann man intern Faxe per T.38 vom eigenen Fax-Gerät empfangen und auf der Asterisk-Maschine als Tiff speichern.
Nun installiert man:
Probehalber kann man alle eingehenden Faxe abfangen und speichern:
  • exten => _X.,1,ReceiveFAX(/tmp/fax-${CALLERID(dnid)}.tif)
Das lokal empfangene und gespeicherte Fax kann man nun in ein PDF umwandeln, z.B. mit
  • tiff2ps *.tif | ps2pdf13 -sPAPERSIZE=a4 - > test.pdf [1]
und anschließend mittels Sipgate-API verschicken. Das Perlskript erwartet folgende Syntax:
  • ./sipgateAPI-fax.pl Webseitenbenutzername Passwort 498912345678 test.pdf


Die API tut also was sie soll und ein vorhandenes Fax-Gerät kann weiterverwendet werden. :)
Die automatisierte Einbindung in Asterisk ist jedoch noch stark verbesserungswürdig. Jede Idee die API vollständig zu integrieren ist herzlich willkommen.


To-Do-Liste:
  • Integration der API in den Dialplan
  • Dateinamen sinnvoll aufbauen, z.B. fax-Rufnummer-Datum-Uhrzeit.tiff erl.
  • Gewählte Faxnummer aus Variable oder Dateinamen entnehmen und an API üebrgeben erl.
  • API erwartet die Fax-Nummer im internationalen Format, ggf. in extensions.conf nationale Eingabe zulassen und neu formatieren
  • Abfragemöglichkeiten des Versandstatus prüfen
  • Konvertieren nach PDF integrieren erl.



Gruß in die Runde
R.




[1] Quelle, es sollte aber auch möglich sein, TIFF als Standard in der API zu hinterlegen, jedoch spart PDF etwas Bandbreite.
 
Zuletzt bearbeitet von einem Moderator:
Hier eine notdürftig zusammengebastelte, aber funktionsfähige erste Version:

extensions.conf
Code:
[fax-empfang]
exten => _X.,1,Verbose(Neues Fax fuer: ${CALLERID(dnid)})
exten => _X.,n,Set(FAXTIME=${STRFTIME(${EPOCH},Europe/Berlin,%Y%m%d\-%H%M)})
exten => _X.,n,Set(FAXFILE=/var/spool/asterisk/fax/fax-${CALLERID(dnid)}-${FAXTIME}.tif)
exten => _X.,n,ReceiveFAX(${FAXFILE})
exten => _X.,n,Hangup()
exten => h,1,System(tiff2ps ${FAXFILE} | ps2pdf13 -sPAPERSIZE=a4 - > ${FAXFILE}.pdf)
exten => h,n,System(perl -w /Pfad/Zum/Perlskript/sipgateAPI-fax.pl Webseitenbenutzername Passwort ${CALLERID(dnid)} ${FAXFILE}.pdf)
 
Kostenlos!

Statistik des Forums

Themen
248,887
Beiträge
2,303,975
Mitglieder
378,565
Neuestes Mitglied
BenGradish