Hallo zusammen,
ich möchte mich vorab für eure Unterstützung bedanken. Ich habe ein Problem bei der Durchführung von HTTP GET-Anfragen in OTRS mittels PowerShell und hoffe auf eure Hilfe.
Aktuelles System:
- OTRS mit konfiguriertem Webservice
- PowerShell-Skript zur Abfrage von Ticketinformationen
Mein Ziel:
Ich möchte den Inhalt bestimmter Tickets mittels einer HTTP GET-Anfrage ermitteln. Dabei sind mir folgende Informationen wichtig:
- Kundennummer
- Betreff (Subject)
- Textinhalt
Langfristiges Ziel:
Automatisierung der Auswertung aller Tickets in einer bestimmten Queue.
Konfiguration des Webservices:
- Name: Api
- Netzwerktransporttyp: HTTP::Rest
- Route-Mapping für Operation 'ticketget': `/Ticket/:TicketID`
- Gültige Anfragemethoden für Operation 'ticketget': GET
- Maximale Nachrichtenlänge: 2900
- Keep Alive senden: Nein
- Operationen: ticket::ticketget
- Mapping für eingehende und ausgehende Daten: Einfach (ist das richtig?)
PowerShell-Skript:
```powershell
$BaseUri = "http://#####/otrs/nph-genericinterface.pl/Webservice/api/Ticket" # URL angepasst
$TicketId = "82124882" # Beispiel-Ticket-ID
$Username = "Benutzername" # geändert
$Password = "Kennwort" # geändert
$AuthInfo = "${Username}:${Password}"
$Credentials = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($AuthInfo))
$Headers = @{Authorization=("Basic $Credentials")}
$Uri = "$BaseUri/$TicketId"
try {
$Response = Invoke-WebRequest -Uri $Uri -Method Get -Headers $Headers
$Response.Content
} catch {
Write-Host "Fehler beim Abrufen der Daten: $_"
}
```
Problem:
Ich erhalte die Fehlermeldung:
```
{
"Error": {
"ErrorCode": "TicketGet.AuthFail",
"ErrorMessage": "TicketGet: Authorization failing!"
}
}
```
im log erhalt eich folgnede Infos:
$VAR1 = {
'CONTEXT_DOCUMENT_ROOT' => '/opt/otrs/bin/cgi-bin/',
'CONTEXT_PREFIX' => '/otrs/',
'DOCUMENT_ROOT' => '/var/www/html',
'GATEWAY_INTERFACE' => 'CGI/1.1',
'HTTP_ACCEPT' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'HTTP_ACCEPT_ENCODING' => 'gzip, deflate',
'HTTP_ACCEPT_LANGUAGE' => 'de',
'HTTP_CACHE_CONTROL' => 'max-age=0',
'HTTP_CONNECTION' => 'keep-alive',
'HTTP_COOKIE' => 'OTRSAgentInterface=sqhDNqrfi3N9Rb4NhTNec25mETMavaSQ; _ga_5VPR3EBECJ=GS1.1.1703162809.2.0.1703162809.0.0.0; _ga=GA1.2.2047783768.1702564239',
'HTTP_HOST' => '####',
'HTTP_UPGRADE_INSECURE_REQUESTS' => '1',
'HTTP_USER_AGENT' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
'MOD_PERL' => 'mod_perl/2.0.10',
'MOD_PERL_API_VERSION' => '2',
'PATH' => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin',
'PATH_INFO' => '/Webservice/api/Ticket/82124882',
'PATH_TRANSLATED' => '/var/www/html/Webservice/api/Ticket/82124882',
'QUERY_STRING' => '',
'REMOTE_ADDR' => '192.168.8.132',
'REMOTE_PORT' => '58593',
'REQUEST_METHOD' => 'GET',
'REQUEST_SCHEME' => 'http',
'REQUEST_URI' => '/otrs/nph-genericinterface.pl/Webservice/api/Ticket/82124882',
'SCRIPT_FILENAME' => '/opt/otrs/bin/cgi-bin/nph-genericinterface.pl',
'SCRIPT_NAME' => '/otrs/nph-genericinterface.pl',
'SERVER_ADDR' => '####',
'SERVER_ADMIN' => 'webmaster@localhost',
'SERVER_NAME' => '####',
'SERVER_PORT' => '80',
'SERVER_PROTOCOL' => 'HTTP/1.1',
'SERVER_SIGNATURE' => '<address>Apache/2.4.29 (Ubuntu) Server at helpdesk.kraemmel.de Port 80</address>
',
'SERVER_SOFTWARE' => 'Apache/2.4.29 (Ubuntu)'
};
Mögliche Ursachen:
Ich vermute, dass das Problem mit der Basic Auth Authentifizierungsmethode zusammenhängt, aber ich finde keine Informationen darüber, wie diese in OTRS zu aktivieren oder zu überprüfen ist. Die verfügbaren Anleitungen stimmen nicht mit meiner Web-GUI überein.
Könnte jemand Licht ins Dunkel bringen oder hat jemand ähnliche Erfahrungen gemacht? Jeder Hinweis wäre sehr hilfreich.
Vielen Dank im Voraus!
Problem mit HTTP GET-Anfragen in OTRS über PowerShell
Re: Problem mit HTTP GET-Anfragen in OTRS über PowerShell
6.0.28? Wirklich?
Das Generic Interface stellt keine Http Basic Auth Authentifizierung zur Verfügung, sondern authentifiziert selber. Du musst dementsprechend Benutzernamen und Passwort als GET Parameter angeben. Oder vorher eine Session erzeugen und dann die SessionID übergeben.
Das Generic Interface stellt keine Http Basic Auth Authentifizierung zur Verfügung, sondern authentifiziert selber. Du musst dementsprechend Benutzernamen und Passwort als GET Parameter angeben. Oder vorher eine Session erzeugen und dann die SessionID übergeben.
"Production": OTRS™ 8, OTRS™ 7, STORM powered by OTRS
"Testing": ((OTRS Community Edition)) and git Master
Never change Defaults.pm! :: Blog
Professional Services:: http://www.otrs.com :: enjoy@otrs.com
"Testing": ((OTRS Community Edition)) and git Master
Never change Defaults.pm! :: Blog
Professional Services:: http://www.otrs.com :: enjoy@otrs.com
Re: Problem mit HTTP GET-Anfragen in OTRS über PowerShell
Hallo,
vielen Dank für deine Rückmeldung. Mit den Informationen, die du mir gegeben hast, konnte ich bereits gute Fortschritte machen.
Die aktuelle URL lautet:
`http://helpdesk.firma.de/otrs/nph-gener ... Articles=1`
Jetzt möchte ich meine Anfrage erweitern und mir eine Übersicht aller Tickets aus einer bestimmten Queue anzeigen lassen.
Könntest du mir bitte sagen, wie die URL dann modifiziert werden muss?
Danke im Voraus für deine Hilfe.
Beste Grüße,
vielen Dank für deine Rückmeldung. Mit den Informationen, die du mir gegeben hast, konnte ich bereits gute Fortschritte machen.
Die aktuelle URL lautet:
`http://helpdesk.firma.de/otrs/nph-gener ... Articles=1`
Jetzt möchte ich meine Anfrage erweitern und mir eine Übersicht aller Tickets aus einer bestimmten Queue anzeigen lassen.
Könntest du mir bitte sagen, wie die URL dann modifiziert werden muss?
Danke im Voraus für deine Hilfe.
Beste Grüße,
OTRS 6.0.28
-
- Administrator
- Posts: 3981
- Joined: 18 Dec 2007, 12:23
- Znuny Version: Znuny and Znuny LTS
- Real Name: Roy Kaldung
- Company: Znuny
- Contact:
Re: Problem mit HTTP GET-Anfragen in OTRS über PowerShell
Hallo,Ting wrote: ↑24 Jan 2024, 15:49 Die aktuelle URL lautet:
`http://helpdesk.firma.de/otrs/nph-gener ... Articles=1`
Dir ist schon klar, das die Parameter im Webserverlog gespeichert? Also auch das Passwort.
- Roy
Znuny and Znuny LTS running on CentOS / RHEL / Debian / SLES / MySQL / PostgreSQL / Oracle / OpenLDAP / Active Directory / SSO
Use a test system - always.
Do you need professional services? Check out https://www.znuny.com/
Do you want to contribute or want to know where it goes ?
Use a test system - always.
Do you need professional services? Check out https://www.znuny.com/
Do you want to contribute or want to know where it goes ?
Re: Problem mit HTTP GET-Anfragen in OTRS über PowerShell
Hallo, danke für die Information.
Wir sind uns dessen bewusst. Derzeit wird alles über ein Testsystem abgewickelt, welches keine Daten enthält und nur in begrenztem Umfang zugänglich ist.
Unsere aktuelle Priorität liegt darauf, das Format zu klären, in dem wir Daten erhalten können.
Wir sind uns dessen bewusst. Derzeit wird alles über ein Testsystem abgewickelt, welches keine Daten enthält und nur in begrenztem Umfang zugänglich ist.
Unsere aktuelle Priorität liegt darauf, das Format zu klären, in dem wir Daten erhalten können.
OTRS 6.0.28
-
- Administrator
- Posts: 3981
- Joined: 18 Dec 2007, 12:23
- Znuny Version: Znuny and Znuny LTS
- Real Name: Roy Kaldung
- Company: Znuny
- Contact:
Re: Problem mit HTTP GET-Anfragen in OTRS über PowerShell
Hi,
ich hab hier mal ein Beispiel wie wir es nutzen, ggf. Methode (ich verweigere ich dem GET) und URL einfach anpassen:
Eine Beispielresponse habe ich mal beigefügt.
- Roy
ich hab hier mal ein Beispiel wie wir es nutzen, ggf. Methode (ich verweigere ich dem GET) und URL einfach anpassen:
Code: Select all
$UserLogin = "xxx"
$Password = "xxx"
$TicketId = 123456
$uri = "https://xx.yy.zz.com/otrs/nph-genericinterface.pl/Webservice/REST"
$headers = @{}
$headers.Add("Accept", "application/json")
$headers.Add("Content-Type", "application/json")
$Payload = @{
UserLogin = $UserLogin
Password = $Password
AllArticles = 1
DynamicFields = 0
}
$json = $Payload | ConvertTo-Json
$response = Invoke-RestMethod -Method Post -Headers $Headers -Uri "$uri/Ticket/$TicketID" -Body $json
if ($response.Error) {
$code = $response.Error.ErrorCode
$message = $response.Error.ErrorMessage
Write-Host "Request failed (${code}: $message)"
}
- Roy
You do not have the required permissions to view the files attached to this post.
Znuny and Znuny LTS running on CentOS / RHEL / Debian / SLES / MySQL / PostgreSQL / Oracle / OpenLDAP / Active Directory / SSO
Use a test system - always.
Do you need professional services? Check out https://www.znuny.com/
Do you want to contribute or want to know where it goes ?
Use a test system - always.
Do you need professional services? Check out https://www.znuny.com/
Do you want to contribute or want to know where it goes ?