[Gelöst] Asterisk IAXmodem Hylafax - angerufene Rufnummer landet nicht im Hylafax

hiddenbit

Neuer User
Mitglied seit
16 Jan 2008
Beiträge
67
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

ich habe auf Basis von Asterisk, IAXmodem und Hylafax einen funktionierenden Fax-Server, der mittels SIP-Trunk angebunden ist.

Ich habe allerdings das Problem, dass die angerufene Rufnummer bei eingehenden Faxen nicht bis zum Hylafax durch kommt. Im Asterisk Log kann ich mir die $EXTEN noch über NoOp ausgeben lassen, aber weiter geht es nicht.

Die Variablen CallID1 und CallID2 sind bei der Übergabe an das Hylafax-Skript offensichtlich leer.

Hatte das Problem schon mal einer von euch?

extensions.conf
Code:
[fax-in]
exten => _X.,1,NoOp(-->Fax ankommend auf Rufnummer: ${EXTEN}) <--)
exten => _X.,n,Dial(IAX2/iaxmodem,,Tt)

xferfaxlog
Code:
11/27/14 08:47  RECV    000000011       ttyIAX0 recvq/fax000000011.tif  ""      fax     "+49 xxx yrufnummer_ohne_durchwahly"        "+49xxxyyanruferyy"        2105385 1       0:00:54 0:00:54 ""      "$
11/27/14 08:47  CALL    000000011       ttyIAX0         ""      fax     "+49 xxx yrufnummer_ohne_durchwahly"        ""      0       0       0:00:57 0:00:57 ""      ""      ""      ""      ""      ""

Vom Hylafax Agent kommt dann folgendes:
Code:
recvq/fax000000011.tif (ftp://serverfax:4559/recvq/fax000000011.tif):
Sender: +49xxxyyanruferyy
Pages: 1
Quality: Fine
Size: default
Received: 2014:11:27 08:48:13
Time To Receive: 0:00:50
Signal Rate: 14400 bit/s
Data Format: 1-D MH
Error Correct: No
CallID1: 
CallID2: 
Received On: ttyIAX0
 
Zuletzt bearbeitet:
Ich hoffe ich habe Deine Frage richtig verstanden.

Jedenfalls kannst Du zu diesem Zweck beim Dialkommando noch einen weitere Parameter mitgeben. Bei mir schaut das zum Beispiel so aus:

exten => fax2,1,Dial(IAX2/iaxmodem/fax2,10,r)

(Das "fax2" ist in dem Fall meine eingehende "Nummer", die 2 ist dabei eine eindeutige ID, die in späteren Skripten noch weiter verarbeitet wird)

Somit stünde aus meiner Sicht - ungetestet - einem

exten => _X.,n,Dial(IAX2/iaxmodem/${EXTEN}),.....

nichts im Weg
 
Re:

Hey IEEE,

vielen Dank für die schnelle Antwort.

Aus deiner Antwort kann ich entnehmen, dass ich das Problem nicht wirklich genau erklärt habe.

Ich habe einen SIP-Trunk mit 500 Rufnummern und wollte eigentlich keine 500 fest definieren. Vielmehr wollte ich alle eingehenden Anrufe, auf die verfügbaren IAXmodems verteilen. Mir ist noch aufgefallen, dass im Hylafax Log (xferfaxlog) immer wieder die Rufnummer des SIP-Trunks auftaucht, allerdings mit der NULL am Ende statt der Durchwahl.

Ich habe die extensions.conf mal wie folgt abgeändert, das Ergebnis ist allerdings gleich (schlecht).
Code:
[fax-in]
exten => _X.,1,NoOp(-->Fax ankommend auf Rufnummer: ${EXTEN}) <--)
exten => _X.,n,Dial(IAX2/iaxmodem/${EXTEN},10,r)
 
Ich gebs zu, ich bin mir immer noch nicht sicher ob ich die Aufgabenstellung erfasst habe :)

Wenn es rein um die Verteilung der Calls auf die verfügbaren Modems geht, so musst Du Dich m.M.n. selbst darum kümmern. Zum Beispiel in dem Du ein Modem nach dem anderen anrufst, eventuell unter Berücksichtigung des DIALSTATUS.
 
Die Verteilung ist an dieser Stelle nicht das Problem. Ich habe die extensions.conf zur Erläuterung des Problems nur verkürzt.

Das Problem besteht darin, dass die ankommenden Faxe nicht erkennen lassen, an welche Rufnummer sie geschickt worden. Ich sehe immer nur die Rufnummer ohne Durchwahl - vielleicht aus der sip.conf oder vom iaxmodem :-?

Ziel ist es, die ankommende Rufnummer im Hylafax per Skript auszuwerten und entsprechend zu verarbeiten.
 
Ok, jetzt hab ichs kapiert. Wie gesagt, bei mir funktioniert die Übergabe im Dialkommando nach dem Schrägstrich problemlos. Allerdings habe ich mir grade nochmal angeschaut, wie ich das dann weiterverarbeite (ist schon wieder einige Zeit her, dass ich das gescriptet habe) und festgestellt, dass ich Hylafax seitig diesen String nach dem Schrägstrich dann in $CALLID4 drin habe. Die Absendernummer landet bei mir in $CALLID1
 
Ohne jetzt das ganze log aus einzufügen, ist mir aufgefallen, dass ich außer in der ersten Zeile (SESSION BEGIN) meine lokale Rufnummer gar nicht im finde und diese folglich auch nicht an faxrcvd übergeben wird.

Code:
Nov 27 14:01:00.37: [ 2560]: RECV recv DCN (disconnect)
Nov 27 14:01:00.37: [ 2560]: RECV FAX (000000022): from +49absenderXX, page 1 in 0:00:55, INF, 7.7 line/mm, 1-D MH, 14400 bit/s
Nov 27 14:01:00.37: [ 2560]: RECV FAX (000000022): recvq/fax000000022.tif from +49rufnummer_ohne_durchwahlXX, route to <unspecified>, 1 pages in 0:01:05
Nov 27 14:01:00.37: [ 2560]: RECV FAX: bin/faxrcvd "recvq/fax000000022.tif" "ttyIAX0" "000000022" ""
Nov 27 14:01:00.37: [ 2560]: RECV FAX: end

Ich poste mal meine Config für ttyIAX0:

Code:
CountryCode:            49
AreaCode:               yyy
FAXNumber:              "+49 yyy xxxxx0"
LongDistancePrefix:     0
InternationalPrefix:    00
DialStringRules:        etc/dialrules
ServerTracing:          1
SessionTracing:         11
RecvFileMode:           0600
LogFileMode:            0600
DeviceMode:             0600
RingsBeforeAnswer:      1
SpeakerVolume:          off
GettyArgs:              "-h %l dx_%s"
LocalIdentifier:        "NothingSetup"
TagLineFont:            etc/lutRS18.pcf
TagLineFormat:          "From %%l|%c|Page %%P of %%T"
MaxRecvPages:           25

ModemType:              Class1          # use this to supply a hint

Class1Cmd:              AT+FCLASS=1.0   # command to enter class 1.0
Class1PPMWaitCmd:       AT+FTS=7        # command to stop and wait before PPM
Class1TCFWaitCmd:       AT+FTS=7        # command to stop and wait before TCF
Class1EOPWaitCmd:       AT+FTS=9        # command to stop and wait before EOP
Class1SwitchingCmd:     AT+FRS=7        # command to stop and listen for silence
Class1RecvAbortOK:      200             # wait 200ms for abort response
Class1FrameOverhead:    4               # 4 byte overhead in recvd HDLC frames
Class1RecvIdentTimer:   40000           # 35+5secs waiting for ident frames
Class1TCFMaxNonZero:    10              # max 10% of data may be non-zero
Class1TCFMinRun:        1000            # min run is 2/3rds of TCF duration

CallIDPattern:          "NMBR="
CallIDPattern:          "NAME="
CallIDPattern:          "ANID="
CallIDPattern:          "NDID="
# Uncomment these if you really want them, but you probably don't.
#CallIDPattern:          "DATE="
#CallIDPattern:          "TIME="

Den unteren CallIDPattern Block habe ich mal testweise hinzugefügt, bringt aber keinen Erfolg.

/etc/iaxmodem/ttyIAX0
Code:
device          /dev/ttyIAX0
owner           uucp:uucp
mode            660
port            4570
refresh         60
server          127.0.0.1
peername        iaxmodem0
secret          xxxxx
codec           alaw

iax.conf
Code:
[general]
bindport = 4569
bindaddr = 0.0.0.0
disallow = all
allow = alaw
allow = ulaw
language=de
jitterbuffer=no
minregexpire=60
maxregexpire=1300
calltokenoptional = 127.0.0.1/255.255.255.255

[fax](!)
type=friend
secret=xxxxx
host=dynamic
transfer=no
disallow=all
allow=ulaw
qualify=yes
requirecalltoken=no
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.255
context=fax-out

[iaxmodem0](fax)
port=4570

Kann man das ganze denn weitergehend debuggen, um festzustellen, bis wohin die CallID's kommen?
 
Schande über mich - ich habe in der config.ttyIAX0 die entscheidende Zeile vergessen, die CallIDs überhaupt erstmal auswertet. Nachdem ich die hinzugefügt habe, erscheint in $CallID4 auch die angerufene Nummer.

Code:
ModemResetCmds:         AT+VCID=1       # enables CallID display

An dieser Stelle nochmal vielen Dank an IEEE! :)
 
Gerne. Auf das ModemResetCmds wäre ich ehrlich gesagt eh nicht gekommen, das war bei mir immer schon in der Distri-Config fix fertig drin ;-)
 
Ich hänge mich da mal dazu, leider ein bislang auch noch für mich ungelöstes Problem, nur genau andersrum.
Mein Hylafax an Asterisk hat 2 Modems über IAX angebunden, eingehend und ausgehend funktioniert prima.
Am Asterisk scheide ich bereits aus, wenn das eine Modem belegt [noparse](nr.58)[/noparse] dann geht das an di eRufnummer <59>. Funktioniert alles ganz super.
Die Nebenstellen überwache ich mittels Phonesuite - Sidebar, die auf die SIP bzw. IAX-teilnehmer zeigt.
Bei eingehenden Rufnummern sehe ich dann die Rufnummer und den Name, den mir Asterisk mit der SQL-Abfrage aus meinem Telefonbuch liefert, bei ausgehenden wird aber immer nur die Durchwahl des Modems (58 oder 59) angezeigt.
Hat irgendwer eine Idee, wie ich die ausgehende Nummer da darstellen kann?
Gruß Peter
 
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.