- Mitglied seit
- 22 Jul 2005
- Beiträge
- 67
- Punkte für Reaktionen
- 0
- Punkte
- 0
Hallo,
hier eine Möglichkeit aus KDE Kontact(bzw. kaddressbook das die eigentliche Applikation dahinter ist) heraus zu wählen.
Bei dem ganzen ist letztlich ein CGI-Script das per wget aufgerufen wird.
Einrichtung:
1. Webserver mit Perl CGI einrichten
2. Im Asterisk das Managerinterface konfigurieren und * neu starten
Ich verwende fuer dieses Beispiel folgende manager.conf. Die Konfiguration ist nicht für den Produktiveinsatz gedacht:
3. Das Wählscript [1] ins cgi-bin Verzeichnis kopieren und die Variablen für den Managerzugang anpassen(IP des Servers). Dem Script Aussführrechte geben.
4. Wget auf dem Client installieren
5. Das CGI testen
Asterisk CLI(asterisk -r) nebenher laufen lassen auf Verbose+debug 3. In der Konsole einen wget aufruf absetzen:
wget 'http://serverip/cgi-bin/dial.cgi?origin=URSPRUNGSTELEFON&destination=ZIELNUMMER'
Jetzt muesste im Webserver Fehlerprotokoll eine Zeile auftauchen:
Gleichzeitig muesste im Asterisk CLI diese Zeile
6. Jetzt die Wahlplanerweiterung gemaess [2] hinzufuegen und mit ael reload aktivieren.
Der obige Kommandozeilenaufruf müsste jetzt einen richtigen Anruf ausführen.
7. Kontact konfigurieren:
Menüleiste: Einstellungen -> Kontact einrichten -> Kontakte -> allgemein -> Skripteinbindung -> Telefon:
Wichtig: Auf das Quoten des &-Zeichens mit dem Backslash achten und die richtige SIP-ID für das eigene Telefon an Stelle von URSPRUNGSTELEFON eintragen.
fertig.
[1] Das Perl-CGI dial.cgi zum waehlen
[2] Die Wahlplanerweiterung für AEL:
Zusatz:
Mich würde interessieren, ob noch andere Adressbuchapplikationen dazu zu bewegen sind, ein Skript zum wählen einzubinden.
hier eine Möglichkeit aus KDE Kontact(bzw. kaddressbook das die eigentliche Applikation dahinter ist) heraus zu wählen.
Bei dem ganzen ist letztlich ein CGI-Script das per wget aufgerufen wird.
Einrichtung:
1. Webserver mit Perl CGI einrichten
2. Im Asterisk das Managerinterface konfigurieren und * neu starten
Ich verwende fuer dieses Beispiel folgende manager.conf. Die Konfiguration ist nicht für den Produktiveinsatz gedacht:
Code:
[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0
displayconnects = yes
[astmanuser]
secret = astmanpw
permit=0.0.0.0/0.0.0.0
writetimeout = 100
read = system,call,log,verbose,command,agent,user
write = system,call,log,verbose,command,agent,user
3. Das Wählscript [1] ins cgi-bin Verzeichnis kopieren und die Variablen für den Managerzugang anpassen(IP des Servers). Dem Script Aussführrechte geben.
4. Wget auf dem Client installieren
5. Das CGI testen
Asterisk CLI(asterisk -r) nebenher laufen lassen auf Verbose+debug 3. In der Konsole einen wget aufruf absetzen:
wget 'http://serverip/cgi-bin/dial.cgi?origin=URSPRUNGSTELEFON&destination=ZIELNUMMER'
Jetzt muesste im Webserver Fehlerprotokoll eine Zeile auftauchen:
<Zeit> Initiating call from URSPRUNG to ZIEL
Gleichzeitig muesste im Asterisk CLI diese Zeile
und ein paar Fehlermeldungen auftauchen.== Manager 'astmanuser' logged on from ....
6. Jetzt die Wahlplanerweiterung gemaess [2] hinzufuegen und mit ael reload aktivieren.
Der obige Kommandozeilenaufruf müsste jetzt einen richtigen Anruf ausführen.
7. Kontact konfigurieren:
Menüleiste: Einstellungen -> Kontact einrichten -> Kontakte -> allgemein -> Skripteinbindung -> Telefon:
Code:
[noparse]wget http://serverip/cgi-bin/dial.cgi?origin=URSPRUNGSTELEFON\&destination=%N[/noparse]
Wichtig: Auf das Quoten des &-Zeichens mit dem Backslash achten und die richtige SIP-ID für das eigene Telefon an Stelle von URSPRUNGSTELEFON eintragen.
fertig.
[1] Das Perl-CGI dial.cgi zum waehlen
Code:
#!/usr/bin/perl
#use strict;
#use warnings;
#use diagnostics;
use Socket;
use CGI qw(:standard);
use constant SERVER => "127.0.0.1";
use constant PORT => "5038";
use constant USER => "astmanuser";
use constant PW => "astmanpw";
use constant PREFIX => 0;
use constant EOL => "\r\n";
use constant CONTEXT=> "webdial";
use constant ORG_CON=> "webdial_from";
my $cgi=CGI->new();
my $origin=param("origin");
my $dest=param("destination");
sub _log { print STDERR "".localtime()." ".$_[0]; }
if($dest and $origin) {
_log("Initiating call from $origin to $dest");
} else {
_log("ERROR: Wrong Parameters: Origin=$origin, Destination=$dest");
}
my $exten="$dest";
# ---
if($exten =~ /^[^0-9]49/) { $exten="0".substr($exten,3); } # +4912345 -> 012345 (Internationale Vorwahl durch
# Nationale in D ersetzen)
if($exten =~ /^[^0-9][0-9]{2}/) { $exten="00".substr($exten,1);} # +12 -> 0012 (Internationale Vorwahl aendern)
#if($exten =~ /^06151/) { $exten=substr($exten,5); } # 061511234-> 1234 (Vorwahl Darmstadt entfernen)
#if($exten =~ /^9067[12]/) { $exten=substr($exten,4); } # 9067123 -> 123 (Eigene Stammnummer abschneiden)
#if(length($exten) > 3) { $exten=PREFIX.$exten; } # Prefix bei Nummern laenger als 3 dazusetzen
my $login=
"Action: Login".EOL
."Username: ".USER.EOL
."Secret: ".PW.EOL
."Events: off".EOL
.EOL;
my $dial=
"Action: Originate".EOL
."Channel: LOCAL/$origin\@".ORG_CON.EOL
."Context: ".CONTEXT.EOL
."Exten: $exten".EOL
."Priority: 1".EOL
."Variable: CALLERNUMBER=$origin|TARGETNUMBER=$exten".EOL
.EOL;
my $logoff=
"Action: logoff".EOL
.EOL;
socket(AMI, PF_INET, SOCK_STREAM, getprotobyname("tcp"));
my $sin = sockaddr_in(PORT,inet_aton(SERVER));
connect(AMI,$sin);
send(AMI,$login,0);
send(AMI,$dial,0);
send(AMI,$logoff,0);
close(AMI);
[2] Die Wahlplanerweiterung für AEL:
Code:
context globals {
ASTSERVERIP=1.2.3.4
EXTERNE_LEITUNG=CAPI/g1
};
context webdial {
_X. => {
// CallerID wieder zuruecksetzen
Set(CALLERID(number)=${CALLERNUMBER});
Set(CALLERID(name)=);
Dial(${EXTERNE_LEITUNG}/${EXTEN});
};
context webdial_from {
_X. => {
// Intercom fuer Snom Telefone einschalten, das muss
// zusaetzlich an den Snom-Telefonen selbst eingeschaltet werden
// unter Erweitert -> Telefonverhalten -> Gegensprechen: an
SIPAddHeader(Call-Info:<sip:${ASTSERVERIP}>\;answer-after=0);
// Caller ID auf einen sinnvollen Wert setzen
Set(CALLERID(name)="Anwahl zu ${TARGETNUMBER}");
Set(CALLERID(number)=*);
// Anwahl
Dial(SIP/${EXTEN});
};
};
Zusatz:
Mich würde interessieren, ob noch andere Adressbuchapplikationen dazu zu bewegen sind, ein Skript zum wählen einzubinden.
Zuletzt bearbeitet: