Debian Etch + Asterisk 1.4 + HFC-S Card

eigentlich schade, ich wollte jetzt noch auf die problematik von NAT eingehen, aber dann machen wir das später, wenn wir dir eine eigene sip uri verpassen....

zum fax: der letzte stand war ja folgender (auf seite 5 unseres threads):
[Jun 27 07:34:10] WARNING[2583]: res_agi.c:1161 handle_exec: Could not find application (RxFAX)
unser asterisk-genosse findet also die dialplan applikation "RxFAX" nicht...
jetzt bist du mal gefordert: so ein ähnliches problem hatten wir doch schon mal, oder??? und wir hatten das auch schon mal gelöst. weisst du noch, wie?
 
ja, aber ich finde in der Modules.conf keinen Eintrag, der zu RFax passen könnte...oder habe ich da jetzt etwas "verwechselt"..?!
 
nein, das stimmt schon, der eintrag fehlt leider, was uns aber nicht davon abhalten wird, diesen dort einzufügen (bitte an der richtigen stelle, damit du es eventuell später wieder leichter findest, denn das ist alles alphabetisch geordnet) und das modul auch manuell in der CLI zu laden.

zuvor lass uns bitte noch ausprobieren, ob postfix richtig konfiguriert ist und mails versenden kann. dazu senden wir eine testmail von der linux command line:
Code:
# mail -s "Testmail" <empfaenger-email-adresse>
nach drücken der eingabetaste gibst du einen beliebigen text ein (das wird der mail body), gefolgt von "<enter>.<enter>", also einen punkt in einer neuen zeile, was dem programm "mail" sagt, dass wir fertig mit dem text sind. bei der abfrage nach "Cc:" einfach nochmal enter drücken und die mail sollte rausgehen.

sollte sie nicht auf deinem mailserver ankommen, schau dir mal die datei "/var/log/mail.info" an, dort steht dann der grund warum die mail nicht zugestellt werden konnte.

funzt das soweit?
 
auch hier alles IO mail ist angekommen ;)
 
also, jetzt kannst du die folgende zeile in die datei "/etc/asterisk/modules.conf" eintragen:
Code:
...
load => app_rxfax.so
...
und das modul auch gleich über die CLI der asterisk laden:
Code:
*CLI> module load app_rxfax.so
[Jun 29 16:48:10] NOTICE[7662]: /usr/src/agx-ast-addons/app_rxfax.c:440 load_module: RxFax using spandsp 20071130 124318
[Jun 29 16:48:10] NOTICE[7662]: /usr/src/agx-ast-addons/app_rxfax.c:443 load_module: RxFax output also available in /var/log/asterisk/rxfax.log
  == Registered application 'RxFAX'
 Loaded app_rxfax.so => (Trivial FAX Receive Application)
schön, modul ist geladen, damit aber jetzt das script, das die faxe versendet, auch die richtigen parameter verwendet, ändern wir in diesem script (/var/lib/asterisk/agi-bin/hangup_fax.php) diese auf passende werte:
Code:
...
$debug = true;
$copy_to_web = true;
$keep = false;

$senderemail = "[email protected]";
$sendername = "mydomain.com Fax-Server";
 
$fallback_email = "[email protected]";
 
$motd_file = "/etc/asterisk/fax.motd";

$tmpdir = "/var/tmp";
$webdir = "/var/www/fax";
...
zur erklärung:

$debug: erzeugt bei "true" eventuelle php fehler-ausgaben auf der asterisk cli, die ersichtlich sind, wenn das debugging für AGI scripts aktiviert ist ("*CLI> agi debug")

$copy_to_web: du kannst zusätzlich zum mailversand die tiff und pdf dateien in einem verzeichnis übers web zur verfügung stellen, dann muss dieser parameter auf "true" gesetzt sein. zusätzlich wird eine textdatei dort angelegt, die alle daten des anrufes enthält

$keep: wenn dieser parameter auf "true" gesetzt ist, werden die generierten dateien im temporär-verzeichnis nicht gelöscht.

$senderemail: der absender des mails, muss eine gültige domain haben, sonst kann es sein, dass einige mailserver diese mail nicht akzeptieren

$sendername: der name des absenders, der z.b. im outlook vor der email adresse des absenders angezeigt wird

$fallback_email: das ist die empfänger email-adresse, an die das fax gesendet wird für den fall, dass der eintrag der extension-email verknüpfung für die entsprechende extension in der datenbanktabelle "ast_fax" nicht gefunden wurde

$motd_file: dieses file wird als "vorlage" für das mail verwendet, kann jetzt eine datei im html-stil oder reiner text sein. schau dir die hier verwendete "/etc/asterisk/fax.motd" an, du kannst diese gerne auf deine bedürfnisse anpassen (wenn du z.b. eine deutsche mail haben willst)

$tmpdir: dort werden die temporären dateien angelegt

$webdir: das ist das lokale zielverzeichnis des (lokalen) webservers, wenn die tiff und pdf dateien über web zur verfügung gestellt werden.

setze $copy_to_web auf "false", und gib bei den 3 email adress-parametern für dich passende werte an, dann kannst du schon mal versuchen, ein fax zu empfangen.
 
Zuletzt bearbeitet:
alles soweit umgesetzt... werde mir jetzt mal ein fax senden... ;)
 
na dann bin ich mal gespannt....
 
prima funzt auch ;)
 
na da geht's ja schlag auf schlag....
und weiter gehts: die notrufe. ich weiss zwar nicht, was die deutsche telekom regulierungs-behörde (RegTP, die "bundesnetzagentur") hier für euch vorschreibt, in Ö ist es so, dass es nur eine empfehlung der hiesigen regulatoren gibt, die besagt, dass notrufe (da ja die ohne irgendeine vorwahl zu wählen sein müssen) aus dem lokalen netzbereich abgesetzt werden sollten. das bedeutet, dass es notwendig ist, diese über die ISDN leitung rauszusenden, damit die ISDN wählämter diese anrufe an lokale einsatzstellen weiterleiten können.

der dazu gehörige abschnitt befindet sich im "[internal]" context:
Code:
...
; ---------- emergency calls ----------
; these are just samples for Austria, adjust for your country
exten = 112,1,Goto(emergency,112,1)
exten = 122,1,Goto(emergency,122,1)
exten = 133,1,Goto(emergency,133,1)
exten = 144,1,Goto(emergency,144,1)
exten = 141,1,Goto(emergency,141,1)
; ---------- end emergency calls ----------
...
hier werden alle notrufnummern eingetragen, die erreichbar sein müssen, die obige liste ist die für Ö. ich möchte hier nur anmerken, dass es deswegen keine durchwahlen geben darf, die gleich einer notrufnummer sind.

des weiteren finden wir im abschnitt "[globals]" der "/etc/asterisk/extensions.conf" die variable "EMERGENCY_TRUNK", die per default auf "Zap/1" gesetzt ist:
Code:
...
[globals]
...
EMERGENCY_TRUNK = Zap/1
...
normalerweise wählen wir, wenn wir über ISDN rauswählen, über "Zap/g1" raus, was einer gruppierung der ersten beiden ISDN b-kanäle entspricht. diese gruppe wird in der "/etc/asterisk/zapata.conf" mittels dem parameter "group = 1" gesetzt.

aber warum jetzt nur für die notrufe "Zap/1"? das hat den grund, dass wir hier dediziert einen b-kanal (und zwar den allerersten) anstatt einer gruppierung ansprechen wollen.

im context "[emergency]" in der "/etc/asterisk/extensions.conf" wird im prinzip folgende spezielle prozedur für diese doch so wichtige funktion umgesetzt:

1. überprüfe, ob auf dem ersten b-kanal gesprochen wird
2. ist dieser b-kanal frei, wähle die notrufnummer
3. wenn gesprochen wird, lege den laufenden anruf auf, warte eine sekunde (notwendig für den sauberen hangup) und wähle die notrufnummer

was ist da jetzt zu tun?

es sind die oben gezeigten notrufnummern im dialplan im context "[internal]" auf das jeweilige land anzupassen, d.h. für dich: die deutschen notrufnummer rein, die österreichischen raus.

testen sollten wir das jetzt nicht, stattdessen solltest du darauf vertrauen, dass das funktioniert.
 
Ok ist dann auch geändert worden :)

dann könnte ich so auch z.b. "priveligierte" nummern alarmanlage und co definieren... :)
 
fällt dir noch etwas ein, was dir für deine konfig noch fehlt?
 
Also ein paar Punkte die für mich noch interessant wären evtl. ;)

Sprachmenü für weiterleitung ( anruf auf Telnr,sprachmenü mit zielteilnehmerauswahl), Fax out (email2fax?), anrufweiterleitung (verbinden von Teilnehmer), Guthabenabfrage (wer hat wie lange wohin telefoniert...) einbinden "mehrerer Sip accounts (wenn sip 1 belegt dann sip2 ... ) oder wenn zielnummer festnetz, dann sip1 wenn zielnummer handy dann sip2...

alles überlegungen die interessant wären.

ach ja.. absicherung der anlage (watchdog funktion) wenn prozess beendet wird automatisch gestartet... usw. um eine sicher laufende anlage zu erreichen...
 
gut, zu den punkten:
email2fax: haben wir bei uns selbst sowie bei unseren kunden nicht im einsatz. der grund ist hier weniger ein technischer als ein oranistatorischer: Wenn man sich die frage stellt, welche dokumente heutzutage gefaxt werden, kommt man sehr schnell zum schluss, das es sich hier eigentlich nur noch um unterzeichnete original-dokumente geht, die (was jetzt unsere erfahrung zeigt) nicht unbedingt eingescannt werden, um sie dann via email an ein fax zu senden. da ist es doch naheliegend, dass wenn sie schon mal eingescannt sind, diese gleich via email an den empfänger zugestellt werden. es wird mit den zakotel pakete auch die "schwester-applikation" von RxFAX mitgeliefert, die heisst dann TxFAX und funktioniert quasi als virtuelles, ausgehendes fax gerät. das problem ist hier, ein eine tiff-datei aus der großen vielfalt an möglichen dokumenttypen (doc, xls, txt, pdf, etc.) zu generieren, die auch fax-konform ist. dafür habe ich persönlich jetzt keine lösung, aber vielleicht gibt da die forums-suche etwas her.

sprachmenü: es ist natürlich möglich, sogenannte IVR (Interactive Voice Response) applikationen im dialplan abzubilden, jedoch denke ich persönlich, dass es hier am meisten sinn macht, diese den individuellen ansprüchen anzupassen und jeweils für die fachlichen bzw. organisatorischen anforderungen zu programmieren. als hilfe sei hier dieser link erwähnt:
http://www.voip-info.org/wiki/view/IVR
da gibt es unzählich beispiele, wie man so etwas realisieren kann.

anrufweiterleitung: in der telefonwelt "transfer" genannt, das ist eine funktion, die ausschlieslich durch einen benutzer eines endgeräts durchgeführt wird und deswegen wird das auch im endgerät abgebildet. ein blick in die betriebsanleitung des endgeräts verrät, wie das geht. im prinzip gibt es 2 arten von transfer:
- "blind transfer": weiterleitung eines gespräches auf eine andere nebenstelle/nummer ohne rücksprache mit dem benutzer der (neuen) nebenstelle od. nummer
- "attended transfer": weiterleitung mit vorheriger rücksprache.
beide funktionen werden lt. normierung in den RFCs für SIP von asterisk standardmäßig unterstützt.

guthabenabfrage: da du ja in der datenbanktabelle "ast_cdr" alle gespräche dargestellt hast, können hier sehr leicht applikationen gebaut werden, die über db-abfragen einen wert ermitteln und diesen wert dann mit dialplan applikationen wie etwa "SayNumber" oder "Playback" dem anrufer mitgeteilt werden können. dies funktioniert im allgemeinen über AGI (Asterisk Gateway Interface) scripts, das sind programme, die aus dem dialplan heraus aufgerufen werden und mit bestimmten befehlen über "standard-in" und "standard-out" die asterisk steuern. diese methode ermöglicht es, hierfür sämtliche programmiersprachen verwenden zu können, z.b. PHP, Perl oder C/C++. auch hierzu gibts einen link:
http://www.voip-info.org/wiki-Asterisk+AGI
und hier findest di ein beispiel in den zakotel asterisk paketen für die entgegennahme von faxen:
/var/lib/asterisk/agi-bin/fax.php

mehrere SIP accounts: das verwendest du ja bereits über die TRUNKs (macro-trunkdial), wenn sipgate belegt, dann nimm ISDN, die technologie ist hier nicht relevant.
was jetzt damit (bis jetzt) nicht abgebildet wurde, ist die möglichkeit, abhängig von der gewählten rufnummer unterschiedliche trunks zu verwenden. das nennt man LCR (Least Cost Routing). Es gibt sicher hier im Forum etlich einträge zu diesem thema, und natürlich auch information auf voip-info.org:
http://www.voip-info.org/wiki/view/Asterisk+billing

watchdog: das ist bereits in die standard asterisk startscripts eingebaut. es wird die asterisk über so ein "watchdog" script gestartet, das bei nicht ordnungsgemäßer beendigung des hauptprozesses (z.b. core dump, wir erinnern uns) diesen nach 5 sekunden neu startet. das reicht in den meisten fällen aus, ausser es soll die asterisk anlage in einer HA-umgebung (High Availibility) betrieben werden, dafür ist doch sehr tiefes asterisk- und HA wissen von nöten, info gibts hier:
http://www.voip-info.org/wiki/view/Asterisk+High+Availability+Solutions

ich würde dir vorschlagen, selbst ein wenig rumzuexperimentieren, die grundlagen solltest du ja jetzt draufhaben, leider ist jetzt mal lesen angesagt.

was ich gerne in den nächsten tagen (bzw. wenn du halt zeit hast) mit dir durchgehen würde, ist: asterisk als sip server für eine internet domain, die sip-uri anwahl zulässt (natürlich nur, wenn es dich interessiert). da können wir dann miteinander telefonieren, ohne irgendeine flatrate zu verwenden...

so, ich mach mal hier schluss, und besuche mal meine eltern.

ich würde sagen wir "hören" uns morgen, ok?

grüße und schönen abend,
laureen
 
Also möchte mich auch schon mal jetzt für deine super Unterstützung bedanken, das du mich Stück für Stück so gut begleitet hast. Echt prima !
:groesste:

ok macht sinn ;)
habe ich schon erste "versuche" gemacht, habe nur probleme wenn ich eine 2stellige zahl einlesen möchte... habe das bisher so gelöst...
exten => 8001,n,WaitExten(5) ;warte auf 5 sekunden auf eingaben
habe hier aber auch "wiedersprüchliche" angaben gefunden
oder sollte ich besser READ() nuzten... ?! ich bin mich da aber noch am "einlesen" von daher... ;)
dachte das kann ich auch direkt mit den implementierten SQL anweisungen realisieren, wobei ich schon fast denke, das es effektiver ist, dies über ein eigenes Script zu machen
mehrere SIP accounts
d.h. wenn ich TRUNK0 = SIP1,TRUNK1=SIP2,TRUNK2=SIP3,TRUNK3=ISDN habe, kann ich automatisch (klar ich muss die extensions.conf noch ändern... :) ) die "Leitungswahl" regeln lassen.


So... jetzt habe ich aber auch erst einmal wieder "viel zu lesen..."

was ich gerne in den nächsten tagen (bzw. wenn du halt zeit hast) mit dir durchgehen würde, ist: asterisk als sip server für eine internet domain, die sip-uri anwahl zulässt (natürlich nur, wenn es dich interessiert). da können wir dann miteinander telefonieren, ohne irgendeine flatrate zu verwenden...
ja gerne ;)

Gruß Dennis
 
mor-gähn!

vielen dank für die blumen!

die sprachmenüs sollten grundsätzlich mit "Read" gemacht werden, der grund, warum auf der voip-info seite "WaitExten" verwendet wird ist, dass im amiland (USA) oft die durchwahlen nicht direkt wählbar sind, da sagt dann eine nette dame: "wählen sie bitte die durchwahl des gewünschten teilnehmers oder die 0 für die vermittlung!". hier ein kleines beispiel mit "Read":
- das audiofile "select1" würde hier folgendes sagen: "bitte wählen sie 1 für den verkauf, 2 für den support, 3 für die buchhaltung oder 0 für die vermittlung!" und ist zu finden im verzeichnis "/var/lib/asterisk/sounds/ansagen/select1.*"
- das sprachmenü ist erreichbar, wenn keine durchwahl bei der anwahl mitgewählt wurde (extension "s" im dialplan context "[inbound]")
- susi mach die vermittlung, ihre dw ist 999
- hans macht verkauf, seine dw ist die 100
- peter macht support, seine dw ist die 200
- silvia mach buchhaltung, ihre dw ist die 300
- die durchwahlen sind (wie immer) im context "[internal]" erreichbar

Code:
...
[inbound]
exten = s,1,Answer()
exten = s,n(beginn),Wait(0.5)
exten = s,n,Read(DW,ansagen/select1,3,,3,5)
exten = s,n,GotoIf($["${DW}"="0"]?internal,999,1)
exten = s,n,GotoIf($["${DW}"="1"]?internal,100,1)
exten = s,n,GotoIf($["${DW}"="2"]?internal,200,1)
exten = s,n,GotoIf($["${DW}"="3"]?internal,300,1)
exten = s,n,Goto(beginn)
...
{nicht getestet, sollte aber so gehen}

mehrere SIP accounts: deine annahme ist richtig, es werden alle TRUNKs der reihe nach durchprobiert, angefangen mit TRUNK0, dann TRUNK1, dann TRUNK2 usw. bis ein erfolgreicher anruf zustande gekommen ist. Beachte bitte, dass wenn ein trunk eine andere anwahl als dir e.164 nummer (z.b. "4930123456", also OHNE "00" am anfang) verlangt (wie z.b. ISDN), muss dieser umbau der nummer in einem separaten context abgehandelt werden, wie wir es für sipgate gemacht haben.

grüße,
laureen
 
;) das heist folgendes würde auch gehen ? werde das zwar gleich einmal ausprobieren... :)


[inbound]
exten = s,1,Answer()
exten = s,n(beginn),Wait(0.5)
exten = s,n,Read(DW,ansagen/select 0,30,,33,55)
exten = s,n,GotoIf($["${DW}"="0"]?internal,999,1)
exten = s,n,GotoIf($["${DW}"="1"]?internal,100,1)
exten = s,n,GotoIf($["${DW}"="2"]?internal,200,1)
exten = s,n,GotoIf($["${DW}"="30"]?internal,300,1)
exten = s,n,Goto(beginn)
 
sieh dir mal auf der asterisk CLI den Read befehl an:
Code:
*CLI> core show application Read
wegen der parameter, die sehen ein wenig "unkonventionell" aus.

grüße,
laureen
 
so... soweit wäre das mit dem Menü IO, aber ich habe noch ein Problem, wenn ich SIP Teilnehmer mit AnschlussNr >19 erstelle...

Dh. Teilnehmer 20 (ja war fax... :) ) bzw. 25 oder 35... werden nicht akzeptiert...
leider finde ich ausser... _2X in der extensions.conf nichts, was dies verbieten sollte...

kannst du mir da noch einen Tip geben ;)

den Rest (112... und Co. habe ich scharfgeschaltet..)

Thx.. und Gruß Dennis
 
hi mal wieder,

aber du hast doch im "[internal]" context gleich nach den hints folgendes stehen:
Code:
...
; extensions
exten = _1X,2,Macro(stdexten)
exten = _1X,n,Hangup()
...
änderst du das jetzt z.b. in
Code:
...
; extensions
exten = _[123]X,2,Macro(stdexten)
exten = _[123]X,n,Hangup()
...
werden alle 2-stelligen durchwahlen "akzeptiert", die mit 1, 2 oder 3 beginnen. keine sorge, unser fax ist davon nicht betroffen, da dieses explizit angegeben ist. anmerkung: anstatt "_[123]X" kannst du auch "_[1-3]X" verwenden.

willst du jetzt, dass diese extensions auch über isdn erreichbar sind, musst du diese im context "[inbound]" als DIDs definieren und mit einem "Goto" in den internal kontext schicken.

bei den sip peers bitte das feld "regexten" in der db nicht vergessen, das wird benötigt, um die hints anzulegen (über das webscript) und die priorität "1" für die extension (siehe oben, wir starten ja erst mit der priorität "2") zu definieren.

sollte es dennoch nicht funzen, poste bitte mal die ausgabe von
Code:
*CLI> dialplan show internal
dann kann ich es mir ansehen...

grüße,
laureen
 
Morgäään :)

also mit den extensions hat prima funktioniert..., ;)
bin gerade dabei ein "Durchwahlmenü" zu erstellen...

habe aber noch ein Problem mit ausgehenden Anrufen...

also interne Anrufe an z.b. "11" funktionieren, Anrufe an "0 für Amt + 030 1234567" auch, aber "0 für Amt + 1234567" wird abgelehnt...
[Jul 2 10:27:38] NOTICE[2394]: chan_sip.c:13952 handle_request_invite: Call from 'tel42' to extension '01234567' rejected because extension not found.
...

Man(n) sollte wissen was man tut, wenn man in den Outbound Einstellungen fummelt... :) hat sich erledigt... :)
Gruß Dennis
 
Zuletzt bearbeitet:
Kostenlos!

Neueste Beiträge

Statistik des Forums

Themen
248,853
Beiträge
2,302,883
Mitglieder
378,501
Neuestes Mitglied
Dalle85