PHP: Nachricht an Teamspeak Server schicken

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • ja, allerdings würde ich dir nicht empfehlen, das selbst über Sockets zu machen.
    Nimm einfach die TeamSpeak 3 API.

    Beispiel:

    Source Code

    1. // connect to server, login and get TeamSpeak3_Node_Host object by URI
    2. $ts3_ServerInstance = TeamSpeak3::factory("serverquery://".$user.":".$pass."@".$host.":".$port."/#no_query_clients");
    3. // select first server
    4. $selected_sid = array_pop($ts3_ServerInstance->serverList());
    5. // get TeamSpeak3_Node_Server object by ID
    6. $ts3_VirtualServer = $ts3_ServerInstance->serverGetById($selected_sid);
    7. // send message
    8. $ts3_VirtualServer->message("Hello World!");
    Display All
  • 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

    Source Code

    1. // connect to local server, authenticate and quickly spawn an object for the virtual server on port 9987
    2. $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987");
    3. // connect to default update server
    4. $ts3_UpdateServer = TeamSpeak3::factory("update");
    5. // walk through list of clients on virtual server
    6. foreach($ts3_VirtualServer->clientList() as $ts3_Client)
    7. {
    8. // skip query clients
    9. if($ts3_Client["client_type"]) continue;
    10. // send test message if client build is outdated
    11. if($ts3_Client->getRev() < $ts3_UpdateServer->getClientRev())
    12. {
    13. $ts3_Client->message("[COLOR=red]your client is [B]outdated[/B]... update to [U]" . $ts3_UpdateServer->getClientVersion() . "[/U] now![/COLOR]");
    14. }
    15. }
    Display All


    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 :

    Source Code

    1. <?php
    2. try
    3. {
    4. /* connect to server, login and get TeamSpeak3_Node_Host object by URI */
    5. $ts3_VirtualServer = TeamSpeak3::factory("serverquery://" . $cfg["user"] . ":" . $cfg["pass"] . "@" . $cfg["host"] . ":" . $cfg["query"] . "/?server_port=9987");
    6. foreach($ts3_VirtualServer->clientList() as $ts3_Client)
    7. {
    8. // skip query clients
    9. if($ts3_Client["client_type"]) continue;
    10. // send test message if client build is outdated
    11. if($ts3_Client["client_nickname"] == $client_name)
    12. {
    13. $ts3_Client->message($msg_to_client);
    14. var_dump($ts3_Client);
    15. }
    16. }
    17. }
    18. catch(Exception $e)
    19. {
    20. /* catch exceptions and display error message if anything went wrong */
    21. echo "<span class='error'><b>Error " . $e->getCode() . ":</b> " . $e->getMessage() . "</span>\n";
    22. }
    Display All
    Im TS erscheint im MSG Tab
    <14:20:46> "serveradmin from 127.0.0.1:4572": Test von HP UserXYZ
    Wie kann ich den "Absendername" ändern ? das z.B. UserXYZ from HP: MSG kommt ?
    Da komme ich einfach nicht weiter ...

    Gruß BErnhard
  • 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