OTOBO hat nicht nur ein Agenten Portal sondern auch ein Kundenportal bzw. customer portal, dieses erreicht man über die URL "DEINEDOMAIN/ otobo/ customer.pl" . Dort können sich die Kundenbenutzer (Customer User) anmelden. Das customer portal ermöglicht es dem Kundenbenutzer, neue Tickets zu erstellen, sowie Tickets zu bearbeiten und Tickets anzuschauen.
Gerne Können Sie das Kunden Portal mit unserer Demo Testen!
Neue Kundenbenutzer erstellen dürfen alle Agenten, welche Admin Rechte haben.
Um einen neuen Agenten zu erstellen, muss man in den Admin Bereich gehen und dort die Kundenbenutzer Kachel auswählen. Nachdem man einen Kundenbenutzer erstellt hat, kann sich dieser im OTOBO Kundenportal anmelden. In der Kundenbenutzer Kachel sieht man nun alle bereits bisher erstellten Kundenbenutzer.
OTOBO Kundenbenutzer hinzufügen
Wenn man einen dieser Kundenbenutzer anklickt, dann kann man diesen bearbeiten oder auch löschen, bzw. auf ungültig setzen. Um einen neuen Kundenbenutzer hinzuzufügen klick man auf Kundenbenutzer anlegen.
Neuen OTOBO Kundenbenutzer erstellen
Für das Login im Kundenportal / customer portal benötigt der Kundenbenutzer seinen Benutzernamen und sein Passwort. Wenn der Kunde sein Passwort vergessen hat, dann kann er sich ein neues Passwort an seine E-Mail schicken lassen.
Man kann Kunden aber auch die Chance geben sich selbst für das customer portal zu registrieren, dies kann über die Einstellung "Customer Panel Create Account" umgestellt werden.
Falls die Einstellung eingestellt ist, können sich Kunden über das Kundenportal registrieren. Man kann über die Einstellung CustomerPanel CreateAccount:: MailRestrictions:: Blacklist und Whitelist gewisse Emails Blocken oder Freigeben. Zum Beispiel DOmains mit einem gewissen domain name.
In der Login Seite EINEDOMAIN.de/ otobo/ customer.pl gibt es den Link, "Account anfordern", darüber kann man sich einen neuen Account erstellen. Man gibt dort Vorname, Nachname und Email an, danach erhält man sein Passwort per Email, damit dies funktioniert muss natürlich das Versenden von Emails eingestellt sein, darüber gibt es einen separaten Artikel:
Man kann die Kundenportal Accounts zwar auf diesem Weg manuell eintragen, es ist aber auch möglich diese Daten aus einer externen Datenbank oder einem LDAP zu nehmen. Dafür ist es nötig Inhalte der Datei config.pm zu ändern, diese findet man auf dem Server. Bei einer geringen Menge an Kunden Daten, welche sich nicht so häufig ändern, rentiert es sich mehr die Daten manuell einzutragen. Wenn die Datenmenge größer ist, wird es erforderlich sein eine Datenbank oder LDAP anzubinden, da man sonst viel zu viel Arbeit hätte die Daten manuell zu ändern.
In einer docker Installation ist der Pfad zu der Datei normalerweise: /var/ lib/docker/ volumes/ opt_otobo/ _data/Kernel/ config.pm um auf diese Datei zuzugreifen benötigt man ein Programm, bspw. WinScp oder man benutzt die Kommandozeile/Terminal oder Putty. In dieser Datei findet man dann folgenden Abschnitt:
# CustomerUser
# (customer user database backend and settings)
$Self->{CustomerUser} = {
Name => Translatable('Database Backend'),
Module => 'Kernel::System::CustomerUser::DB',
Params => {
# if you want to use an external database, add the
# required settings
# DSN => 'DBI:odbc:yourdsn',
# Type => 'mssql', # only for ODBC connections
# DSN => 'DBI:mysql:database=customerdb;host=customerdbhost',
# User => '',
# Password => '',
Table => 'customer_user',
# ForeignDB => 0, # set this to 1 if your table does not have create_time, create_by, change_time and change_by fields
# CaseSensitive defines if the data storage of your DBMS is case sensitive and will be
# preconfigured within the database driver by default.
# If the collation of your data storage differs from the default settings,
# you can set the current behavior ( either 1 = CaseSensitive or 0 = CaseINSensitive )
# to fit your environment.
#
# CaseSensitive => 0,
# SearchCaseSensitive will control if the searches within the data storage are performed
# case sensitively (if possible) or not. Change this option to 1, if you want to search case sensitive.
# This can improve the performance dramatically on large databases.
SearchCaseSensitive => 0,
},
# customer unique id
CustomerKey => 'login',
# customer #
CustomerID => 'customer_id',
CustomerValid => 'valid_id',
# The last field must always be the email address so that a valid
# email address like "John Doe" <john.doe@domain.com> can be constructed from the fields.
CustomerUserListFields => [ 'first_name', 'last_name', 'email' ],
# CustomerUserListFields => ['login', 'first_name', 'last_name', 'customer_id', 'email'],
CustomerUserSearchFields => [ 'login', 'first_name', 'last_name', 'customer_id' ],
CustomerUserSearchPrefix => '*',
CustomerUserSearchSuffix => '*',
CustomerUserSearchListLimit => 250,
CustomerUserPostMasterSearchFields => ['email'],
CustomerUserNameFields => [ 'title', 'first_name', 'last_name' ],
CustomerUserEmailUniqCheck => 1,
# # Configures the character for joining customer user name parts. Join single space if it is not defined.
# # CustomerUserNameFieldsJoin => '',
# # show now own tickets in customer panel, CompanyTickets
# CustomerUserExcludePrimaryCustomerID => 0,
# # generate auto logins
# AutoLoginCreation => 0,
# # generate auto login prefix
# AutoLoginCreationPrefix => 'auto',
# # admin can change customer preferences
# AdminSetPreferences => 1,
# use customer company support (reference to company, See CustomerCompany settings)
CustomerCompanySupport => 1,
# cache time to live in sec. - cache any database queries
CacheTTL => 60 * 60 * 24,
# # Consider this source read only.
# ReadOnly => 1,
Map => [
# Info about dynamic fields:
#
# Dynamic Fields of type CustomerUser can be used within the mapping (see example below).
# The given storage (third column) then can also be used within the following configurations (see above):
# CustomerUserSearchFields, CustomerUserPostMasterSearchFields, CustomerUserListFields, CustomerUserNameFields
#
# Note that the columns 'frontend' and 'readonly' will be ignored for dynamic fields.
# note: Login, Email and CustomerID needed!
# var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly, http-link-target, link class(es)
[ 'UserTitle', Translatable('Title or salutation'), 'title', 1, 0, 'var', '', 0, undef, undef ],
[ 'UserFirstname', Translatable('Firstname'), 'first_name', 1, 1, 'var', '', 0, undef, undef ],
[ 'UserLastname', Translatable('Lastname'), 'last_name', 1, 1, 'var', '', 0, undef, undef ],
[ 'UserLogin', Translatable('Username'), 'login', 1, 1, 'var', '', 0, undef, undef ],
[ 'UserPassword', Translatable('Password'), 'pw', 0, 0, 'var', '', 0, undef, undef ],
[ 'UserEmail', Translatable('Email'), 'email', 1, 1, 'var', '', 0, undef, undef ],
# [ 'UserEmail', Translatable('Email'), 'email', 1, 1, 'var', '[% Env("CGIHandle") %]?Action=AgentTicketCompose;ResponseID=1;TicketID=[% Data.TicketID | uri %];ArticleID=[% Data.ArticleID | uri %]', 0, '', 'AsPopup OTOBOPopup_TicketAction' ],
[ 'UserCustomerID', Translatable('CustomerID'), 'customer_id', 0, 1, 'var', '', 0, undef, undef ],
# [ 'UserCustomerIDs', Translatable('CustomerIDs'), 'customer_ids', 1, 0, 'var', '', 0, undef, undef ],
[ 'UserPhone', Translatable('Phone'), 'phone', 1, 0, 'var', '', 0, undef, undef ],
[ 'UserFax', Translatable('Fax'), 'fax', 1, 0, 'var', '', 0, undef, undef ],
[ 'UserMobile', Translatable('Mobile'), 'mobile', 1, 0, 'var', '', 0, undef, undef ],
[ 'UserStreet', Translatable('Street'), 'street', 1, 0, 'var', '', 0, undef, undef ],
[ 'UserZip', Translatable('Zip'), 'zip', 1, 0, 'var', '', 0, undef, undef ],
[ 'UserCity', Translatable('City'), 'city', 1, 0, 'var', '', 0, undef, undef ],
[ 'UserCountry', Translatable('Country'), 'country', 1, 0, 'var', '', 0, undef, undef ],
[ 'UserComment', Translatable('Comment'), 'comments', 1, 0, 'var', '', 0, undef, undef ],
[ 'ValidID', Translatable('Valid'), 'valid_id', 0, 1, 'int', '', 0, undef, undef ],
# Dynamic field example
# [ 'DynamicField_Name_X', undef, 'Name_X', 0, 0, 'dynamic_field', undef, 0, undef, undef ],
],
# default selections
Selections => {
# UserTitle => {
# 'Mr.' => Translatable('Mr.'),
# 'Mrs.' => Translatable('Mrs.'),
# },
},
};
Falls man die Kundendaten aus einer anderen Datenbank nehmen will, muss man dort folgende Einstellungen ändern:
DSN - Host, Name, Typ und Port der Datenbank
User - Datenbank-Nutzer
Password - Datenbank Passwort
Table - Tabelle, welche die Kundendaten enthält
Danach muss man noch die Tabellen- Spalten ändern, diese findet man in der Map-Tabelle in der 3. Spalte. In dieser Spalte müssen die passenden Attribut Namen aus der Datenbank Tabelle stehen. In dem Fall das man mehr oder weniger Spalten hat, muss man in der Map Tabelle noch Zeilen entfernen oder noch hinzufügen. In der Config.pm hat man noch viel mehr Möglichkeiten, man kann auch die Cache Zeit CacheTTL ändern, sowie ob die Datenbank readonly ist, außerdem noch welche zusätzlichen Felder man haben will. Dabei kann man auch den Typ des Feldes festlegen, zusätzlich hat man auch die Möglichkeit Links zu hinterlegen, welche ausgeführt werden wenn man auf das entsprechende Feld klickt. Das ändern der config.pm hat nämlich nicht nur Auswirkungen auf das Kundenportal sondern auch auf die Kundeninformationen welche beim Ticket erstellen und Ticket anschauen angezeigt werden.
Kunden Benutzer Felder Entfernen oder Hinzufügen
Man kann Felder zum Kundenbenutzer hinzufügen, aber auch entfernen. Dafür muss man die config.pm Datei verändern.
In einer docker Installation ist der Pfad zu der Datei normalerweise: /var/lib/ docker/volumes/ opt_otobo/_data/ Kernel/config.pm um auf diese Datei zuzugreifen benötigt man ein Programm WinScp oder man benutzt die Kommandozeile/Terminal oder Putty. In dieser Datei findet man dann folgenden Abschnitt, wie auch schon im vorherigen Absatz gezeigt wurde.
# CustomerUser
# (customer user database backend and settings)
$Self->{CustomerUser} = {
Name => Translatable('Database Backend'),
Module => 'Kernel::System::CustomerUser::DB',
Params => {
# if you want to use an external database, add the
# required settings
# DSN => 'DBI:odbc:yourdsn',
# Type => 'mssql', # only for ODBC connections
# DSN => 'DBI:mysql:database=customerdb;host=customerdbhost',
# User => '',
# Password => '',
Table => 'customer_user',
# ForeignDB => 0, # set this to 1 if your table does not have create_time, create_by, change_time and change_by fields
# CaseSensitive defines if the data storage of your DBMS is case sensitive and will be
# preconfigured within the database driver by default.
# If the collation of your data storage differs from the default settings,
# you can set the current behavior ( either 1 = CaseSensitive or 0 = CaseINSensitive )
# to fit your environment.
#
# CaseSensitive => 0,
# SearchCaseSensitive will control if the searches within the data storage are performed
# case sensitively (if possible) or not. Change this option to 1, if you want to search case sensitive.
# This can improve the performance dramatically on large databases.
SearchCaseSensitive => 0,
},
# customer unique id
CustomerKey => 'login',
# customer #
CustomerID => 'customer_id',
CustomerValid => 'valid_id',
# The last field must always be the email address so that a valid
# email address like "John Doe" <john.doe@domain.com> can be constructed from the fields.
CustomerUserListFields => [ 'first_name', 'last_name', 'email' ],
# CustomerUserListFields => ['login', 'first_name', 'last_name', 'customer_id', 'email'],
CustomerUserSearchFields => [ 'login', 'first_name', 'last_name', 'customer_id' ],
CustomerUserSearchPrefix => '*',
CustomerUserSearchSuffix => '*',
CustomerUserSearchListLimit => 250,
CustomerUserPostMasterSearchFields => ['email'],
CustomerUserNameFields => [ 'title', 'first_name', 'last_name' ],
CustomerUserEmailUniqCheck => 1,
# # Configures the character for joining customer user name parts. Join single space if it is not defined.
# # CustomerUserNameFieldsJoin => '',
# # show now own tickets in customer panel, CompanyTickets
# CustomerUserExcludePrimaryCustomerID => 0,
# # generate auto logins
# AutoLoginCreation => 0,
# # generate auto login prefix
# AutoLoginCreationPrefix => 'auto',
# # admin can change customer preferences
# AdminSetPreferences => 1,
# use customer company support (reference to company, See CustomerCompany settings)
CustomerCompanySupport => 1,
# cache time to live in sec. - cache any database queries
CacheTTL => 60 * 60 * 24,
# # Consider this source read only.
# ReadOnly => 1,
Map => [
# Info about dynamic fields:
#
# Dynamic Fields of type CustomerUser can be used within the mapping (see example below).
# The given storage (third column) then can also be used within the following configurations (see above):
# CustomerUserSearchFields, CustomerUserPostMasterSearchFields, CustomerUserListFields, CustomerUserNameFields
#
# Note that the columns 'frontend' and 'readonly' will be ignored for dynamic fields.
# note: Login, Email and CustomerID needed!
# var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly, http-link-target, link class(es)
[ 'UserTitle', Translatable('Title or salutation'), 'title', 1, 0, 'var', '', 0, undef, undef ],
[ 'UserFirstname', Translatable('Firstname'), 'first_name', 1, 1, 'var', '', 0, undef, undef ],
[ 'UserLastname', Translatable('Lastname'), 'last_name', 1, 1, 'var', '', 0, undef, undef ],
[ 'UserLogin', Translatable('Username'), 'login', 1, 1, 'var', '', 0, undef, undef ],
[ 'UserPassword', Translatable('Password'), 'pw', 0, 0, 'var', '', 0, undef, undef ],
[ 'UserEmail', Translatable('Email'), 'email', 1, 1, 'var', '', 0, undef, undef ],
# [ 'UserEmail', Translatable('Email'), 'email', 1, 1, 'var', '[% Env("CGIHandle") %]?Action=AgentTicketCompose;ResponseID=1;TicketID=[% Data.TicketID | uri %];ArticleID=[% Data.ArticleID | uri %]', 0, '', 'AsPopup OTOBOPopup_TicketAction' ],
[ 'UserCustomerID', Translatable('CustomerID'), 'customer_id', 0, 1, 'var', '', 0, undef, undef ],
# [ 'UserCustomerIDs', Translatable('CustomerIDs'), 'customer_ids', 1, 0, 'var', '', 0, undef, undef ],
[ 'UserPhone', Translatable('Phone'), 'phone', 1, 0, 'var', '', 0, undef, undef ],
[ 'UserFax', Translatable('Fax'), 'fax', 1, 0, 'var', '', 0, undef, undef ],
[ 'UserMobile', Translatable('Mobile'), 'mobile', 1, 0, 'var', '', 0, undef, undef ],
[ 'UserStreet', Translatable('Street'), 'street', 1, 0, 'var', '', 0, undef, undef ],
[ 'UserZip', Translatable('Zip'), 'zip', 1, 0, 'var', '', 0, undef, undef ],
[ 'UserCity', Translatable('City'), 'city', 1, 0, 'var', '', 0, undef, undef ],
[ 'UserCountry', Translatable('Country'), 'country', 1, 0, 'var', '', 0, undef, undef ],
[ 'UserComment', Translatable('Comment'), 'comments', 1, 0, 'var', '', 0, undef, undef ],
[ 'ValidID', Translatable('Valid'), 'valid_id', 0, 1, 'int', '', 0, undef, undef ],
# Dynamic field example
# [ 'DynamicField_Name_X', undef, 'Name_X', 0, 0, 'dynamic_field', undef, 0, undef, undef ],
],
# default selections
Selections => {
# UserTitle => {
# 'Mr.' => Translatable('Mr.'),
# 'Mrs.' => Translatable('Mrs.'),
# },
},
};
Um ein Feld zu entfernen muss man einfach nur die entsprechende Zeile aus der Map Tabelle entfernen. Dabei muss man aber aufpassen, da man nicht jegliche Felder löschen kann. Dies kann zu Fehlern führen. Felder welche man nicht löschen kann sind, UserLogin, UserEmail und UserPassword. Außerdem sind jene Felder die in den obigen Attributen genannt sind nicht entfernbar. Es gibt diese Attribute CustomerUserListFields, CustomerUserSearchFields, Customner UserPost MasterSearch Fields, Customer UserNameFields, alle in diesen Attributen genannten Feldnamen (Kundenbenutzer Attribute/Spalten) können nicht entfernt werden. Man kann die Feldnamen aber aus den Feldern entfernen und dann die Zeile mit dem Kunden-Attribut löschen.
Man kann Felder nicht nur entfern und hinzufügen sondern auch verändern. Beispielsweise kann man über die zweite Spalte der Map Tabelle in der config.pm Datei den im Agentenportal angezeigten Namen verändern. Zum Beispiel Translatable('Firstname') kann man ändern. Wenn man den Namen in Klammern mit Translatable('X') schreibt, dann wird das Feld übersetzt, sofern ein Eintrag in der Language Datei entdeckt wird. Man kann Namen aber auch ohne Klammern schreiben, wenn man beispielsweise sowie so nur Deutsch Sprachige Nutzer hat kann man auch einfach 'Vorname' schreiben oder 'KundenName'.
Weiterhin hat man auch die Möglichkeit Felder als erforderlich zu definieren dies geht über die 5. Spalte "required". Falls man dort eine 1 eingibt ist das Feld erforderlich, bei einer 0 ist es optional. Wenn man einen neuen Kundenbenutzer für das customer portal erstellt müssen alle required Felder ausgefüllt werden, die optionalen Felder können freigelassen werden. Die Felder UserLogin und Password sollten verpflichtend sein, da sich der Kundenbenutzer andernfalls nicht im Kundenportal anmelden kann.
In der Spalte http-Link kann ein Link angegeben, welcher beim Klicken auf das Attribut aufgerufen wird. Die Kundeninformationen mit dem falls angegeben entsprechenden Link können im Kundeninformationsblock aufgerufen werde. Der Kundeninformationsblock wird beim Ticket erstellen und beim bearbeiten oder anschauen eines Tickets angezeigt.
Kundenbenutzer über LDAP aus einem Active Directory nehmen
Anstatt die Daten aus einer externen Datenbank zu nehmen kann man diese auch aus einem Active Directory nehmen. Dafür muss die Datei /Kernel/Config.pm geändert werden. FOlgendes muss eingefügt werden.
$Self->{CustomerUser} = {
Name => 'LDAP Backend',
Module => 'Kernel::System::CustomerUser::LDAP',
Params => {
# ldap host
Host => 'bay.csuhayward.edu',
# ldap base dn
BaseDN => 'ou=seas,o=csuh',
# search scope (one|sub)
SSCOPE => 'sub',
# The following is valid but would only be necessary if the
# anonymous user does NOT have permission to read from the LDAP tree
UserDN => '',
UserPw => '',
# in case you want to add always one filter to each ldap query, use
# this option. e. g. AlwaysFilter => '(mail=*)' or AlwaysFilter => '(objectclass=user)'
AlwaysFilter => '',
# if the charset of your ldap server is iso-8859-1, use this:
# SourceCharset => 'iso-8859-1',
# die if backend can't work, e. g. can't connect to server
Die => 0,
# Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
Params => {
port => 389,
timeout => 120,
async => 0,
version => 3,
},
},
# customer unique id
CustomerKey => 'uid',
# customer #
CustomerID => 'mail',
CustomerUserListFields => ['cn', 'mail'],
CustomerUserSearchFields => ['uid', 'cn', 'mail'],
CustomerUserSearchPrefix => '',
CustomerUserSearchSuffix => '*',
CustomerUserSearchListLimit => 250,
CustomerUserPostMasterSearchFields => ['mail'],
CustomerUserNameFields => ['givenname', 'sn'],
# Configures the character for joining customer user name parts. Join single space if it is not defined.
CustomerUserNameFieldsJoin => '',
# show customer user and customer tickets in customer interface
CustomerUserExcludePrimaryCustomerID => 0,
# add a ldap filter for valid users (expert setting)
# CustomerUserValidFilter => '(!(description=gesperrt))',
# admin can't change customer preferences
AdminSetPreferences => 0,
# cache time to live in sec. - cache any ldap queries
CacheTTL => 0,
Map => [
# note: Login, Email and CustomerID needed!
# var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly, http-link-target, link class(es)
[ 'UserTitle', Translatable('Title or salutation'), 'title', 1, 0, 'var', '', 1, undef, undef ],
[ 'UserFirstname', Translatable('Firstname'), 'givenname', 1, 1, 'var', '', 1, undef, undef ],
[ 'UserLastname', Translatable('Lastname'), 'sn', 1, 1, 'var', '', 1, undef, undef ],
[ 'UserLogin', Translatable('Username'), 'uid', 1, 1, 'var', '', 1, undef, undef ],
[ 'UserEmail', Translatable('Email'), 'mail', 1, 1, 'var', '', 1, undef, undef ],
[ 'UserCustomerID', Translatable('CustomerID'), 'mail', 0, 1, 'var', '', 1, undef, undef ],
# [ 'UserCustomerIDs', Translatable('CustomerIDs'), 'second_customer_ids', 1, 0, 'var', '', 1, undef, undef ],
[ 'UserPhone', Translatable('Phone'), 'telephonenumber', 1, 0, 'var', '', 1, undef, undef ],
[ 'UserAddress', Translatable('Address'), 'postaladdress', 1, 0, 'var', '', 1, undef, undef ],
[ 'UserComment', Translatable('Comment'), 'description', 1, 0, 'var', '', 1, undef, undef ],
# this is needed, if "SMIME::FetchFromCustomer" is active
# [ 'UserSMIMECertificate', 'SMIMECertificate', 'userSMIMECertificate', 0, 1, 'var', '', 1, undef, undef ],
# Dynamic field example
# [ 'DynamicField_Name_X', undef, 'Name_X', 0, 0, 'dynamic_field', undef, 0, undef, undef ],
],
};
Danach müssen die angegebenen Einstellungen, wie um Beispiel host, port usw. verändert werden.
Kundenbenutzer - Mandantenfähigkeit
Über das zusätzliche Paket "CustomerMultitenancy", kann man dem Ticketsystem Mandantenfähigkeit hinzufügen.
Beschreibung des Pakets:
Dieses Paket ermöglicht gruppenbasierte Einschränkungen von Kunden- und Kundenbenutzerinformationen für Agenten. Standardmäßig sind alle Kunden für Agenten sichtbar. Nach der Installation dieses Pakets können die Kunden einer Agentengruppe zugewiesen werden. Diese Kunden sind dann nur für Agenten sichtbar, die Zugriffsrechte auf diese bestimmten Gruppe. Auch komplette Kundenquellen können eingeschränkt werden. Die Zugriffsrechte auf die Kundenbenutzer werden von den auf den Kunden gesetzten Rechten geerbt, können aber auch individuell gesetzt werden. Diese Funktionalität funktioniert für die Kunden-(Benutzer-)Tabellen von OTOBO und nur lesend für Remote-Datenbanken als auch LDAP.
(Rother OSS GmbH)
In der Config.pm ist eine Reihe von Anpassungen erforderlich. Sowohl für DB als auch für LDAP ist es notwendig, die Blöcke CustomerCompany und/oder CustomerUser zu ändern. (Falls diese nicht vorhanden sind, kopieren Sie sie bitte für Kernel/Config/Defaults.pm nach Kernel/Config.pm und passen Sie sie dort an!) Um das Setzen der Agentengruppe in AdminCustomer und AdminCustomerUser zu ermöglichen, müssen die Variablen zu den Maps hinzugefügt werden.
Somit hat man ein weiteres Feld beim Kundenbenutzer bearbeiten. Jede Reihe sollte einen Gruppen Namen haben. Man kann in der Map aber auch einstellen das Felder readonly sein sollen
Gruppen Beschränkung
UserGroupIDSync => {
# Match group names instead of group IDs.
UseGroupNames => 1,
# Remap group names or IDs.
# The key is the group name/ID on the remote system (DB or LDAP-Attribute)
# and the value is the group name/ID on the local system.
RemoteGroupToLocalGroup => {
'ad-admin-group' => 'admin',
'ad-user-group' => 'users',
},
},
Remote Group beinhaltet die Gruppen Namen aus der angegebenen LDAP oder Datenbank. Die angegebene Remote Gruppe hat dann nur Zugriff auf Kundenbenutzer welche in der angegbenen Local Group sind.
Login im OTOBO Kunden Portal
Für das Login im Kundenportal, muss der Kunde folgende URL aufrufen - DEINEDOMAIN.de/ otobo/customer.pl.
Falls sie Ihr Passwort für das Kundenportal vergessen haben, dann klicken sie auf "Passwort vergessen?". Daraufhin wird eine Email mit einem Link geschickt, nachdem sie auf diesen Link geklickt haben, bekommen Sie eine zweite Email mit Ihrem neuen Passwort. Sie können diese Passwort Vergessen Funktion ein oder aus stellen über die Systemkonfiguration "CustomerPanel LostPassword", über die Einstellung CustomerPanel BodyLost Password sowie die Konfiguration "CustomerPanel BodyLost PasswordToken" können sie Email mit dem Passwort-Link und die Email mit dem Passwort geändert werden.
Kunden Portal Logo ändern
Um das Bild welches beim Kunden Portal Login angezeigt wird zu verändern, muss man in der Systemkonfiguration "Customer Login:: Settings" die URL verändern.
Dort kann man mit der Einstellung "Background" verändern, welches Bild gewählt wird. Sowohl eine URL zu einer Bild Datei, als auch ein Pfad zum Bild auf dem Server sind möglich. Mit "LoginText" kann, man den Text welcher im Kundenportal angezeigt wird verändern.
Dashboard des OTOBO Customer Portals
Nachdem Sie sich im OTOBO Kundenportal eingeloggt haben, landen Sie im Dashboard des OTOBO Kundenportals
Dashboard des Kundenportals
Dort können Sie Ihre letzen Tickets einsehen, als auch Links zu externen Tools. Über das Feld Ticket erstellen, können sie ein neues Ticket anlegen.
Kundenportal Dashboard verändern
Man kann in den Systemkonfigurationen des Agentenportals, das Aussehen des OTOBO Dashboards ändern. Diese Konfigurationen befinden sich an folgender Stelle:
Frontend -> Customer -> ModelRegistration
Dort werden alle Navigationselemente festgelegt.
In der Einstellung " CustomerFrontend: :Navigation ###CustomerDashboard## #002-CustomerDashboard" ist das oberste Navigationselement festgelegt. Mit der Prio kann man die Reihenfolge der Navigationselemente ändern. Kleinere kommen zuerst. Mit dem svgIcon, kann man das angezeigt Piktogramm ändern. Mit der Description wird der Hover-Text festgelegt. Mit Group und GroupRo könnten Sie Menüpunkte für bestimmte Kundenbenutzer ausschalten.
Mit der Einstellung " CustomerDashboard: :Configuration:: Text" kann die Seitenüberschrift, sowie der Begrüßungstext geändert werden.
Über die Tiles im Konfigurationspfad Frontend -> Customer -> View -> Dashboard -> Tiles. Können die Elemente des Dashboards geändert werden. Folgende Tiles gibt es im Standard Fall:
CustomerDashboard :Tiles# ##PlainPicture- 01 definiert das Bild auf dem Dashboard(das ganz unten "Overview"; man könnte das angezeigte Bild austauschen
CustomerDashboard: :Tiles### PlainText-01 - erzeugt eine Kachel, welche einen Text anzeigt. Standardmäßig steht in diesem "Hello World"
CustomerDashboard: :Tiles## #NewTicket -ist ein Button zum Erstellen eines Tickets. Es kann die Farbe des Textes eingestellt werden
CustomerDashboard: :Tiles## #FeaturedLink-01 - zeigt das Bild mit dem Schriftzug Thats new in OTOBO, Background Image Link und Text können verändert werden.
CustomerDashboard: :Tiles# ##TicketList-01 - zeigt die Liste der Letzten Tickets; Es kann die Reihenfolge, Anzahl der Tickets und weiteres verändert werden
CustomerDashboard: :Tiles# ##ToolBox-01 - stellt Icons mit Links da
Ticket im OTOBO Kunden Portal erstellen
In der Ticket-Erstell Maske, können Sie verschiedene Attribute festlegen. Die Felder des Ticket Erstellens können Sie im Admin Bereich verändern.
Felder der Ticket-Erstellung:
Typ: Der Typ des Tickets - z.B Problem oder Frage
An: Die Queue in welcher das Ticket erstellt werden soll
Betreff: Die Überschrift des Tickets
Text: Beschreibung des Tickets
Dateien: Dort können Dateien hochgeladen und dem Ticket angehängt werden
Priorität: Wie wichtig das Lösen des Tickets ist
Kundenportal Ticket Informationen
Nachdem man ein Ticket angeklickt hat, kann man alle Artikel (Betreff, Nachrichten) . In den Systemkonfiguration kann man einstellen, welche Attribute in dieser Tabelle angezeigt werden.
Wenn ein Feld auf 1 gesetzt ist, wird es angezeigt. Um Dynamische Felder zu der Ansicht hinzuzufügen, muss man dieses Feld zu der dynamischen Felder Oberfläsche - Ticket:: Frontend:: CustomerTicketZoom
Tickets im Kunden Portal bearbeiten
Natürlich kann man auch bestehende Tickets bearbeiten. Dafür wählt man ein bestimmtes Ticket aus und wählt dann Antworten aus, daraufhin kann man eine Antwort zum Ticket schreiben.
Daraufhin kann man dem Ticket eine Nachricht hinzufügen, sowie einen neuen Status des Tickets festlegen.
Einstellungen im Kunden Portal ändern
Im Otobo Kundenportal kann der Kundenbenutzer seine persönlichen Einstellungen ändern, dafür muss er die Maus über den unten links befindenden Avatar bewegen und dann auf das Zahnrad drücken. In den Einstellungen können die Sprache, das Passwort, die Anzahl angezeigten Tickets sowie die Ticketaktualisierung geändert werden.
OTOBO Kunden Portal anpassen
Es gibt einige Anpassungsmöglichkeiten für das OTOBO Kundenportal, auf diese können über den Admin Bereich des Agentenportals zugegriffen werden. Die Anpussungs Möglichkeiten findet man in den Systemkonfigurationen. Dort dann unter Frontend -> Customer.
Einstellungs Möglichkeiten
CustomerFrontend:: Active - schaltet das Kundenportal aus oder an.
CustomerPanel CreateAccount - gibt Kunden die Möglichkeit sich selbst einen Account zu erstellen
CustomerPanel LostPassword - schaltet die Passwort vergessen Funktion ein
Customer Logo - stellt das verwendete Logo im Kundenportal ein
CustomerPanel BodyLostPassword - stellt die Nachricht, welche das neu eingestelte Passwort hat ein
CustomerPanel BodyLost PasswordToken - stellt die gesendete Nachricht ein, die gesendet wird wenn jemand auf den Passwort vergessen Button geklickt hat
CustomerPanel Body NewAccount - stellt die Nachricht ein, welche neue Nutzer des Otobo Ticketsystems erhalten
Customer PanelCreate Account:: MailRestrictions ::Blacklist - Verbietet es Nutzern mit bestimmten Emails einen Account zu erstellen - Alle Emails welche diesen regulären Ausdruck erfüllen sind verboten
CustomerPanel CreateAccount:: MailRestrictions:: Whitelist - falls aktiviert, können sich nur Nutzer einen Account erstellen, wessen Email Account diesen regulären Ausdruck erfüllt
Customer PanelLogin URL - legt die URL des Kundenportal Logins fest
Weitere Felder beim Ticket erstellen im Kunden Portal
Man hat die Möglichkeit noch weitere Felder zur Ticket-Erstell Maske hinzuzufügen. Dies geht über die Dynamischen Felder, es gibt folgende Arten an dynamischen Feldern:
Kontrollkästchen
Kontaktdaten
Datenbank
Datum
Datum / Zeit
Einfachauswahl
Mehrfachauswahl
Text
Textfeld
Titel
Webservice
Man kann dort einer dieser Arten auswählen, danach kann man die Einstellungen des Feldes festlegen. Wenn man ein Textfeld hinzufügt, dann kann man Name, Beschriftung, Feldreihenfolge, Tooltip-Text, Anzahl der Zeilen, Anzahl der Spalten, Standardwert und ob man die Eingabe mit einem Regulären Ausdruck auf Richtigkeit prüfen will.
Nachdem das Feld erstellt wurde müssen wir jetzt noch festlegen in welchen Oberflächen das Feld angezeigt werden soll, dafür gehen wir auf die Kachel "Dynamische Felder Oberflächen".
Kundenportal anpassen
Im Admin Bereich des Agentenportals, können Sie das Kundenportal anpassen.
Meine Leidenschaft für die Programmierung begleitet mich schon seit vielen Jahren und ich bin stolz darauf, mein Wissen und meine Erfahrungen in der Entwicklung von Softwarelösungen nutzen zu können, um meinen Kunden maßgeschneiderte Lösungen anzubieten. Besonders gut kenne ich mich mit dem OTOBO Ticketsystem aus und bin in der Lage, damit auch komplexe Probleme zu lösen. Neben meiner Arbeit als Geschäftsführer, genieße ich es in meiner Freizeit zu joggen. Die Bewegung in der Natur tut mir gut und hilft mir dabei, mich zu entspannen und neue Energie zu tanken. Obwohl ich meinen Lebensmittelpunkt in Karlsruhe habe, verbringe ich auch gerne Zeit in meiner Heimatstadt Mainz, um Freunde und Familie zu besuchen. Das Internet ermöglicht es mir, meine Hilfe auch Menschen aus der ganzen Welt anzubieten. Ich freue mich, mein Wissen zu teilen und anderen bei ihren Projekten und Problemen zu helfen. Es bereitet mir Freude, wenn ich dabei helfen kann, dass Ideen und Projekte erfolgreich umgesetzt werden können.