- Mitglied seit
- 16 Jun 2005
- Beiträge
- 67
- Punkte für Reaktionen
- 0
- Punkte
- 0
In unserer Telefonzentrale läuft derzeit erfolgreich ein Test mit der click2dial-Lösung des Flash Operator Panels. Von der alten Telefonanlage war noch eine CSV-Datei übrig, in der die 200 wichtigsten Telefonnummern abgespeichert waren.
1) HTML-Seite mit 2 Iframes in Tabelle
2) Iframe 1 "FOP" lädt das Flash Operator Panel mit dem Javascript zum click2dial (Originalcode aus dem FOP-Projekt), "?dial=" entsprechend der gewünschten Extension abändern
3) Iframe 2 "TB" ist eine PHP-Seite und lädt das Telefonbuch aus der CSV-Datei
In der Zeile
muss je nach Trennzeichen der Tabellenfelder das Komma durch ein Semikolon oder was auch immer ausgetauscht werden.
Geplant ist eine Anbindung an die AstDB oder eine extra MySQL-DB, schöner wäre noch LDAP, damit die Telefonbücher der GXP2000 dementsprechend auch mit dem Webinterface übereinstimmen.
Versuche laufen derzeit (noch ohne Erfolg) mit dem optionalen Hinzuladen von http://www.telefonbuch.de in ein weiteres IFrame. Firefox mit Greasemonkey soll dann die <div class='phonenr'> Tags entsprechend durch den Aufruf des o.g. sendnumber - Scripts ersetzen und damit die Rufnummer per Klick direkt anwählen:
Hier das Greasemonkey .js
Greasmonkey macht seine Arbeit gut, dennoch will das Ganze noch nicht so richtig klappen, - sieht jemand einen bug ?
Grüße
o_dapenguin
1) HTML-Seite mit 2 Iframes in Tabelle
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Meine Telefonzentrale</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<table width="100%" border="0" align="left">
<tr>
<td width="630" align="left" valign="top">
<iframe frameborder="0" scrolling="no" src="index-clicktodial.html" name="FOP" height="580" width="620">IFrames wollen nicht</iframe>
</td>
<td align="left" valign="top">
<iframe frameborder="0" scrolling="auto" src="Telefonliste.php" name="TB" height="580">IFrames wollen nicht</iframe>
</td>
</tr>
</table>
</body>
</html>
2) Iframe 1 "FOP" lädt das Flash Operator Panel mit dem Javascript zum click2dial (Originalcode aus dem FOP-Projekt), "?dial=" entsprechend der gewünschten Extension abändern
Code:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<link rel="stylesheet" href="styles.css" media="screen" />
<META HTTP-EQUIV="Expires" CONTENT="Fri, Jun 12 1981 08:20:00 GMT">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<SCRIPT LANGUAGE="JavaScript">
<!--
var movieName = "operator_panel";
function thisMovie(movieName) {
// If you want to run this from another frame, change window or document
// for the appropiate reference, like parent.frame[1].window[movieName]
if (navigator.appName.indexOf ("Microsoft") !=-1) {
return window[movieName]
} else {
return document[movieName]
}
}
function movieIsLoaded (theMovie) {
if (typeof(theMovie) != "undefined") {
return theMovie.PercentLoaded() == 100;
} else {
return false;
}
}
function sendnumber(telefono) {
if (movieIsLoaded(thisMovie(movieName))) {
thisMovie(movieName).TGotoFrame("_level0/numdial",10); // Erase previous number
for(a=0;a<telefono.length;a++) {
var frame= telefono.charAt(a);
if(!isNaN(frame)) {
thisMovie(movieName).TGotoFrame("_level0/numdial",frame); // Add digit to number
thisMovie(movieName).TGotoFrame("_level0/numdial",12); // next digit
}
}
thisMovie(movieName).TGotoFrame("_level0/numdial",11); // Dial current number
}
}
</script>
</head>
<body>
<!--
To enable click to dial, you have to specify the dial parameter after each
appearance of operator_panel.swf below. You can specify the button number
as this example, or the channel name, like
operator_panel.swf?dial=SIP/john
When a dial order is received from javascript, it will use that channel
to originate the call. It only works for channels for the 1st server
(if you are monitoring multiple servers).
-->
<div align='center'>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="990" height="600" id="operator_panel">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="operator_panel.swf?dial=SIP/20" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed src="operator_panel.swf?dial=SIP/20" quality="high" bgcolor="#ffffff" width="990" height="600" name="operator_panel" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</div>
</body>
</html>
3) Iframe 2 "TB" ist eine PHP-Seite und lädt das Telefonbuch aus der CSV-Datei
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<?php
$zeiger = fopen("telefonbuch.csv", "r");
while(($Daten=fgetcsv($zeiger, 1000, ","))!==FALSE)
{
echo "<a href='#' onclick=\"top.frames['FOP'].sendnumber('$Daten[1]'); return false;\">$Daten[0] $Daten[1]</a><br>";
}
fclose($zeiger);
?>
</body>
</html>
In der Zeile
Code:
while(($Daten=fgetcsv($zeiger, 1000, ","))!==FALSE)
Geplant ist eine Anbindung an die AstDB oder eine extra MySQL-DB, schöner wäre noch LDAP, damit die Telefonbücher der GXP2000 dementsprechend auch mit dem Webinterface übereinstimmen.
Versuche laufen derzeit (noch ohne Erfolg) mit dem optionalen Hinzuladen von http://www.telefonbuch.de in ein weiteres IFrame. Firefox mit Greasemonkey soll dann die <div class='phonenr'> Tags entsprechend durch den Aufruf des o.g. sendnumber - Scripts ersetzen und damit die Rufnummer per Klick direkt anwählen:
Hier das Greasemonkey .js
Code:
// ==UserScript==
// @name Telefonbuch-FOP
// @author o_dapenguin
// @include *
// @description Finds phonenr divs and replaces them with the final destination link
// ==/UserScript==
// get the links to the next pages
var divtel = document.evaluate("//div[@class='phonenr']", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
if (!divtel) return;
for (i = 0; i < divtel.snapshotLength; i++){
//divtel.snapshotItem(i).innerHTML = "Test"
telefonnummer = divtel.snapshotItem(i).innerHTML.replace(/[^0-9]/ig,"");
divtel.snapshotItem(i).innerHTML = make_voip(telefonnummer)
}
function make_voip (telefonnummer){
links_zu_voip_string ='<A href="#" onclick="top.frames[0].sendnumber('+telefonnummer+'); return false;")>'+telefonnummer+'</a>';
return links_zu_voip_string;
}
Greasmonkey macht seine Arbeit gut, dennoch will das Ganze noch nicht so richtig klappen, - sieht jemand einen bug ?
Grüße
o_dapenguin