Hi ich bin neu hier, ich wollte euch mal fragen ob ich mit php an einen Teamspeakserver eine Nachricht senden kann??
PHP: Nachricht an Teamspeak Server schicken
Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen
-
-
ja, allerdings würde ich dir nicht empfehlen, das selbst über Sockets zu machen.
Nimm einfach die TeamSpeak 3 API.
Beispiel:
Quellcode
- // connect to server, login and get TeamSpeak3_Node_Host object by URI
- $ts3_ServerInstance = TeamSpeak3::factory("serverquery://".$user.":".$pass."@".$host.":".$port."/#no_query_clients");
- // select first server
- $selected_sid = array_pop($ts3_ServerInstance->serverList());
- // get TeamSpeak3_Node_Server object by ID
- $ts3_VirtualServer = $ts3_ServerInstance->serverGetById($selected_sid);
- // send message
- $ts3_VirtualServer->message("Hello World!");
-
Hallo, ich habe versucht deinen Code umzuwandeln, leider scheitere ich an meinen Kentnissen.
Wie kann ich an einen TS-User eine Nachricht schicken ?
Danke und grüße
Bernhard -
Hi,
hast du die Dokumentation gelesen? docs.planetteamspeak.com/ts3/php/framework/index.html
Beispiel 6 passt ungefähr zu dem was du willst
Send a Text Message to outdated Clients
Quellcode
- // connect to local server, authenticate and quickly spawn an object for the virtual server on port 9987
- $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987");
- // connect to default update server
- $ts3_UpdateServer = TeamSpeak3::factory("update");
- // walk through list of clients on virtual server
- foreach($ts3_VirtualServer->clientList() as $ts3_Client)
- {
- // skip query clients
- if($ts3_Client["client_type"]) continue;
- // send test message if client build is outdated
- if($ts3_Client->getRev() < $ts3_UpdateServer->getClientRev())
- {
- $ts3_Client->message("[COLOR=red]your client is [B]outdated[/B]... update to [U]" . $ts3_UpdateServer->getClientVersion() . "[/U] now![/COLOR]");
- }
- }
Statt in Zeile 14 auf die Clientrevision zu prüfen, könntest du auf den Usernamen prüfen.
Vermutlich gibts auch eine einfachere Variante um eine Instanz von TeamSpeak3_Node_Client zu erzeugen.
Ich nutze die API nicht, bin mir daher nicht sicher. -
Hab es nun geschaft den Code umzuschreiben um MSG zu versenden :
Quellcode
- <?php
- try
- {
- /* connect to server, login and get TeamSpeak3_Node_Host object by URI */
- $ts3_VirtualServer = TeamSpeak3::factory("serverquery://" . $cfg["user"] . ":" . $cfg["pass"] . "@" . $cfg["host"] . ":" . $cfg["query"] . "/?server_port=9987");
- foreach($ts3_VirtualServer->clientList() as $ts3_Client)
- {
- // skip query clients
- if($ts3_Client["client_type"]) continue;
- // send test message if client build is outdated
- if($ts3_Client["client_nickname"] == $client_name)
- {
- $ts3_Client->message($msg_to_client);
- var_dump($ts3_Client);
- }
- }
- }
- catch(Exception $e)
- {
- /* catch exceptions and display error message if anything went wrong */
- echo "<span class='error'><b>Error " . $e->getCode() . ":</b> " . $e->getMessage() . "</span>\n";
- }
<14:20:46> "serveradmin from 127.0.0.1:4572": Test von HP UserXYZ
Da komme ich einfach nicht weiter ...
Gruß BErnhard -
Bekomme den API Code gerade nicht runtergelasen, aber such mal im Code nach "serveradmin" - vielleicht findest du damit den Context heraus und kannst es überschreiben.
-
Den finde ich dort nicht, hab schon danach gesucht.
Ich glaube das wird vom TS Server ausgelesen, ich denke das Serveradmin der Benutzer ist aus der Framework Config und die Server IP auch ausgelesen wird.
Ich denke das ich diese Variablen vor der MSG neue Inhalte zuweisen muss, nur finde ich danke meiner beschränkten Kentnisse diese nicht ...
Gruß Bernhard -
Sorry für das schlechteDeutsch vom letzten Post
-
Bei TS2 war es so das man für das senden einer Nachricht den Request nochmal geändert hat und somit der Username verschwandt. Vllt. gibt es dafür wieder eine Ähnliche Variante.Beste Grüße,
M4rc3L-XCN
-
Teilen
- Facebook 0
- Twitter 0
- Google Plus 0
- Reddit 0
-
Benutzer online 2
2 Besucher