TeamSpeak-API 1.5.7

Dieses Plugin dient als Schnittstelle zwischen weiteren Plugins und Ihrem TeamSpeak-Server. Dieses Plugin ist vor allem für Entwickler relevant. Es kann allerdings auch als Basis-Plugin für andere Plugins dienen.

Es können verschiedenen Server-Verbindungen eingestellt werden, auf diese dann von anderen Plugins zugegriffen werden können.

Voraussetzungen

  • WoltLab Suite Core 3.0/3.1

Support

Support gibt es in meinem Supportforum oder auf meinem Discord-Server.

Fragen und Antworten

Wie erstelle ich eine neue Verbindung?

Gehe ins ACP -> Konfiguration -> TeamSpeak -> Server -> TeamSpeak-Server hinzufügen.

Wie kann ich die API in meinem Plugin implementieren?

Füge die Abhängigkeit zu diesem Plugin in deiner package.xml ein:


XML: package.xml
<requiredpackage minversion="1.5.0">eu.hanashi.wsc.teamspeak-api</requiredpackage>

Lass deine Nutzer die Serververbindung im ACP mit Hilfe der option.xml auswählen:

XML: option.xml
<option name="my_plugin_teamspeak_identity">
<categoryname>my_category</categoryname>
<optiontype>TeamSpeakConnectionSelect</optiontype>
</option>

Den Namen (im Beispiel my_plugin_teamspeak_identity) und die richtige Kategorie (im Beispiel my_category) musst du natürlich selbst wählen.

Nun erstellst du eine PHP-Klasse im Verzeichnis lib/system/teamspeak welche die Klasse AbstractTeamSpeakHandler erbt:

PHP: MyPluginTeamSpeakHandler.class.php
<?php
namespace wcf\system\teamspeak;
class MyPluginTeamSpeakHandler extends AbstractTeamSpeakHandler {
protected $teamspeakID = MY_PLUGIN_TEAMSPEAK_IDENTITIY;
}

Den Datei- und Klassennamen darfst du natürlich selbst wählen. Vergiss dabei nicht die richtige Konstante anstatt MY_PLUGIN_TEAMSPEAK_IDENTITIY einzusetzen.

Nun kannst du in anderen Klassen auf die TeamSpeak-API zugreifen. Hier ein Beispiel in einer Action-Klasse:

Wie führe ich einen TeamSpeak-Befehl aus?

Der TeamSpeak-Befehl ist immer gleich der Methode. Die Parameter werden als Array an die Parameter übergeben. Hier einige Beispiele:

Images

  • Version 1.5.7

    FIX: Deprecated PHP 7.4 function

  • Version 1.5.6

    Verbesserte Ausgabe bei Fehlern zum Besseren Debugging.

    Mit SSH wurde fälschlicherweise eine ErrorException anstatt einer TeamSpeakException ausgegeben.

  • Version 1.5.4

    • CHANGE; Umstellung auf MEDIUMINT damit höhere Ports verwendet werden können
  • Version 1.5.3

    • FIX: Behebt Fehlermeldung wenn keine Verbindung zum TS-Server aufgebaut werden konnte
  • Version 1.5.2

    • FIX: Download und Upload von Dateien
    • FIX: wenn Datei beim Filetransfer nicht gefunden wurde, wird nun Exception geworfen
  • Version 1.5.0

    • FEATURE: es wird nun libssh2 anstatt phpseclib verwendet, wenn dieses installiert ist
  • Version 1.4.1

    • CHANGE: Datenbank-Datentypen sinnvoll geändert
    • CHANGE: Klasse TeamSpeak umbenannt in TeamSpeakConnectionHandler und verweist nun auf TeamSpeakRawHandler undTeamSpeakSshHandler
    • FEATURE: das Filetransfer Protokoll von TeamSpeak kann nun genutzt werden (siehe: AbstractTeamSpeakHandler::uploadFile() und AbstractTeamSpeakHandler::downloadFile())
    • FEATURE: Methode zum Berechnen der Client Base64 UID hinzugefügt (siehe TeamSpeakUtil::generateClientBase64UID())
    • FEATURE: wenn Debug-Modus vom WSC aktiv ist, werden selbst abgefangene Exceptions geloggt (siehe ACP -> Verwaltung -> Fehler)
    • FEATURE: Berechnung der korrekten Icon-ID hinzugefügt (siehe TeamSpeakUtil::getCorrectIconID())
    • FEATURE: Snapshot-Funktionalität hinzugefügt (siehe AbstractTeamSpeakHandler::createSnapshot() und AbstractTeamSpeakHandler::deploySnapshot())
    • FIX: Filetransfer kann nun auch mit großen Dateien arbeiten
  • Sehr geiles Plugin

    Ich habe nur ein einziges Problem:

    Die User werden zwar synchronisiert, jedoch wenn sie auf dem Teamspeak reconnecten dann sind die nicht mehr synchronisiert.

    • Hallo, die API synchronisiert nichts. Sie ist lediglich eine Schnittstelle für Entwickler.

  • Kleine Idee für Entwickler:
    Ein TS Bot der, wenn etwas in eine bestimmtes Forum gepostet wurde, daraufhin Member eine bestimmte TS Gruppe via Chat anschreibt, mit folgendem Inhalt:

    Titel,

    Anfangsteil des Inhalts und

    Link zum Posting.


    Quasi ein Notify Funktion für TS3.

    • Sowas ähnliches ist geplant, insofern TS5 global Chats bekommt. Dann wollte ich das wie beim Discord-Sync machen, dass neue Forenbeiträge in einen globalen Chat gepostet werden. Aber erstmal abwarten :)

      Like 1