You are not logged in.

  • Login

1

Friday, July 23rd 2010, 12:41pm

PHP: Nachricht an Teamspeak Server schicken

Hi ich bin neu hier, ich wollte euch mal fragen ob ich mit php an einen Teamspeakserver eine Nachricht senden kann??

2

Friday, July 23rd 2010, 8:37pm

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

Beispiel:

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
// 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!");

dasSofa

Unregistered

3

Saturday, March 31st 2012, 4:26pm

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

4

Saturday, March 31st 2012, 5:10pm

Hi,
hast du die Dokumentation gelesen? http://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

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 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.

dasSofa

Unregistered

5

Saturday, April 7th 2012, 2:25pm

Hab es nun geschaft den Code umzuschreiben um MSG zu versenden :

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?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";
}
Im TS erscheint im MSG Tab

Quoted

<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

6

Saturday, April 7th 2012, 5:44pm

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.

dasSofa

Unregistered

7

Saturday, April 7th 2012, 6:56pm

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

8

Saturday, April 7th 2012, 7:03pm

Sorry für das schlechteDeutsch vom letzten Post ;)

9

Tuesday, May 15th 2012, 10:35pm

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.

Similar threads

Social bookmarks