[solved] REST Webservice - Kundenfirmentickets - Ticketsearch

Hilfe zu OTRS Problemen aller Art
steste123
OTRS ninja
Posts: 511
Joined: 25 Sep 2012, 19:04
OTRS Version?: OTRS Help Desk
Real Name: Stefan

[solved] REST Webservice - Kundenfirmentickets - Ticketsearch

Postby steste123 » 11 Jan 2018, 14:29

Hallo zusammen,
ich habe einen API Call um Kundentickets anzeigen zu lassen - also die Tickets des gesamten Kunden.
OTRS nutzt zwei Kunden und Kundenbenutzerdatenbanken.

Die Kunden-Datenbank beinhalten teilweise die gleichen Kunden+Kundennummern.
Die Kundenbenutzerdatenbank ebenfalls - da kann es aber vorkommen, dass manche User nicht in der OTRS-DB vorhanden sind sondern nur in der ext. Datenbank - und andersherum.

Nun möchte ich aber per API alle Tickets des Kunden anzeigen lassen - egal in welcher DB er vorkommt.

Code: Select all

{"SessionID":"xxxxx","CustomerUserID":["825","1320","1671","2273","2282"],"StateTypeIDs":[1,4,6,7,8],"Limit":50}
JSON DATA

Es werden aber nicht alle Tickets angezeigt. Im OTRS Kundenportal tauchen alle sauber auf.

Hat einer eine Idee?
Last edited by steste123 on 22 Jan 2018, 20:15, edited 2 times in total.
OTRS 5.x - Debian 8 - apache 2.4 - MySQL 5.x

root
Moderator
Posts: 1078
Joined: 18 Dec 2007, 12:23
OTRS Version?: 4/5/6
Real Name: Roy Kaldung
Company: Znuny Inc.
Contact:

Re: API - Kundenfirmentickets - Ticketsearch

Postby root » 11 Jan 2018, 15:01

Hi,

Im Kundenportal sucht er ja nicht nach CustomerUserID sondern nach CustomerID.

- Roy


P.S.: Ich nehme an mit API meinst Du eigentlich das GenericInterface REST? Weil API ist eigentlich das hier: http://doc.otrs.com/doc/api/otrs/5.0/Perl/index.html
OTRS 4/5/6 CentOS / RHEL / Debian / SLES / MySQL / PostgreSQL / Oracle / OpenLDAP / Active Directory / SSO

You need professional services? Check out http://znuny.com/

steste123
OTRS ninja
Posts: 511
Joined: 25 Sep 2012, 19:04
OTRS Version?: OTRS Help Desk
Real Name: Stefan

Re: API - Kundenfirmentickets - Ticketsearch

Postby steste123 » 11 Jan 2018, 15:17

Ja korrekt - über REST :)
OTRS 5.x - Debian 8 - apache 2.4 - MySQL 5.x

steste123
OTRS ninja
Posts: 511
Joined: 25 Sep 2012, 19:04
OTRS Version?: OTRS Help Desk
Real Name: Stefan

Re: API - Kundenfirmentickets - Ticketsearch

Postby steste123 » 11 Jan 2018, 15:42

Eine Sache die mir sofort auffält wenn ich mir die User im OTRS anschaue ist, dass bei den DB eigenen Nutzern die Kundennummer anders dargestellt wird als bei den synchronisierten Nutzern. Das dürfte aber nicht ins Gewicht fallen oder?

Screenshots:
https://ibb.co/bAvscR
DB-Nutzer: Firmenname wird angezeigt und die Liste ist ein Dropdown.
https://ibb.co/mB0fWm
Externe SQL: Kundennummer im Textfeld


Fakt ist, dass ich im OTRS Kundenportal und im eigenen Portal welches per REST angebunden unterschiedliche Tickets habe
OTRS 5.x - Debian 8 - apache 2.4 - MySQL 5.x

steste123
OTRS ninja
Posts: 511
Joined: 25 Sep 2012, 19:04
OTRS Version?: OTRS Help Desk
Real Name: Stefan

Re: API - Kundenfirmentickets - Ticketsearch

Postby steste123 » 13 Jan 2018, 15:52

Jemand eine Idee?

Einige Firmentickets kann ich per API abfrage - aber halt nicht alle :( bei manchen kommt dass der user kein zugriff hat, obwohl der user in beiden DBs vorhanden ist. Kann es vllt sein, dass die tickets immer fest einem von beiden UserDBs zugeordnet wird? und wenn das Ticket bspw. Max Mustermann in der OTRS DB gehört kann ich es mit dem Max Mustermann aus der extl. SQL nicht abfragen?
OTRS 5.x - Debian 8 - apache 2.4 - MySQL 5.x

root
Moderator
Posts: 1078
Joined: 18 Dec 2007, 12:23
OTRS Version?: 4/5/6
Real Name: Roy Kaldung
Company: Znuny Inc.
Contact:

Re: API - Kundenfirmentickets - Ticketsearch

Postby root » 13 Jan 2018, 16:32

Hi,

also wenn ich mir die möglichen Parameter ansehe, https://github.com/OTRS/otrs/blob/rel-5 ... ch.pm#L117, dann bin ich mir sicher das der Paramete CustomerUserID falsch ist und Du entweder CustomerID bzw. CustomerUserLogin nehmen solltest. CustomerUserID wird durch die API selber gesetzt und genutzt, je nachdem ob das verwendete Login für die REST-API von einem Agenten oder Kundenbenutzer stammt.

- Roy
OTRS 4/5/6 CentOS / RHEL / Debian / SLES / MySQL / PostgreSQL / Oracle / OpenLDAP / Active Directory / SSO

You need professional services? Check out http://znuny.com/

steste123
OTRS ninja
Posts: 511
Joined: 25 Sep 2012, 19:04
OTRS Version?: OTRS Help Desk
Real Name: Stefan

Re: API - Kundenfirmentickets - Ticketsearch

Postby steste123 » 14 Jan 2018, 10:54

Hi,
werde ich ausprobieren - Ergebnis folgt :)

Bist du der Meinung, dass das mit den zwei Datenbanken und den teilweise doppelt vorhandenen Nutzern nicht das Problem sein kann?
OTRS 5.x - Debian 8 - apache 2.4 - MySQL 5.x

root
Moderator
Posts: 1078
Joined: 18 Dec 2007, 12:23
OTRS Version?: 4/5/6
Real Name: Roy Kaldung
Company: Znuny Inc.
Contact:

Re: API - Kundenfirmentickets - Ticketsearch

Postby root » 14 Jan 2018, 17:37

steste123 wrote:Bist du der Meinung, dass das mit den zwei Datenbanken und den teilweise doppelt vorhandenen Nutzern nicht das Problem sein kann?


Hi,

Du suchst ja nach Tickets mit einer Kundennummer bzw. einem Kundenbenutzerlogin und nicht nach den Kundenbenutzern. Das wird ggf. ein Problem wenn OTRS selber die Kundennummer zuordnen will, zum Beispiel beim Eingang einer E-Mail. Das ist aber ein anderes Thema..

- Roy
OTRS 4/5/6 CentOS / RHEL / Debian / SLES / MySQL / PostgreSQL / Oracle / OpenLDAP / Active Directory / SSO

You need professional services? Check out http://znuny.com/

steste123
OTRS ninja
Posts: 511
Joined: 25 Sep 2012, 19:04
OTRS Version?: OTRS Help Desk
Real Name: Stefan

Re: API - Kundenfirmentickets - Ticketsearch

Postby steste123 » 16 Jan 2018, 16:35

mhmm...
ich könnte theoretisch auf die OTRS eigene DB für die Kundenbenutzer verzichten und komplett auf die externe Datenbank setzen.
Was passiert mit bestehenden Tickets wenn ich lediglich die ext. DB nutze?
OTRS 5.x - Debian 8 - apache 2.4 - MySQL 5.x

root
Moderator
Posts: 1078
Joined: 18 Dec 2007, 12:23
OTRS Version?: 4/5/6
Real Name: Roy Kaldung
Company: Znuny Inc.
Contact:

Re: API - Kundenfirmentickets - Ticketsearch

Postby root » 16 Jan 2018, 16:50

Wenn OTRS zu dem Kundenbenutzer der am Ticket hängt keinen Eintrag findet, dann zeigt er halt keine Kundendaten an.

- Roy
OTRS 4/5/6 CentOS / RHEL / Debian / SLES / MySQL / PostgreSQL / Oracle / OpenLDAP / Active Directory / SSO

You need professional services? Check out http://znuny.com/

steste123
OTRS ninja
Posts: 511
Joined: 25 Sep 2012, 19:04
OTRS Version?: OTRS Help Desk
Real Name: Stefan

Re: API - Kundenfirmentickets - Ticketsearch

Postby steste123 » 18 Jan 2018, 18:18

Ich habe nun die Config so eingestellt, dass nur die externe DB genutzt wird.
Aber dennoch sind nicht alle Tickets da - ganz im Gegenteil.
Im OTRS Kundenportal sehe ich meine eigenen (2) und unter Firmentickets (600+) alle Ticket der Benutzer über die verlinkten Kundennummer.
Über die Webabfrage sehe nur meine zwei Tickets welche einem anderen User gehören unter der gleichen Kundennummer.
Muss ich bei der Abfrage von Firmentickets noch etwas beachten?

Frage am Rand - schaut sich das OTRS Kundenportal irgendwie die Domain in der Mailadresse an?

Folgend die Konfig:

ZZZCustomerUserDB.pm
#########################
#########################
# CustomerUser (customer database backend and settings)
$Self->{CustomerUser} = {
Name => 'extDB',
Module => 'Kernel::System::CustomerUser::DB',
Params => {

DSN => 'DBI:mysql:database=xxx;host=xxx',
User => 'xxx',
Password => 'xxx',
Table => 'com_users_view',
SourceCharset => 'iso-8859-1',
DestCharset => 'utf-8',
CaseSensitive => 0,
ForeignDB => 1, # <-- THIS IS IMPORTANT WHEN YOU USE EXTERNAL DB WITHOUT create_$
},
#customer unique id
CustomerKey => 'uemail',

# customer #
CustomerID => 'partner_number',
CustomerValid => 'valid_id',

CustomerUserListFields => ['ufirstname', 'ulastname', 'uemail'],
CustomerUserSearchFields => ['ufirstname', 'ulastname', 'partner_number', 'uemail'],
CustomerUserSearchPrefix => '*',
CustomerUserSearchSuffix => '*',
CustomerUserSearchListLimit => 250,
CustomerUserPostMasterSearchFields => ['uemail'],
CustomerUserNameFields => ['ufirstname','ulastname'],
CustomerUserEmailUniqCheck => 1,
# # show not own tickets in customer panel, CompanyTickets
CustomerUserExcludePrimaryCustomerID => 0,
# # generate auto uemails
# AutouemailCreation => 0,
# AutouemailCreationPrefix => 'auto',
# # admin can change customer preferences
# AdminSetPreferences => 1,
# # cache time to live in sec. - cache any database queries
CacheTTL => 0,

# # just a read only source
# ReadOnly => 1,
Map => [
# note: uemail, uemail and CustomerID needed!
# var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link$
# [ 'create_time', 'Created', 'activation_date', 2, 0, 'var', '', 0],
[ 'UserTitle', 'Title', 'ugender', 1, 0, 'var', '', 0 ],
[ 'UserFirstname', 'Firstname', 'ufirstname', 1, 1, 'var', '', 0 ],
[ 'UserLastname', 'Lastname', 'ulastname', 1, 1, 'var', '', 0 ],
[ 'UserLogin', 'Username', 'uemail', 1, 1, 'var', '', 0 ],
[ 'UserPassword', 'Password', 'upass', 0, 0, 'var', '', 0 ],
[ 'UserEmail', 'Email', 'uemail', 1, 1, 'var', '', 0 ],

# [ 'Useruemail', 'uemail', 'uemail', 1, 1, 'var', '$Env{"CGIHandle"}?$
[ 'UserCustomerID', 'CustomerID', 'partner_number', 0, 1, 'var', '', 0 ],

# [ 'UserCustomerIDs', 'CustomerIDs', 'customer_ids', 1, 0, 'var', '', 0 ],
# [ 'UserPhone', 'Phone', 'uphone', 1, 0, 'var', '', 0 ],
# [ 'UserFax', 'Fax', 'fax', 1, 0, 'var', '', 0 ],
# [ 'UserMobile', 'Mobile', 'mobile', 1, 0, 'var', '', 0 ],
# [ 'UserStreet', 'Street', 'ucompany_street', 1, 0, 'var', '', 0 ],
# [ 'UserZip', 'Zip', 'ucompany_zip', 1, 0, 'var', '', 0 ],
# [ 'UserCity', 'City', 'ucompany_city', 1, 0, 'var', '', 0 ],
# [ 'UserCountry', 'Country', 'user_cntr', 1, 0, 'var', '', 0 ],
# [ 'UserComment', 'Comment', 'comments', 1, 0, 'var', '', 0 ],
[ 'ValidID', 'Valid', 'valid_id', 0, 1, 'int', '', 0 ],
],
# default selections
Selections => {
UserTitle => {
'male' => 'Mr.',
'female' => 'Mrs.',
},
},
};


ZZZCustomerCompanyDB.pm
########### (customer user database backend and settings)
$Self->{CustomerCompany} = {
Name => 'Kunden',
Module => 'Kernel::System::CustomerCompany::DB',
Params => {

# if you want to use an external database, add the
# required settings
DSN => 'DBI:mysql:database=xxx;host=xxx',
User => 'xxx',
Password => 'xxx',
Table => 'com_users_company',
SourceCharset => 'iso-8859-1',
DestCharset => 'utf-8',
CaseSensitive => 0,
ForeignDB => 1,
},

###### company unique id
CustomerCompanyKey => 'partner_number',
CustomerCompanyValid => 'CustValid',
CustomerCompanyListFields => [ 'partner_number', 'cname' ],
CustomerCompanySearchFields => ['partner_number', 'cname'],
CustomerCompanySearchPrefix => '*',
CustomerCompanySearchSuffix => '*',
CustomerCompanySearchListLimit => 250,
CacheTTL => 0, # 60 * 60 * 24, # use 0 to turn off cache

#ReadOnly => 1,

Map => [
# var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
[ 'CustomerID', 'CustomerID', 'partner_number', 0, 1, 'var', '', 0 ],
[ 'CustomerCompanyName', 'Company', 'cname', 1, 1, 'var', '', 0 ],
# [ 'CustomerCompanyStreet', 'Street', 'ucompany_street', 1, 0, 'var', '', 0 ],
# [ 'CustomerCompanyZIP', 'Zip', 'ucompany_zip', 1, 0, 'var', '', 0 ],
# [ 'CustomerCompanyCity', 'City', 'ucompany_city', 1, 0, 'var', '', 0 ],
# [ 'CustomerCompanyCountry', 'Country', 'country', 1, 0, 'var', '', 0 ],
# [ 'CustomerCompanyURL', 'URL', 'url', 1, 0, 'var', '$Data{"CustomerCompanyURL"}', 0 ],
# [ 'CustomerCompanyComment', 'Comment', 'comments', 1, 0, 'var', '', 0 ],
# [ 'ValidID', 'Valid', 'CustValid', 0, 1, 'int', '', 0 ],
],

};
OTRS 5.x - Debian 8 - apache 2.4 - MySQL 5.x

steste123
OTRS ninja
Posts: 511
Joined: 25 Sep 2012, 19:04
OTRS Version?: OTRS Help Desk
Real Name: Stefan

Re: REST Webservice - Kundenfirmentickets - Ticketsearch

Postby steste123 » 22 Jan 2018, 11:41

Muss ich bei der Abfrage von Firmentickets noch etwas beachten?
OTRS 5.x - Debian 8 - apache 2.4 - MySQL 5.x


Return to “Hilfe”

Who is online

Users browsing this forum: No registered users and 7 guests