• If you need help or want to discuss things, you now can also join us on our Discord Server!
  • A first preview of the unlimited version of SinusBot can be found in the Upcoming Changes thread. A version for Windows will follow, but we don't have a release date, yet.

DE Bot übers Netzwerk ohne WebInterface ansteuern

Status
Not open for further replies.

fortener

New Member
Wie kann man den Bot ohne WebInterface (nicht netzwerkintern) ansteuern? Brauch ich dazu die API? Wenn ja wie binde ich die ein bzw. wie benutze ich sie? Kann man nicht simple HttpRequests schicken?
 

flyth

is reticulating splines
Staff member
Developer
Contributor
Ja, via API. Ja, simple HTTP-Requests. Z.B. via PHP (hier im Forum gibt's ne Lib dafür) oder cURL oder oder oder. Google mal nach JSON/REST, da wirst du fündig. Die API-Doku selbst findest du hier.
 

fortener

New Member
Für den Login würde ich doch dann an "http://127.0.0.1:8087/api/v1/bot/login" ein JsonObject schicken welches so aussieht: { "username" : "foo" , "password" : "bar" , "botId" : "1234567890" } und als Response müsste ich dann das Objekt deserialisieren und würde ein token und ne botId erhalten. Oder hab ich was falsch verstanden?
 

Xuxe

Containerholic
Staff member
is awesome!
V.I.P.
Contributor
Insider
https://www.sinusbot.com/api/#api-General-login

Ein Post request schickst du mit den Entsprechenden Fields als JSON verpackt. Result ist dann der Token, dieser Token muss dann für alle anderen Requests im Header liegen.

Most calls also require a valid authentication token that can be obtained by the login-call. The token must be presented in the Authorization-header like so:

Authorization: bearer TOKEN
 

fortener

New Member
Edit: Muss ich für General-botinfo (hier) vorher anmelden? Ich bekomme eine Exception reingedrückt: <blockquote>(401) Nicht autorisiert</blockquote>
 

Xuxe

Containerholic
Staff member
is awesome!
V.I.P.
Contributor
Insider
Heyho,

musst mir sagen mit was du Arbeitest PHP, Javascript/AJAX?
Bzw was genau ist überhaupt dein Ziel?
 

fortener

New Member
Ich möchte ein kleines User Interface in C# für unsere Sinusbots schreiben. Der Vorteil ist, dass man eben auch eine Verwaltung von systemweiten Hotkeys einbauen könnte um nicht dauernd ein Spiel minimieren zu müssen.
Deshalb fragte ich ja, ob das simple HttpRequests sind.
 

Xuxe

Containerholic
Staff member
is awesome!
V.I.P.
Contributor
Insider
Ah alles klar das müsste dann:

request.Headers.Add("Authorization: bearer "+token);

sein.

request - dein HttpRequest Object
token - string mit deinem token den du vom login zurück bekommen hast

~
Xuxe
 

fortener

New Member
Am elegantesten wäre doch, wenn man Json.Net von Newtonsoft verwendet. Das hatte ich vor. Dann müsste ich mir doch Klassen/Structures schreiben können, die leichter zu handhaben sind und über Json.Net auch leichter zu serialisieren/deserialisieren. Wenn ich mir so den String der beim Serialisieren bei rauskommt ansehe, ist von der Struktur her auch nichts falsch. Allerdings bekomme ich beim erwarten der Antwort einen Fehler: (403) Unzulässig.
Das könnte daran liegen, dass ich keine gültige BotId mitgegeben habe oder? Wie finde ich diese denn heraus.

Mit der BotId sind doch bestimmt die Instanzen gemeint oder? Also in so nem Format:
e76fd6a6-d2c8-42ff-ba06-077c7e487a19 oder ?
 
Last edited:

Xuxe

Containerholic
Staff member
is awesome!
V.I.P.
Contributor
Insider
Heyho,
ja das müssten die Instanz IDs sein.

du kannst aber auch über /api/v1/botId die default Instanz abfragen (Geht Ohne Login und diese sollte gehen.).

Bin gestern selber bisschen auf den Geschmack gekommen in C# was zu bauen für den Sinusbot zumindest die Basics, Login / Instanzen / Play / Stop und sowas...
Vielleicht kann man ja was zusammen machen^^ Bin nicht so der C# profi xD

~
Xuxe
 

fortener

New Member
Ich überlege mir gerade ein sinnvolles Klassenmodell um diese ganzen Requests/Responses ordentlich zu wrappen. Bin mir nicht ganz schlüssig ob statische Klasse(n) oder nicht.
Im Prinzip würden Statische Klassen ausreichen, da die Requests ja nicht wirklich zusammenhängen. Allerdings könnte man durch Instanzierung nicht statischer Klassen sich den
Vorteil verschaffen, nicht dauernd ein Token mit in die statischen Funktionen werfen zu müssen.

Zu deinem Vorschlag. Das können wir gerne tun. Über welche(n) Dienst(e) möchtest du kommunizieren :p
 

Xuxe

Containerholic
Staff member
is awesome!
V.I.P.
Contributor
Insider
Wir haben hier die Foren PN, TeamSpeak / Skype alles da. :D.
 
Status
Not open for further replies.
Top