Debian Etch + Asterisk 1.4 + HFC-S Card

Aus einem anderen Beitrag hier im Forum...
bedeutet das für mich, wenn ich Set(PRI_CAUSE=1) verwende und die nummer besetzt ist, ein "echtes" besetzt erzeugen kann ? das wäre dann doch eine saubere Lösung... ?!
das geht meiner meinung nach nur über isdn, habs noch nie ausprobiert, aber wird schon stimmen...

zum vorigen post von dir:
ob der ata das kann, musst du im handbuch nachlesen, die weiterleitungen via *2X... sind davon nicht betroffen, es handelt sich beim "call-limit" um die "echten" verbindungen zwischen asterisk und deinem telefon (dem peer, bei dem das call-limit gesetzt ist). die umleitungen mit *2X... werden ja schon auf der asterisk abgefangen und gar nicht erst an dein telefon gesandt.
xoran schrieb:
können dann trotzdem "mehrere" MSN gleichzeitig angerufen werden ? d.h. ein externer Anrufer mit MSN 1 und ein Telefonat von Intern nach extern?
genau da liegt das problem, nicht von einem telefon (peer) bei dem das call-limit auf "1" gesetzt ist.

auf einem "richtigen" sip telefon (z.b. snom) kann man das anklopfen deaktivieren, dann kommt auch der DIAL mit dem DIALSTATUS "BUSY" zurück, und du kannst den "fetzen" verwenden, beim x-lite kann man das anklopfen nicht deaktivieren. sonst passt der fetzen (bis auf die syntax)...

melde mich, wenn ich mal ein wenig mehr zeit habe, wegen der dns-geschichte...

grüße,
laureen
 
hi,

also mit dem besetzt habe ich soweit gelöst, indem ich im Macro die Voicemail entfernt habe und durch einen Rücksprung ersetzt habe.

Als nächstes habe ich mir nun noch vorgenommen, meine Anruferkennung zu setzten...

(ja ich habe die Nebenstellennummer entfernt!) ;) siehe hier
Eine Frage dazu... habe für den Test, kurz vor dem "dial" die CALLERID manuell gesetzt... ist dies "zulässig" ? oder wird die "zuerst gesetzte" benutzt ?

eine weitere Frage tut sich mir auf, wenn ich an die einrichtung eines FAX denke...
da ich an mein ATA ein analoges FAX angeschlossen habe, das externe Faxe empfangen soll (laut dialplan auch kann...), würde mich interessieren, ob ich da noch eine möglichkeit habe, etwas einzustellen, da der Faxempfang (ISDN ---> * --- > ata ---> FAX) nicht stabil läuft... (echocancellation ist deaktiviert)...


so das waren wieder fragen über fragen... und ich hoffe du kannst mir eine richtung zeigen, in die ich weitergehen und suchen kann...

Danke und gruß dd
 
Eine Frage dazu... habe für den Test, kurz vor dem "dial" die CALLERID manuell gesetzt... ist dies "zulässig" ? oder wird die "zuerst gesetzte" benutzt ?

genau so gehört das gemacht! und so bekommst du deine durchwahl hinten dran:
Code:
...
exten = _X.,n,Set(CALLERID(num)=4913012345${CALLERID(num)})
exten = _X.,n,Dial(...
das geht aber nur, wenn du vorher nicht schon mal die callerid(num) umgesetzt hast, d.h. zum zeitpunkt des setzens der callerid(num) steht vorher die durchwahl deines telefons drinnen.

dazu muss aber für den isdn anschluss das setzen der anruferkennung inkl. durchwahl freigeschaltet sein (in Ösiland zumindest)

das setzen des callerid(name) macht bei isdn keinen sinn, da ja das IMHO ohnehin nicht weitergeleitet wird. wenn du später mal über sip direkt auf andere sip-uris raustelefonierst, ist das schon was anderes, da kommt dann der inhalt des feldes "fullname" in der ast_sippeers-tabelle des telefons mit, wenn du es nicht umsetzt. ist dieses feld gesetzt, kannst du übrigens auf dem telefon selbst einstellen, was du willst, es wird immer der fullname aus der db genommen, da du dann die asterisk als outbound-proxy verwenden wirst.

eine weitere Frage tut sich mir auf, wenn ich an die einrichtung eines FAX denke...
da ich an mein ATA ein analoges FAX angeschlossen habe, das externe Faxe empfangen soll (laut dialplan auch kann...), würde mich interessieren, ob ich da noch eine möglichkeit habe, etwas einzustellen, da der Faxempfang (ISDN ---> * --- > ata ---> FAX) nicht stabil läuft... (echocancellation ist deaktiviert)...

das ist eine heikle sache, ich habe das bei uns mit einem Linksys PAP-2T über SIP am laufen, aber nur ausgehend (sprich vom fax-gerät ins isdn netz). echocancel muss auf ALLEN verbindungen ausgeschaltet sein:

- auf dem zap-channel
- auf dem sip-channel von der asterisk zum ata
- auf dem ata selbst

und der "alaw" codec (G.711a) muss bei dem sip-peer eintrag in der db sowie im ata ausgewählt sein.
dann sollte es eigentlich funktionieren. wieso verwendest du denn nicht die in den paketen enthaltene fax-to-email lösung?

grüße,
laureen
 
also... ;) das mit der Anruferkennung habe ich erfolgreich gelöst...

mit dem Fax werde ich mir noch einmal ansehen müssen.. ;)

melde mich dazu aber noch einmal ;)

cu DD


EDIT Wg. Fax: Das Analog-Fax werde ich erst einmal aus * entkoppeln, d.h. direkt verkabeln...
 
Zuletzt bearbeitet:
Anrufberechtigung...

hi,

habe mal eine Verständnissfrage:

ich möchte VOR dem Verbindungsaufbau per AGI überprüfen, ob die Zielrufnummer überhaupt erlaubt ist, anschliessend einen Protokolleintrag zusätzlich schreiben.

Jetzt die eigentliche Frage:

Kann ich im Dialplan z.B. hier einen Agiaufruf VOR und NACH dem ANRUF so einbauen, so das beide IMMER ausgeführt werden ?



exten = _X.,1,MEIN AGI AUFRUF VOR DIAL
exten = _X.,n,Dial(Zap/g1/00${EXTEN},60,${GLOBAL(DIALOUT_OPTIONS)})
exten = _X.,n,MEIN AGI AUFRUF NACH DIAL
exten = _X.,n,Hangup()


Auszug aus DIALplan

exten = h,1,Hangup()
exten = t,1,Hangup()

[isdn-out]
exten = _${GLOBAL(INTL_PREFIX)}${GLOBAL(NATIONAL_PREFIX)}X.,1,Dial(Zap/g1/${EXTEN:$[${LEN(${GLOBAL(INTL_PREFIX)})} + ${LEN(${GLOBAL(NATIONAL_PREFIX)})}]},60,${GLOBAL(DIALOUT_OPTIONS)})
exten = _${GLOBAL(INTL_PREFIX)}${GLOBAL(NATIONAL_PREFIX)}X.,n,Hangup()

exten = _${GLOBAL(INTL_PREFIX)}X.,1,Dial(Zap/g1/0${EXTEN:${LEN(${GLOBAL(INTL_PREFIX)})}},60,${GLOBAL(DIALOUT_OPTIONS)})
exten = _${GLOBAL(INTL_PREFIX)}X.,n,Hangup()

exten = _X.,1,Dial(Zap/g1/00${EXTEN},60,${GLOBAL(DIALOUT_OPTIONS)})
exten = _X.,n,Hangup()

exten = h,1,Hangup()
exten = t,1,Hangup()
 
Nach dem Anruf musst Du DeadAGI() von "exten = h,1" aus anwerfen.
 
Das heist... das Rot markierte fliegt raus, und kommt stattdessen an die grünmarkierte Position ?


Gruß DD

exten = h,1,Hangup()
exten = t,1,Hangup()

[isdn-out]
exten = _${GLOBAL(INTL_PREFIX)}${GLOBAL(NATIONAL_PREFIX)}X .,1,Dial(Zap/g1/${EXTEN:$[${LEN(${GLOBAL(INTL_PREFIX)})} + ${LEN(${GLOBAL(NATIONAL_PREFIX)})}]},60,${GLOBAL(DIALOUT_OPTIONS)})
exten = _${GLOBAL(INTL_PREFIX)}${GLOBAL(NATIONAL_PREFIX)}X .,n,Hangup()

exten = _${GLOBAL(INTL_PREFIX)}X.,1,Dial(Zap/g1/0${EXTEN:${LEN(${GLOBAL(INTL_PREFIX)})}},60,${GLOB AL(DIALOUT_OPTIONS)})
exten = _${GLOBAL(INTL_PREFIX)}X.,n,Hangup()

exten = _X.,1,MEIN AGI AUFRUF VOR DIAL
exten = _X.,n,Dial(Zap/g1/00${EXTEN},60,${GLOBAL(DIALOUT_OPTIONS)})
exten = _X.,n,MEIN AGI AUFRUF NACH DIAL
exten = _X.,n,Hangup()

exten = h,1,Hangup()
exten = h,n,DeadAGI()....

exten = t,1,Hangup()
 
Wenn der Anruf sich in "h" befindet dann wurde das Hangup bereits ausgelöst, Du solltest Ihn daher nicht noch einmal aufhängen.
 
sagen wir mal, du checkst im "/var/lib/asterisk/agi-bin/script1.php", ob die nummer erlaubt ist und im "/var/lib/asterisk/agi-bin/script2.php" werden dann die logeinträge gemacht.

damit das schön funzt, setzt du im "script1.php" eine dialplan-variable genannt "ERLAUBT" auf "ja" oder "nein", beispiel:
Code:
#!/usr/bin/php -q
<?php
function read() {
  global $in;
  $input = str_replace("\n", "", fgets($in, 4096));
  return $input;
}
 
set_time_limit(15);
 
$in=fopen("php://stdin","r");
 
while ($env=read()) {
  $s = split(": ",$env);
  $agi[str_replace("agi_","",$s[0])] = trim($s[1]);
  if (($env == "") || ($env == "\n")) {
    break;
  }
}

$erlaubt = false;

// hier kommt dein code rein, der herausfindet, ob die nummer erlaubt ist.
// ist sie erlaubt, setzt du die php-variable "$erlaubt" auf "true".

if($erlaubt) {
  echo "exec Set ERLAUBT=ja\n";
  read();
} else {
  echo "exec Set ERLAUBT=nein\n";
  read();
}
?>
der isdn-out context sollte dann wie folgt aussehen:
Code:
...
exten = _X.,1,AGI(script1.php)
exten = _X.,n,GotoIf($["${ERLAUBT}"="ja"]?erlaubt:nicht_erlaubt)
exten = _X.,n,Goto(ende)

exten = _X.,n(erlaubt),NoOp(erlaubte nummer ${EXTEN})
exten = _X.,n,Dial(Zap/g1/00${EXTEN},60,${GLOBAL(DIALOUT_OPTIONS)})
exten = _X.,n,Goto(ende)

exten = _X.,n(nicht_erlaubt),NoOp(NICHT erlaubte nummer ${EXTEN})
exten = _X.,n,Answer()
exten = _X.,n,Playback(invalid)
exten = _X.,n,Goto(ende)

exten = _X.,n(ende),Hangup()

exten = h,1,DeadAGI(script2.php)
exten = h,n,Hangup()

um jetzt im "script2.php" die dialplan variable "ERLAUBT" auszulesen, kannst du die php-funktion "retrievevar" verwenden:
Code:
#!/usr/bin/php -q
<?php
function read() {
  global $in;
  $input = str_replace("\n", "", fgets($in, 4096));
  return $input;
}
 
function retrievevar($varname) {
    echo "get variable " . $varname . "\n";
    $ret = read();
    if($ret != "200 result=0") {
        $beg = strpos($ret, "(") + 1;
        $end = strpos($ret, ")");
        $r = substr($ret, $beg, ($end - $beg));
    } else {
        $r = "";
    }
    return $r;
}
 
set_time_limit(1800);
 
$in=fopen("php://stdin","r");
 
while ($env=read()) {
  $s = split(": ",$env);
  $agi[str_replace("agi_","",$s[0])] = trim($s[1]);
  if (($env == "") || ($env == "\n")) {
    break;
  }
}

$erlaubt = trim(retrievevar("ERLAUBT"));

if($erlaubt == "ja") {
  // hier kommt der code rein, den du ausführen willst, wenn der anruf auf eine erlaubte nummer war
} elseif($erlaubt == "nein") {
  // hier kommt der code rein, den du ausführen willst, wenn der anruf auf eine NICHT erlaubte nummer war
} else {
  // hier kommt ein code rein, der ausgeführt wird, wenn die variable nicht gesetzt ist
}
?>

bevor du das ausprobierst, nicht vergessen:
Code:
# chmod 755 /var/lib/asterisk/agi-bin/script*.php

grüße,
laureen
 
hi,

damit ich das richtig verstanden habe...

[isdn-out]

;START ERLAUBE EXTERNE ANRUFE ?

exten = _X.,1,AGI(script1.php)
exten = _X.,n,GotoIf($["${ERLAUBT}"="ja"]?erlaubt:nicht_erlaubt)
exten = _X.,n,Goto(ende)

exten = _X.,n(erlaubt),NoOp(erlaubte nummer ${EXTEN})
exten = _X.,n,Dial(Zap/g1/00${EXTEN},60,${GLOBAL(DIALOUT_OPTIONS)})
exten = _X.,n,Goto(ende)

exten = _X.,n(nicht_erlaubt),NoOp(NICHT erlaubte nummer ${EXTEN})
exten = _X.,n,Answer()
exten = _X.,n,Playback(invalid)
exten = _X.,n,Goto(ende)

exten = _X.,n(ende),Hangup()

exten = h,1,DeadAGI(script2.php)
exten = h,n,Hangup()
;ENDE ERLAUBE EXTERNE ANRUFE ?



exten = _${GLOBAL(INTL_PREFIX)}${GLOBAL(NATIONAL_PREFIX)}X.,1,Dial(Zap/g1/${EXTEN:$[${LEN(${GLOBAL(INTL_PREFIX)})} + ${LEN(${GLOBAL(NATIONAL_PREFIX)})}]},60,${GLOBAL(DIALOUT_OPTIONS)})
exten = _${GLOBAL(INTL_PREFIX)}${GLOBAL(NATIONAL_PREFIX)}X.,n,Hangup()

exten = _${GLOBAL(INTL_PREFIX)}X.,1,Dial(Zap/g1/0${EXTEN:${LEN(${GLOBAL(INTL_PREFIX)})}},60,${GLOBAL(DIALOUT_OPTIONS)})
exten = _${GLOBAL(INTL_PREFIX)}X.,n,Hangup()
;exten => 9999999,2,Dial(SIP/200&mISDN/1/01777777777,30,Ttr) ;
exten = _X.,1,Dial(Zap/g1/00${EXTEN},60,${GLOBAL(DIALOUT_OPTIONS)})
exten = _X.,n,Hangup()


exten = h,1,Hangup()
exten = t,1,Hangup()

Das rot eingefärbete kann ich entfernen ? den Rest benötige ich doch... irgendwie bin ich was verwirrt... sorry...
 
Parallel Klingeln

sorry aber ich glaub ich seh den wald vor lauter bäumen nicht...

ich möchte, das wenn auf Nebenstelle 60 angerufen wird

gleichzeitig bei 10 und 20 das Telefon klingelt bis jemand abnimmt (90 sek)
exten => 60,n,Dial(SIP/10&SIP/20,90,r)

Das ganze habe ich im Internal bereich eingebaut, scheint aber nicht zu funktionieren... ?

Habe zwar gelesen, das es mit 10|20 gibt, nur find ich das nicht...

kann mir jemand ein paar stichworte geben ?

thx gruß dd
 
doch, das muss so funzen, wenn deine zwei telefone den sip peer namen "10" und "20" haben (feld "name" in der ast_sippeers tabelle).

ansonsten statt "10" den sipnamen eintragen:

Code:
...
exten = 60,n,Dial(SIP/tel10&SIP/tel20,90,r)
...


zu deinem vorigen post: ja, das rote kannst du dann rausnehmen!

grüße,
laureen
 
wer lesen kann ist klar im VORTEIL tel10 Piep.... und ich such mir nen wolf.... hatte stat tel10 immer nur 10.... sorry... da hätte ich noch lange suchen können...

@wg: AGI vor und nach Call bin ich gleich dran ;)

Gruß DD und THX

Edit Guard-X: Solche Wörter sagt man nicht ;-)
 
Kostenlos!

Statistik des Forums

Themen
248,890
Beiträge
2,304,165
Mitglieder
378,575
Neuestes Mitglied
King Manaka