Es existieren zwei Kundenbenutzer-Backends, DB und LDAP. Falls Sie bereits ein Kunden-Verzeichnis (z.B. SAP, ...) haben, ist es natürlich möglich, dafür ein eigenes Backend zu schreiben.
Notiz: Es is auch möglich mehr als einen Kunden-Daten Topf zu definieren. Einfach eine weitere Konfig Option wie "CustomerUser" mit einer Nummer zwischen 1 und 10. Zum Beispiel "CustomerUser1".
Dies ist ein Beispiel für ein Datenbank-Backend.
[Kernel/Config.pm]
# CustomerUser
# (customer user database backend and settings)
$Self->{CustomerUser} = {
Name => 'Datenbank Quelle',
Module => 'Kernel::System::CustomerUser::DB',
Params => {
# if you want to use an external database, add the
# required settings
# DSN => 'DBI:odbc:yourdsn',
# DSN => 'DBI:mysql:database=customerdb;host=customerdbhost',
# User => '',
# Password => '',
Table => 'customer_user',
},
# customer uniq id
CustomerKey => 'login',
# customer #
CustomerID => 'customer_id',
CustomerValid => 'valid_id',
CustomerUserListFields => ['login', 'first_name', 'last_name', 'email'],
CustomerUserSearchFields => ['login', 'last_name', 'customer_id'],
CustomerUserPostMasterSearchFields => ['email'],
CustomerUserNameFields => ['salutation', 'first_name', 'last_name'],
Map => [
# note: Login, Email and CustomerID needed!
# var, frontend, storage, shown, required, storage-type, http-link
[ 'UserSalutation', 'Salutation', 'salutation', 1, 0, 'var' ],
[ 'UserFirstname', 'Firstname', 'first_name', 1, 1, 'var' ],
[ 'UserLastname', 'Lastname', 'last_name', 1, 1, 'var' ],
[ 'UserLogin', 'Login', 'login', 1, 1, 'var' ],
[ 'UserPassword', 'Password', 'pw', 0, 1, 'var' ],
[ 'UserEmail', 'Email', 'email', 0, 1, 'var' ],
# [ 'UserEmail', 'Email', 'email', 1, 1, 'var', '$Env{"CGIHandle"}?Action=\
AgentCompose&ResponseID=1&TicketID=$Data{"TicketID"}&ArticleID=$Data{"ArticleID"}' ],
[ 'UserCustomerID', 'CustomerID', 'customer_id', 0, 1, 'var' ],
[ 'UserComment', 'Comment', 'comment', 1, 0, 'var' ],
[ 'ValidID', 'Valid', 'valid_id', 0, 1, 'int' ],
],
};
[...] |
Falls Sie Ihre Kundendaten anpassen möchten, ändern Sie die Tabellenspalten oder fügen Sie weitere hinzu:
ALTER TABLE customer_user ADD phone VARCHAR (250); |
# var, frontend, storage, shown, required, storage-type, http-link
[ 'UserPhone', 'Phone', 'phone', 1, 0, 'var' ], |
MultiCustomerIDs: Es ist auch möglich mehr als nur eine Kunden-Nummer einen Kunden zu geben. Z. B. wenn ein Kunde auf Tickets anderer Kunden zugreifen muss.
Einfach eine Tabellenspalten hinzufügen in der die Kunden-Nummern eingetragen werden (wie "CustomerID1, CustomerID2, CustomerID3"):
ALTER TABLE customer_user ADD customer_ids VARCHAR (250); |
Nun einen weiteren Eintrag in der CustomerUser MAP Aarray In Kernel/Config.pm hinzufügen:
# var, frontend, storage, shown, required, storage-type, http-link
[ 'UserCustomerIDs', 'CustomerIDs', 'customer_ids', 1, 0, 'var' ], |
Falls Sie ein existierendes LDAP-Verzeichnis mit Ihren Kunden-Benutzern haben, sind Sie in der Lage, dieses auch in OTRS zu nutzen.
Dies ist ein Beispiel für ein LDAP-Backend.
[Kernel/Config.pm]
# CustomerUser
# (customer user ldap backend and settings)
$Self->{CustomerUser} = {
Name => 'LDAP Quelle',
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 => '',
# Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
Params => {
port => 389,
version => 3,
},
},
# customer uniq id
CustomerKey => 'uid',
# customer #
CustomerID => 'mail',
CustomerUserListFields => ['uid', 'cn', 'mail'],
CustomerUserSearchFields => ['uid', 'cn', 'mail'],
CustomerUserPostMasterSearchFields => ['mail'],
CustomerUserNameFields => ['givenname', 'sn'],
Map => [
# note: Login, Email and CustomerID needed!
# var, frontend, storage, shown, required, storage-type
[ 'UserSalutation', 'Title', 'title', 1, 0, 'var' ],
[ 'UserFirstname', 'Firstname', 'givenname', 1, 1, 'var' ],
[ 'UserLastname', 'Lastname', 'sn', 1, 1, 'var' ],
[ 'UserLogin', 'Login', 'uid', 1, 1, 'var' ],
[ 'UserEmail', 'Email', 'mail', 1, 1, 'var' ],
[ 'UserCustomerID', 'CustomerID', 'mail', 0, 1, 'var' ],
[ 'UserPhone', 'Phone', 'telephonenumber', 1, 0, 'var' ],
[ 'UserAddress', 'Address', 'postaladdress', 1, 0, 'var' ],
[ 'UserComment', 'Comment', 'description', 1, 0, 'var' ],
],
};
[...] |
Falls Sie Ihre Kundendaten anpassen möchten, fügen Sie Ihre neuen Punkte dem MAP Array hinzu (oder entfernen Sie nicht benötigte Punkte):
# var, frontend, storage, shown, required, storage-type, http-link
[ 'UserOrganisation', 'Organisation', 'ou', 1, 0, 'var' ], |
MultiCustomerIDs: Es ist auch möglich mehr als nur eine Kunden-Nummer einen Kunden zu geben. Z. B. wenn ein Kunde auf Tickets anderer Kunden zugreifen muss.
Einfach eine Feld im LDAP Baum für die Multi-Kunden-Nummern auswählen in welche die Kunden-Nummern eingetragen werden (wie "CustomerID1, CustomerID2, CustomerID3"):
Nun einen weiteren Eintrag in der CustomerUser MAP Aarray In Kernel/Config.pm hinzufügen:
# var, frontend, storage, shown, required, storage-type, http-link
[ 'UserCustomerIDs', 'CustomerIDs', 'second_customer_ids', 1, 0, 'var' ], |