Webinterface: Rückwärtssuche in Anrufliste?

Lactrik

Neuer User
Mitglied seit
27 Jun 2005
Beiträge
31
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

in der Anrufliste der FBF führt ein Klick auf eine Anrufernummer standardmäßig dazu, dass er versucht, diese Nummer vom Rechner aus anzuwählen.

Gibt es eine Mod, die diese Funktion abändert, so dass ein Mausklick auf eine Rufnummer eine Rückwärtssuche mit Hilfe einer Telefonbuch-Webseite ("DasÖrtliche") durchführt? Habe nur JFritz gefunden: Ein tolles, mächtiges Tool, aber mir etwas zu umfangreich und noch dazu Clientseitig... manchmal ist weniger mehr ;)

Gibt es sowas?
 
Zuletzt bearbeitet:
Hi.
Zumindest über das Webinterface hab ich hierfür noch keine Ansätze gesehen.

Unter telnet wäre schon eher was möglich, aber was fertiges gibt es auch hier mit.

MfG Oliver
 
Lactrik schrieb:
Gibt es eine Mod, die diese Funktion abändert, so dass ein Mausklick auf eine Rufnummer eine Rückwärtssuche mit Hilfe einer Telefonbuch-Webseite ("DasÖrtliche") durchführt?
Sollte relativ einfach machbar sein: Man braucht ja nur das Link-Ziel auszutauschen. Die entsprechende Stelle sollte sich in einer der HTML- oder Javascript-Dateien unterhalb von /usr/www/ befinden.

Andreas

P.S.:
Die Datei heißt /usr/www/all/html/de/fon/foncalls.js, die Funktion uiRufnummerDisplay: Beispiel für eine Änderung für Rückwärtssuche:
Code:
function uiRufnummerDisplay (n) {
        if (n == "") return g_txtUnbekannt;
        // return "<a href=\"javascript:Dial('"+n+"')\" title=\""+n+"\">"+n+"</a>";
        return "<a href=\"http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?kw_invers=" 
         + n + "&main=Antwort&SEITE=INVERSSUCHE&s=2\">" + n + "</a>";
}
 
Zuletzt bearbeitet:
Danke, mal austesten :)
 
Hallo, im LCR von Harald kann man über die Telefonliste durch klicken auf das "i" eien Rückwärtssuche starten.
Automatisches LCR Update

In dem Thread "Echtes LCR mit Fallback und komplexen Wahlsperren" wird über die Fritz!Box LCR Erweiterung diskutiert.
 
Ja, LCR hatte ich schon drauf, hat mich nicht so überzeugt... besonders, weil es sich nicht wieder entfernen ließ.

Kann man den Ordner /usr/www/all/html/de/fon/ eigentlich auch beschreiben, oder wie bekommt man die geänderte Datei dorthin?
 
@Lactrik
Code:
/var/mod/root # cp /usr/www/all/html/de/fon/foncalls.js ./
/var/mod/root # vi foncalls.js
/var/mod/root # mount -o bind foncalls.js /usr/www/all/html/de/fon/foncalls.js
/var/mod/root #
Leider funktioniert das so nur für Nummern mit Vorwahl...

MfG Oliver
 
olistudent schrieb:
@Lactrik
Code:
/var/mod/root # cp /usr/www/all/html/de/fon/foncalls.js ./
/var/mod/root # vi foncalls.js
/var/mod/root # mount -o bind foncalls.js /usr/www/all/html/de/fon/foncalls.js
/var/mod/root #
Leider funktioniert das so nur für Nummern mit Vorwahl...

MfG Oliver
Super, hat geklappt :D Funktioniert einwandfrei, irgendwie haben sowieso alle Rufnummern in meiner Liste eine Vorwahl, auch die Ortsrufnummern. Liegt vielleicht daran, dass eingehende Anrufe über VoIP generell eine Vorwahl senden? Ich nutze nämlich nur noch meine VoIP Nummern und kein Festnetz mehr.

Werd jetzt noch versuchen, unten die Sachen mit der Wählhilfe zu entfernen, einfach aus optischen Gründen und dann ist es perfekt :D thx.
 
Bei mir sind das die ausgehenden Anrufe. Die eingehenden werden alle mit Vorwahl gesendet.

MfG Oliver
 
olistudent schrieb:
@Lactrik
Code:
/var/mod/root # cp /usr/www/all/html/de/fon/foncalls.js ./
/var/mod/root # vi foncalls.js
/var/mod/root # mount -o bind foncalls.js /usr/www/all/html/de/fon/foncalls.js
/var/mod/root #
Leider funktioniert das so nur für Nummern mit Vorwahl...

MfG Oliver

sagt mal gibts dafür auch noch eine Lösung das man die Abfrage über dasÖrtliche parallel dazu ausführen könnte ?!?
Also ich meine eher das der DIAL noch so erhalten bleibt und ich daneben noch einen Link reinbauen kann der die Abfrage beim Örtlichen initiiert.

Wie heist die Datei die die Anruferliste beherbergt ? das kann doch nicht auch die foncalls.js sein ? und wie zum Henker bekommt man sie wieder an der stelle abgespeichert (/usr/www/all/html/de/fon/foncalls.js) ?
 
team-t schrieb:
sagt mal gibts dafür auch noch eine Lösung das man die Abfrage über dasÖrtliche parallel dazu ausführen könnte ?!?
Also ich meine eher das der DIAL noch so erhalten bleibt und ich daneben noch einen Link reinbauen kann der die Abfrage beim Örtlichen initiiert.

Wie heist die Datei die die Anruferliste beherbergt ? das kann doch nicht auch die foncalls.js sein ? und wie zum Henker bekommt man sie wieder an der stelle abgespeichert (/usr/www/all/html/de/fon/foncalls.js) ?
Klar geht das. Ich glaub, das mach ich bei mir auch noch, wäre die Ideallösung.

foncalls.js ist nur die Javascript-Datei... foncalls.html heißt die eigentliche Datei.
 
Lactrik schrieb:
foncalls.js ist nur die Javascript-Datei... foncalls.html heißt die eigentliche Datei.

ach denen von AVM trau ich alles zu ;)

So umgeschrieben sind sie nun alle passig. Die frage ist nur, wie bekomm ich sie nun wieder dahin wo sie hingehören ? Die Verzeichnisse sind ja read only.

Edit: Sorry hatte Olistudent ja schon beschrieben wie das geht .... mein Fehler
 
Zuletzt bearbeitet:
team-t schrieb:
Also ich meine eher das der DIAL noch so erhalten bleibt und ich daneben noch einen Link reinbauen kann der die Abfrage beim Örtlichen initiiert.
Klar, die Ausgabe von uiRufnummerDisplay wird einfach für jede Nummer in die HTML-Seite eingebaut. Dort kannst du also den Rückwärtssuche-Link auch zusätzlich ausgeben.

Wie heist die Datei die die Anruferliste beherbergt ? das kann doch nicht auch die foncalls.js sein ?
Die Anruferliste wird aus foncalls.html serverseitig und foncalls.js clientseitig erzeugt.

Andreas
 
Hallo mal wieder bin praktisch fertig mit allem aber nun kommen noch 2 Fragen auf.

1. kann man in /usr/www/all/html/de/images/ nicht schreiben ? wollte da gerne ein kleines gif ablegen um es in der Anruferliste zu verwenden, klappt aber irgendwie nicht

Fehlermeldung:
Code:
# mount -o bind dasoertliche.gif /usr/www/all/html/de/images/dasoertliche.gif
mount: Mounting /var/tmp/dasoertliche.gif on /usr/www/all/html/de/images/dasoertliche.gif failed: No such file or directory

und 2. kann man nicht irgendwie die vorwahl mit vorklemmen wenn keine gewählt wurde ?!? wenn man das JS verbiegt müssste das ja machbar sein , ala Abfrage ob mit 0 beginnt wenn nicht dann in Anzeige Vorwahl davor schieben. So in etwa :)
 
team-t schrieb:
1. kann man in /usr/www/all/html/de/images/ nicht schreiben ? wollte da gerne ein kleines gif ablegen um es in der Anruferliste zu verwenden, klappt aber irgendwie nicht
Der Frage schließe ich mich mal an.

Hatte nämlich bei mir daran gedacht, den Link von der Nummer ganz zu entfernen und dahinter 2 GIFs zu machen, entweder Rückwärtssuche oder Dial.

team-t schrieb:
und 2. kann man nicht irgendwie die vorwahl mit vorklemmen wenn keine gewählt wurde ?!? wenn man das JS verbiegt müssste das ja machbar sein , ala Abfrage ob mit 0 beginnt wenn nicht dann in Anzeige Vorwahl davor schieben. So in etwa :)
Soweit kein Ding, nur woher weißt du, welche Vorwahl zu einer Nummer gehört? ;)
 
Lactrik schrieb:
Soweit kein Ding, nur woher weißt du, welche Vorwahl zu einer Nummer gehört? ;)

öhm ja klar. Vorwahlen fehlen ja nur bei den abgehenden Gesprächen. Und das ist immer die gleiche :) nämlich die welche ich bei der Konfiguration der Internetrufnummer angegeben habe.
 
so für´s erste bin ich erstmal fertig :)

Änderungen in

foncalls.html

Code:
<? include ../html/$var:lang/fon/foncalls.inc ?>
<div id="content">
	<div class="pTitel"><? echo $var:Text1 ?></div>
	<div class="pDialogo">
		<p class="mb5"><? echo $var:Text2 ?></p>
		<table id="tLegende">
			<tr>
				<td><img src="../html/<? echo $var:lang ?>/images/Callout.gif"><? echo $var:Text4 ?></td>
				<td><img src="../html/<? echo $var:lang ?>/images/Callin.gif"><? echo $var:Text5 ?></td>
				<td><img src="../html/<? echo $var:lang ?>/images/Callinfailed.gif"><? echo $var:Text6 ?></td>
			</tr>
		</table>
		<div class="mt10 mb5 tborder" style="height: 280px; overflow: auto">
			<table id="tClient">
				<tr class="Mikrodunkel">
					<th class="c1"></th>
					<th class="c3"><nobr><? echo $var:Text7 ?></nobr></th>
					<th class="c8"><nobr><? echo $var:Text24 ?></nobr></th>
					<th class="c6"><nobr><? echo $var:Text25 ?></nobr></th>
					<th class="c4"><nobr><? echo $var:Text8 ?></nobr></th>
					<th class="c5"><nobr><? echo $var:Text9 ?></nobr></th>
					<th class="c7"><nobr><? echo $var:Text18 ?></nobr></th>
					<th class="c6"><nobr><? echo $var:Text10 ?></nobr></th>
				</tr>
				<!-- "<? query telcfg:settings/RefreshJournal ?>" -->
<? if eq $var:max `` `<? setvariable var:max 30 ?>` ?>
<? setvariable var:cnt `<? multiquerycount telcfg:settings/Journal/list ?>` ?> 
<? if eq $var:showall 1 `
<? multiquery telcfg:settings/Journal/list(Type,Date,Number,Port,Duration,Route,RouteType,Name) `
				<tr class="Mikrohell">
					<td class="c1"><nobr><script type="text/javascript">document.write(uiCallSymbol("$12"));</script></nobr></td>
					<td class="c3"><nobr>$13</nobr></td>
					<td class="c8"><nobr><span title="$19">$19</span></nobr></td>
					<td class="c6"><nobr><script type="text/javascript">document.write(uiRufnummerInfo("$14"));</script></nobr></td>
					<td class="c4"><nobr><script type="text/javascript">document.write(uiRufnummerDisplay("$14"));</script></nobr></td>
					<td class="c5"><nobr><script type="text/javascript">document.write(uiPortDisplay("$15"));</script></nobr></td>
					<td class="c7"><nobr><script type="text/javascript">document.write(uiRouteDisplay("$17","$18"));</script></nobr></td>
					<td class="c6"><nobr>$16</nobr></td>
				</tr>
` ?>
` `
<? multiquery telcfg:settings/Journal/listwindow(0,$var:max,Type,Date,Number,Port,Duration,Route,RouteType,Name) `
				<tr class="Mikrohell">
					<td class="c1"><nobr><script type="text/javascript">document.write(uiCallSymbol("$12"));</script></nobr></td>
					<td class="c3"><nobr>$13</nobr></td>
					<td class="c8"><nobr><span title="$19">$19</span></nobr></td>
					<td class="c6"><nobr><script type="text/javascript">document.write(uiRufnummerInfo("$14"));</script></nobr></td>
					<td class="c4"><nobr><script type="text/javascript">document.write(uiRufnummerDisplay("$14"));</script></nobr></td>
					<td class="c5"><nobr><script type="text/javascript">document.write(uiPortDisplay("$15"));</script></nobr></td>
					<td class="c7"><nobr><script type="text/javascript">document.write(uiRouteDisplay("$17","$18"));</script></nobr></td>
					<td class="c6"><nobr>$16</nobr></td>
				</tr>
` ?>
` ?>
<? if eq $var:cnt 0 `
				<tr class="Dialoglist">
					<td colspan="7" style="text-align:center">$var:Text11</td>
				</tr>
` ?>
			</table>
		</div>
<? if neq $var:showall 1 `
<? if gt $var:cnt $var:max `
		<p class="ar"><input type="button" value="$var:Text12 $var:cnt $var:Text13" onclick="uiDoShowAll()" /></p>
` ?>
` ?>
		<form name="uiViewForm">
		<p class="mt10"><input type="checkbox" id="uiViewClickToDial" name="uiViewClickToDial">&nbsp;<label for="uiViewClickToDial"><? echo $var:Text20 ?></label></p>
		<div class="ml25">
			<p class="mb5"><? echo $var:Text21 ?></p>
			<p><? echo $var:Text22 ?>&nbsp;<select id="uiViewPort" name="uiViewPort" class="Eingabefeld"></select></p>
		</div>
		</form>
	</div>
	<div class="pButtonbar">
		<input type="button" onclick="uiDoExport()" value="<? echo $var:Text19 ?>" class=Pushbutton>
		<input type="button" onclick="uiDoClear()" value="<? echo $var:Text16 ?>" class=Pushbutton>
		<input type="button" onclick="uiDoSave()" value="<? echo $var:txtApply ?>" class=Pushbutton>
		<input type="button" onclick="uiDoRefresh()" value="<? echo $var:Text17 ?>" class=Pushbutton>
		<input type="button" onclick="uiDoHelp()" value="<? echo $var:txtHelp ?>" class="Pushbutton">
	</div>
</div>

foncalls.inc

Code:
<? include ../html/$var:lang/global.inc ?>
<? setvariable var:Text1 'Anrufliste' ?>
<? setvariable var:Text2 'Die Anrufliste erfasst alle Telefonate und eingehende Anrufe in Abwesenheit.' ?>
<? setvariable var:Text4 ' ausgehende Anrufe' ?>
<? setvariable var:Text5 ' eingehende Anrufe' ?>
<? setvariable var:Text6 ' eingehende Anrufe in Abwesenheit' ?>
<? setvariable var:Text7 'Datum' ?>
<? setvariable var:Text8 'Rufnummer' ?>
<? setvariable var:Text9 'Nebenstelle' ?>
<? setvariable var:Text10 'Dauer' ?>
<? setvariable var:Text11 'Über die FRITZ!Box sind noch keine Anrufe geführt worden.' ?>
<? setvariable var:Text12 'Alle' ?>
<? setvariable var:Text13 'Anrufe zeigen' ?>
<? setvariable var:Text16 'Liste löschen' ?>
<? setvariable var:Text17 'Aktualisieren' ?>
<? setvariable var:Text18 'Eigene Rufnummer' ?>
<? setvariable var:Text19 'Sichern' ?>
<? setvariable var:Text20 'Wählhilfe verwenden' ?>
<? setvariable var:Text21 'Anwahl durch Anklicken der Rufnummern in der Anrufliste.' ?>
<? setvariable var:Text22 'Verbindung mit dem Telefon' ?>
<? setvariable var:Text23 'FRITZ!Box_Anrufliste.csv' ?>
<? setvariable var:Text24 'Name' ?>
<? setvariable var:Text25 'Info' ?>

foncalls.js

Code:
<!--		../fon/foncalls.js		-->
<style type="text/css">
<!--
#content {width: 560px; margin: auto;}
#tClient {margin: auto; width: 516px; table-layout: fixed}
#tClient td {padding: 2px; overflow: hidden}
#tClient th {padding: 2px; overflow: hidden}
#tClient .c1 {text-align: left; width:20px;}
#tClient .c3 {text-align: left; width:<? if lte $var:AbCount 1 `100px` `80px` ?>;}
#tClient .c4 {text-align: left; width:<? if lte $var:AbCount 1 `120px` `100px` ?>;}
#tClient .c5 {text-align: left; width:70px; <? if lte $var:AbCount 1 `display:none;` ?>}
#tClient .c6 {text-align: right; width:30px;}
#tClient .c7 {text-align: left; width:106px;}
#tClient .c8 {text-align: left; width:<? if lte $var:AbCount 1 `116px` `80px` ?>;}
#tLegende {margin:auto}
#tLegende td {padding: 2px 2px;}
#tClient a:link { color: blue }
#tClient a:visited { color: blue }
.Mikrohell {height: 12px; font-size: 8pt; background-color:#FFFFFF;}
.Mikrodunkel {height: 12px; font-size: 8pt;}
.ar {text-align: right;}
-->
</style>
<script type=text/javascript>
<? include ../html/$var:lang/js/jsl.js ?>
var g_qstClear = "Alle Einträge in der Anrufliste werden jetzt gelöscht.";
var g_qstDial = "Wollen Sie die Verbindung jetzt herstellen?";
var g_txtUnbekannt = "unbekannt";
var g_txtNotAavailable = "n.a.";
var g_txtFestnetz 	= "Festnetz";
var g_txtInternetprefix = "Internet: ";
var g_sym1 = "<img src=\"../html/<? echo $var:lang ?>/images/Callin.gif\" title=\"eingehender Anruf\">";
var g_sym2 = "<img src=\"../html/<? echo $var:lang ?>/images/Callinfailed.gif\" title=\"eingehender Anruf in Abwesenheit\">";
var g_sym3 = "<img src=\"../html/<? echo $var:lang ?>/images/Callout.gif\" title=\"ausgehender Anruf\">";
var g_sym0 = "<img src=\"../html/<? echo $var:lang ?>/images/Callno.gif\">";
var g_Fon1 = "Nebenstelle FON 1";
var g_Fon2 = "Nebenstelle FON 2";
var g_Fon3 = "Nebenstelle FON 3";
var g_Port0 = "FON 1";
var g_Port1 = "FON 2";
var g_Port2 = "FON 3";
var g_Port3 = "Durchwahl";
var g_Port4 = "FON S0";
var g_Port5 = "CAPI";
var g_Port6 = "Anrufbeantworter";
var g_Port36 = "DATA S0";
var g_Port37 = "CAPI Data";
var g_txtIsdn = "ISDN-Telefone";
function uiDoOnLoad() {
	jslSetChecked("uiViewClickToDial", jslGetValue("uiPostClickToDial") == "1");
	var name = jslGetValue("uiPostFon0");
	if (name.length == 0) name = g_Fon1;
	jslAddOption("uiViewPort", "1", name, false);
	name = jslGetValue("uiPostFon1");
	if (name.length == 0) name = g_Fon2;
	jslAddOption("uiViewPort", "2", name, false);
	name = jslGetValue("uiPostFon2");
	if (name.length == 0) name = g_Fon3;
	jslAddOption("uiViewPort", "3", name, false);
	jslAddOption("uiViewPort", "50", g_txtIsdn, false);
	for (var i=1; i<9; i++) {
		name = jslGetValue("uiPostIsdnNumber"+i);
		if (name.length > 0) jslAddOption("uiViewPort", "5"+i, jslGetValue("uiPostIsdn"+i), false);
	}
	jslSetSelection("uiViewPort", "1");
	jslSetSelection("uiViewPort", jslGetValue("uiPostDialPort"));
}
function uiDoRefresh() {
	jslGoTo("fon", "foncalls");
}
function uiDoSave() {
	jslSetValue("uiPostClickToDial", jslGetChecked("uiViewClickToDial") ? "1":"0");
	jslCopyValue("uiPostDialPort", "uiViewPort");
	jslEnable("uiPostClickToDial");
	jslEnable("uiPostDialPort");
	jslFormSubmitEx("fon", "foncalls");
}
function uiDoClear() {
	if (!confirm(g_qstClear)) return;
	jslEnable("uiPostClearJournal");
	jslFormSubmitEx("fon", "foncalls");
}
function uiDoHelp() {
	jslPopHelp("hilfe_fon_anrufliste");
}
function uiDoExport() {
	document.getElementById("uiPostExport").submit();
}
function uiCallSymbol (n) {
	switch (n) {
		case "1": return g_sym1;
		case "2": return g_sym2;
		case "3": return g_sym3;
	}
	return g_sym0;
}
function uiPortDisplay (n) {
	var name;
	switch (n) {
		case "0": 
			name = "<? query telcfg:settings/MSN/Port0/Name ?>";
			if (name.length == 0) name = g_Port0;
			break;
		case "1": 
			name = "<? query telcfg:settings/MSN/Port1/Name ?>";
			if (name.length == 0) name = g_Port1;
			break;
		case "2": 
			name = "<? query telcfg:settings/MSN/Port2/Name ?>";
			if (name.length == 0) name = g_Port2;
			break;
		case "3": name = g_Port3; break;
		case "4": name = g_Port4; break;
		case "5": name = g_Port5; break;
		case "6": name = g_Port6; break;
		case "36": name = g_Port36; break;
		case "37": name = g_Port37; break;
		default: name = ""; break;
	}
	return "<span title=\""+ name + "\">" + name + "</span>";	
}
function uiRufnummerDisplay (n) {
	if (n == "") return g_txtUnbekannt;
	return "<a href=\"javascript:Dial('"+n+"')\" title=\""+n+"\">"+n+"</a>";
}
function uiRufnummerInfo (n) {
  if (n == "") return g_txtNotAavailable;
  return "<a href=\"http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?kw_invers="+n+"&main=Antwort&SEITE=INVERSSUCHE&s=2\" target=\"_blank\" title=\"Rückwärtssuche bei dasoertliche.de nach "+n+"\"><img src=\"../html/<? echo $var:lang ?>/images/bearbeiten.gif\"></a>";
}
function uiRouteDisplay (n, t) {
	var name;
	if (t == "0") {
		name = n == "" ? g_txtFestnetz : n;
	} else {		
		switch (n) {
<? multiquery sip:settings/sip/list(displayname,ID) `
			case "$3": name = g_txtInternetprefix+"$2"; break;
` ?>
			default: name = n; break;
		}
	}
	return "<span title=\""+ name + "\">" + name + "</span>";	
}
function ZweistelligeNummer (n) {
	if (n>9) return n.toString();
	return "0"+n.toString();
}
function Dial (n) {
	if (!jslGetChecked("uiViewClickToDial")) return;
	if (!confirm(g_qstDial)) return;
	jslSetValue("uiPostClickToDial", "1");
	jslSetValue("uiPostDial", n);
	jslCopyValue("uiPostDialPort", "uiViewPort");
	jslEnable("uiPostClickToDial");
	jslEnable("uiPostDial");
	jslEnable("uiPostDialPort");
	jslFormSubmitEx("fon", "foncalls");
}
function uiDoShowAll() {
	jslSetValue("uiPostShowAll","1");
	jslFormSubmitEx("fon", "foncalls");
}
</script>

und Ergebnis ist dann im Anhang zu sehen.

anruferliste.gif
 
Nice job :)
 
naja aber immer noch 2 Sachen offen.

1. eigenes Bild für Rückwärtssuche
2. Vorwahl aus Internettelefonie in der Anruferliste, bei Nummern die nicht mit 0 beginnen, vorschieben

Falls jemand Ideen hat, immer her damit.
 
team-t schrieb:
1. eigenes Bild für Rückwärtssuche
Per "mount -bind" kannst du nur über bestehende Dateien und Verzeichnisse etwas Neues "drübermounten". Um neue Dateien im Read-Only-Bereich des Dateisystems hinzuzufügen, musst du entweder die Firmware modifizieren oder dich etwas verrenken, ungefähr so:
Code:
mkdir /var/tmp/images.old /var/tmp/images
mount -o bind /usr/www/all/html/de/images /var/tmp/images.old
mount -o bind /var/tmp/images /usr/www/all/html/de/images
ln -s /var/tmp/images.old/* /usr/www/all/html/de/images
cd /usr/www/all/html/de/images
cp kopf1.gif neu.gif
2. Vorwahl aus Internettelefonie in der Anruferliste, bei Nummern die nicht mit 0 beginnen, vorschieben
http://de.selfhtml.org/javascript/objekte/string.htm#index_of

Viele Grüße,
Andreas
 
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.