Folgende administrative Aufgaben fallen im laufenden Betrieb an:
Einrichten neuer Aufträge
Einrichten neuer Agenten
Zuordnen von Aufträgen zu Agenten
Anbinden neuer Client-PC's
Importieren von Telefonnummern
Einrichten fester Nummern zum Üben
Eine weitere erfahrungsgemäß anfallende Aufgabe ist das ermitteln von fehlerhaft als „gelöscht“ gespeicherten Nummern, die erneut angerufen werden sollen. Doch ist dies eher die Aufgabe eines Reports. Eine Reaktivierung dieser Nummern ist nicht unbedingt erforderlich; statt dessen können die ermittelten Daten einfach erneut in einen „freien“ Vertrag eingegeben werden.
Um die angegebenen Aufgaben zu lösen, wäre eine entsprechende KDE-Anwendung sinnvoll. Die Entwicklung einer solchen Anwendung ist vorgesehen, aber bis auf erste Ansätze noch nicht realisiert.
Alternativ kann man direkt auf der Datenbank arbeiten. Dies ist über Kommandozeilen-Tools wie den mySQL Client ebenso möglich wie über grafische Frontends wie mysqlcc unter Linux oder mySQLfront unter Windows. Diese Methode wird im folgenden beschrieben.
Warnung: KDE/QT-Anwendungen verwenden in ihren Eingabemasken zur Codierung von Umlauten den Windows-Zeichensatz. Die Linux-Tools mySQL Client und mysqlcc hingegen verwenden den gleichen Zeichensatz wie die Linux-Konsolen.
Tabelle: contracts
Spalte |
Erlaubter Wert |
Beschreibung |
pkey |
keiner |
Schlüsselwert, der von der Datenbank automatisch gesetzt wird. |
contracttitle |
Freitext, max. 40 Zeichen |
Titel des Auftrags, zum Beispiel Auftragsnummer. |
contractor |
Freitext, max. 40 Zeichen |
Auftraggeber. |
field1, field2, field3, field4 |
Freitext, max. 40 Zeichen |
Die Namen der vier auftragsabhängigen Felder. |
date |
Datum und Zeit, Form: |
Hat nur Kommentarfunktion. Gibt an, wann der Auftrag in die Datenbank eingefügt wurde. Wird im Report ausgegeben. |
field1required, field2required, field3required, field4required |
0 oder 1 |
Gibt an, welches der vier auftragsabhängigen Felder ein Pflichtfeld ist (1) und welches nicht (0). Diese Felder haben z.Zt. nur Kommentarfunktion. kallcenter ignoriert die Werte zur Zeit: Pflicht ist das Ausfüllen von mindestens einem Feld. Default: 0 |
free |
0 oder 1 |
0: beim Login mit diesem Auftrag holt sich der Agent 1000 „normale“ Nummern und telefoniert sie der Reihe nach ab. 1: beim Login mit diesem Auftrag erzeugt kallcenter stets neue, leere Datensätze, in die der Agent selbst die Telefonnummer eingibt. Default: 0 |
Beispiele für mySQL Client:
insert into contracts
(contracttitle, contractor, field1, field2, field3, field4, date, free)
values
('78801', 'SKL', 'Zehntel Lose', 'Glueckszahlen', 'Eurojoker', 'Traumjoker',
now(), 0);¶
insert into contracts
(contracttitle, contractor, field1, field2, field3, field4, date, free)
values
('78801 Frei', 'SKL', 'Zehntel Lose', 'Glueckszahlen', 'Eurojoker',
'Traumjoker', now(), 1);¶
Anmerkung: Aufträge sollten keinesfalls gelöscht werden. Andere Datensätze sind mit Aufträgen verknüpft.
Tabelle: agents
Spalte |
Erlaubter Wert |
Beschreibung |
pkey |
keiner |
Schlüsselwert, der von der Datenbank automatisch gesetzt wird. |
firstname |
Freitext, max. 40 Zeichen |
Vorname des Agenten. |
surname |
Freitext, max. 40 Zeichen |
Nachname des Agenten. |
id |
Freitext, max. 40 Zeichen |
Benutzer-ID des Agenten. |
active |
0 oder 1 |
1: der Agent ist „aktiv“, wird in der Login-Maske angezeigt und kann sich einloggen. 0: der Agent ist „inaktiv“, quasi gelöscht. Er wird in der Login-Maske nicht mehr angezeigt und kann sich daher auch nicht einloggen. Default: 1 |
normal |
0 oder 1 |
1: ein „normaler“ Agent, der sich mit einem „unfreien“ Vertrag anmeldet, reserviert sich mit dem Login 1000 „normale“ Nummern und gibt sie mit dem Logout wieder frei. 0: ein „nicht normaler“ Agent, kurz ein Kurs-Account, reserviert sich mit dem Login keine Nummern und gibt mit dem Logout auch keine frei. Ein solcher Agent kann jedoch mit „nicht normalen“ Nummen, kurz Kursnummern, arbeiten; diese sind ihm (und einem bestimmten Auftrag) ein für alle mal fest zugeordnet. Default: 1 |
Beispiele für mySQL Client:
insert into agents
(firstname, surname, id)
values
('Erika', 'Mustermann', '0001');¶
insert into agents
(firstname, surname, id, normal)
values
('Kurs', '01', 'kurs01', 0);¶
update agents
set active = 0
where id = '0002';¶
Anmerkung: Agenten sollten niemals gelöscht werden. Statt dessen sollten sie inaktiv geschaltet werden. Andere Datensätze sind mit Agenten verknüpft.
Tabelle: agentcontracts
Spalte |
Erlaubter Wert |
Beschreibung |
pkey |
keiner |
Schlüsselwert, der von der Datenbank automatisch gesetzt wird. |
contract |
Zahl |
pkey-Schlüsselwert des Auftrags. |
agent |
Zahl |
pkey-Schlüsselwert des Agenten. Der durch den pkey-Schlüssel contract gegebene Auftrag wird dem durch den pkey-Schlüssel agent gegebenen Agenten zugeordnet. |
Beispiele für mySQL Client:
insert into agentcontracts
(contract, agent)
values
(4, 23);¶
insert ignore into agentcontracts
(contract, agent)
select
7 as contract, agents.pkey as agent
where agents.active = 1 and agents.normal = 1;¶
delete from agentcontracts
where contract = 2;¶
delete from agentcontracts
where contract = 3 and agent = 23;¶
Anmerkung: Verknüpfungen zwischen Agenten und Aufträgen können gelöscht werden, um die Zuordnung aufzuheben.
Anmerkung: Die Zuordnung Agent/Auftrag muss eindeutig sein, sie darf nicht mehrfach vorkommen. „insert ignore“ ignoriert die Aufforderung, eine bereits existierende Zuordnung ein zweites mal einzufügen.
Tabelle: sip
Spalte |
Erlaubter Wert |
Beschreibung |
pkey |
keiner |
Schlüsselwert, der von der Datenbank automatisch gesetzt wird. |
client |
Freitext, max. 40 Zeichen |
Hostname des Client-PC's, ohne Domain. Im derzeitigen kallcenter-Modell gilt: ein PC – eine Telefonnummer – ein Provider. Im Sinne eines Least Cost Routings könnte es sinnvoll sein, dieses Modell zu ändern – allerdings macht das nur Sinn, wenn sehr viele Auslandstelefonate geführt werden. |
server |
Freitext, max. 40 Zeichen |
SIP-Server. Wird vom Provider vorgegeben. |
realm |
Freitext, max. 40 Zeichen |
SIP-Realm. Die anzurufenden Nummern werden in SIP-Nummern nach folgendem Schema umgesetzt: <Landesvorwahl><Vorwahl><Nummer>@<Realm> |
display |
Freitext, max. 40 Zeichen |
Beliebiger Text. Z.B. Name des Providers. Hat keine echte Bedeutung. |
number |
Freitext, max. 40 Zeichen |
Nummer des SIP-Phones. Wird vom Provider vorgegeben. Theoretisch können Anrufe über diese Nummer an den kallcenter-Client geleitet werden. In der Praxis wird dies von kallcenter nicht weiter unterstützt (es entspricht einem Inbound-Betrieb). |
username |
Freitext, max. 40 Zeichen |
Benutzername. Wird vom Provider vorgegeben. Hierüber registriert sich das SIP-Phone beim SIP-Provider. |
password |
Freitext, max. 40 Zeichen |
Passwort. Wird vom Provider vorgegeben. Hierüber registriert sich das SIP-Phone beim SIP-Provider. |
usestun |
0 oder 1 |
0: Der Provider benutzt kein STUN. 1: Der Provider benutzt STUN. Dann wird der STUN-Server vom nächsten Feld vorgegeben. Default: 0 |
stunserver |
Freitext, max. 40 Zeichen |
STUN-Server, falls STUN aktiviert wurde. |
countryprefix |
Freitext, max. 10 Zeichen |
Landesvorwahl. Die anzurufenden Nummern werden in SIP-Nummern nach folgendem Schema umgesetzt: <Landesvorwahl><Vorwahl><Nummer>@<Realm> Die Schreibweise hängt vom Provider ab. So verwendet GMX beispielsweise 49 für Deutschland, TelDaFax verwendet 0049. |
Beispiele für mySQL Client:
insert into sip
(client, server, realm, display, number, username, password, countryprefix)
values
('pc001', 'sip-gmx.net', 'sip-gmx.net', 'GMX', '4922112345', '4922112345',
'geheim', '49')¶
Anmerkung: SIP-Phone-Einträge sollten keinesfalls gelöscht werden. Andere Datensätze sind mit ihnen verknüpft.
Anmerkung: Der „client“ muss eindeutig sein.
Da die Anzahl der zu importierenden Telefonnummern mindestens in die zehntausende, je nach Nummernquelle in die Millionen geht, ist eine manuelle Eingabe nicht möglich – ausgenommen die Eingabe durch die einzelnen Agenten während des Telefonierens (nämlich bei „freien“ Aufträgen).
kallcenter bietet hier die Möglichkeit, CSV-Dateien beliebiger Größe zu importieren. Diese Dateien müssen das Default-Format von Klicktel haben. Es hat symbolisch die folgende Form:
"Anrede";"Vorname";"Nachname";"Bemerkung";"Strasse";"Hausnummer";
"Strasse und Hausnummer";"Stadtteil";"Landeskennzeichen";"Postleitzahl";
"Ort";"Art des Eintrags";"Vorwahl";"Durchwahl";"(Vorwahl) Durchwahl";
"Vorwahl/Durchwahl"¶
Eine Datei dieses Aufbaus kann mit dem Kommando „./import-unique.pl <Name der CSV-Datei>“ importiert werden. Das Perl-Script import-unique.pl filtert die Datensätze, wie es bei Klicktel-Daten nötig ist:
Folgende Einträge werden bereits im ersten Durchlauf entfernt:
„Anrede“ enthält „Firma“,
„Bemerkung“ enthält „Telefax“ oder „Mobil“,
Vorwahl beginnt mit 15/16/17 (Mobil), 180/190/800/900,
die Durchwahl enthält einen Bindestrich – dies sind Nummern hinter einer Telefonanlage, wahrscheinlich Firmennummern,
der Nachname enthält mehr als zwei Trennungen durch Leerzeichen – dies sind in der Regel Firmennamen,
Vor- oder Nachname enthält eine Ziffer – dies sind in der Regel Firmennamen.
Beim Einfügen in die temporäre Tabelle numbers2 werden außerdem Doppeleinträge entfernt, nur der erste bleibt jeweils erhalten:
falls die Telefonnummer bereits vorkam (beispielsweise sind mehrere Personen mit mehreren Einträgen am selben Anschluß angemeldet),
falls die Kombination „Nachname“/„Strasse und Hausnummer“/„Ort“ bereits vorkam (beispielsweise Selbstständige mit einer Firmen- und einer Privatnummer in derselben Wohnung).
Befindet sich die Telefonnummer bereits in der Haupt-Tabelle numbers, so wird sie entfernt.
Befindet sich in der Haupt-Tabelle numbers bereits ein Eintrag mit der gleichen Kombination „Vorname“/„Nachname“/„Strasse und Hausnummer“/„Postleitzahl“/„Ort“, so wird der neue Eintrag entfernt.
Befindet sich die Telefonnummer bereits in der Tabelle negative (Negativliste), so wird sie entfernt.
Erst nach allen Löschoperationen werden die Nummern in die Haupt-Tabelle numbers kopiert.
Mit den bisher beschriebenen Features ist der Betrieb eines Callcenters bereits möglich. Es gibt jedoch einige weitere Features, die nur durch vollständige Kenntnis der Tabelle numbers benutzt werden können. Anbei daher die Beschreibung.
Eines der Features sind die Kursnummern, sowohl in Verbindung mit einem Kurs-Account als auch mit einem normalen Agenten.
Kursnummern sind Telefonnummern, bei denen das Feld „normal“ den Wert 0 hat. Bei einem normalen Agenten reserviert kallcenter beim Login nur „normale“ Nummern und gibt auch beim Logout nur die „normalen“ Nummern wieder frei. Kursnummern in Verbindung mit einem normalen Agenten können also dazu benutzt werden, diesem Agenten zusätzliche Telefonnummern fest zuzuordnen: beispielsweise Aufträge oder „gelbe“ Nummern aus dem letzten Jahr, oder importierte Nummern aus speziellen Quellen (hierfür fehlt derzeit aber ein Import-Skript).
In Verbindung mit einem Kurs-Account können Kursnummern zum Üben eingesetzt werden (daher auch der Name). Ein Kurs-Account reserviert weder Nummern beim Login noch gibt er sie beim Logout frei. Für einen solchen Account kann man 1000 Nummern-Datensätze mit „normal = 0“ und jeweils derselben Telefonnummer in die Tabelle numbers einfügen. Die Telefonnummer kann die eines Telefons des Callcenters selbst sein. Auf diese Weise kann ein neuer Mitarbeiter das Abtelefonieren und Abspeichern von Datensätzen mit einem Kollegen üben, der das Telefon bedient.
Tabelle: numbers
Spalte |
Erlaubter Wert |
Beschreibung |
pkey |
keiner |
Schlüsselwert, der von der Datenbank automatisch gesetzt wird. |
contract |
Zahl |
pkey-Schlüsselwert des Auftrags. Beim Reservieren einer „normalen“ Nummer trägt kallcenter hier den pkey-Schlüssel des Auftrags ein, für den der Datensatz reserviert wurde. Der Wert, der vorher darin stand, wird ignoriert. Beim Freigeben der Nummer wird der Wert stehengelassen. Bei einer Kursnummer muss dieser Wert fest vorgegeben sein. kallcenter führt keine Änderungen mehr aus. |
agent |
Zahl |
pkey-Schlüsselwert des Agenten. Beim Reservieren einer „normalen“ Nummer trägt kallcenter hier den pkey-Schlüssel des Agenten ein, der sich den Datensatz reserviert hat. Der Wert, der vorher darin stand, wird ignoriert. Beim Freigeben der Nummer wird der Wert stehengelassen. Bei einer Kursnummer muss dieser Wert fest vorgegeben sein. kallcenter führt keine Änderungen mehr aus. |
state |
Zahl; 1-8 |
pkey-Schlüsselwert des Status. Nach diesem Feld werden die Telefonnummern an zweiter Stelle absteigend sortiert. Die Status-Werte sind: 1=frei, 2=reserviert (von einem Agenten), 3=nicht erreicht, 4=Termin, 5=Negativliste, 6=gelb, 7=Auftrag, 8=kein Auftrag (gelöscht). kallcenter ignoriert jedoch Statuswerte oberhalb von 5. Es werden also zunächst alle Termine dargestellt, dann alle nicht erreichten Nummern und dann alle reservierten. |
no |
Zahl |
Nach diesem Feld werden die Telefonnummern an vierter Stelle sortiert. Diesem Feld wird vom Import-Skript eine Zufallszahl im Bereich 0-30000000 (der ungefähren Größe des Klicktel-Pools) zugewiesen, damit die Telefonnummern in zufälliger Reihenfolge abtelefoniert werden. Die in der Sortierung vorrangigen Felder erhalten bei neu importierten/reservierten Nummern ja stets gleiche Werte: dirty=0, state=2, nextcalldate='2005-01-01 00:00:00'; daher greift hier die Sortierung nach dem Feld no. |
nextcalldate |
Datum und Zeit, Form: |
Nach diesem Feld werden die Telefonnummern an dritter Stelle sortiert. Vom Import-Skript wird diesem Feld der Wert '2005-01-01 00:00:00' zugewiesen. Bei gleichem Status greift diese Sortierung, so daß zunächst alle Termine in der Reihenfolge ihres Zeitpunktes abgearbeitet werden, dann alle „nicht erreichten“ Nummern in der Reihenfolge ihres Zeitpunktes und danach die reservierten Nummern, die laut Import-Skript alle den gleichen Zeitstempel haben sollten. |
salutation |
Freitext, max. 40 Zeichen |
Anrede. |
firstname |
Freitext, max. 40 Zeichen |
Vorname. |
surname |
Freitext, max. 40 Zeichen |
Nachname. |
birthday |
Freitext, max. 40 Zeichen |
Geburtstag. |
job |
Freitext, max. 40 Zeichen |
Arbeit. |
bankname |
Freitext, max. 40 Zeichen |
Bankverbindung: Name der Bank. |
banknumber |
Freitext, max. 40 Zeichen |
Bankverbindung: Bankleitzahl (BLZ). |
accountnumber |
Freitext, max. 40 Zeichen |
Bankverbindung: Kontonummer. |
accountowner |
Freitext, max. 40 Zeichen |
Bankverbindung: Kontoinhaber (Name). |
street |
Freitext, max. 40 Zeichen |
Wohnort: Strasse und Hausnummer. |
zipcode |
Freitext, max. 40 Zeichen |
Wohnort: Postleitzahl. |
location |
Freitext, max. 40 Zeichen |
Wohnort: Ort. |
prefix |
Freitext, max. 40 Zeichen |
Vorwahl der anzurufenden Nummer. |
phonenumber |
Freitext, max. 40 Zeichen |
Durchwahl der anzurufenden Nummer. Die anzurufende SIP-Nummer bestimmt sich nach dem folgenden Schema: <Landesvorwahl><Vorwahl><Nummer>@<Realm> |
prefix2 |
Freitext, max. 40 Zeichen |
Zweite Telefonnummer, Vorwahl. Kann vom Agenten beliebig gesetzt werden; hat nur Kommentarfunktion. |
phonenumber2 |
Freitext, max. 40 Zeichen |
Zweite Telefonnummer, Durchwahl. Kann vom Agenten beliebig gesetzt werden; hat nur Kommentarfunktion. |
field1, field2, field3, field4 |
Freitext, max. 40 Zeichen |
Die Werte der vier auftragsabhängigen Felder. |
remark |
Freitext, unbegrenzt |
Beliebige Anmerkungen. |
normal |
0 oder 1 |
1: „Normale“ Nummer. Die Nummer kann von jedem „normalen“ Agenten und für jeden (unfreien) Auftrag beim Login reserviert werden, sie kann dann bearbeitet oder beim Logout wieder freigegeben werden. 0: „Kursnummer“. Die Nummer kann weder automatisch reserviert noch freigegeben werden. Default: 1 |
dirty |
0 oder 1 |
0: Der Datensatz ist entweder unbearbeitet oder sauber abgespeichert worden. 1: Der Datensatz wurde bearbeitet (ein Feld wurde verändert, oder es hat eine Anwahl stattgefunden), aber noch nicht abgespeichert. Default: 0 Anmerkung: Nach diesem Feld wird an erster Stelle absteigend sortiert. Das heißt, bearbeitete Datensätze kommen stets vor allen anderen, sofern sie überhaupt darstellbar sind – das heißt, nextcalldate muss einen Zeitpunkt in der Vergangenheit beschreiben. Siehe dazu auch die Anmerkung Bekannter Fehler unter kallcenter Client / Hauptmaske – Frei = 0 / Nächster Versuch. |
completenum |
Freitext, max. 40 Zeichen |
Hier wird beim Import (bzw. bei „freien“ Aufträgen bei der ersten Anwahl) die zusammengesetzte Zeichenkette <Vorwahl><Durchwahl> gespeichert. Prüfungen, ob die Anwahl der Nummer erlaubt ist (gegen die Negativliste, oder Vorwahlen der Form 180/190/800), werden gegen completenum durchgeführt. Auf diese Weise werden Fehleingaben kompensiert, bei denen ein Teile der Vorwahl in die Durchwahl oder umgekehrt geraten sind. |