Aus KDE(Kontakt/kaddressbook) heraus wählen:

TobiasUnsleber

Neuer User
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:

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
== Manager 'astmanuser' logged on from ....
und ein paar Fehlermeldungen auftauchen.

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:

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
244,868
Beiträge
2,219,770
Mitglieder
371,584
Neuestes Mitglied
porcupine
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.