Letztens bin ich beim Durchstöbern des Internets auf etwas gestoßen, das vielleicht den ein oder anderen hier interessieren könnte.
Es handelt sich hierbei um eine Alternative zur Skype4Com-Library. Dies ist deswegen relevant, da der Support für diese Library, soweit ich informiert bin, nicht mehr vorhanden ist.
Ich habe mich deswegen aus Langeweile, und weil ich es außerdem interessant finde, dass es Personen gibt, die für simpelste Anwendungen, die auf diesem Prinzip basieren, Geld verlangen, entschieden dieses Tutorial zu verfassen.
Welche Vorteile hat diese Alternative?
Mir persönlich gefällt sie ziemlich gut, da sie im Vergleich zur Skye4ComLib keine laufende Skype-Instanz benötigt.
Hierbei müssen zwar die Kontaktdaten im Sourcecode angegeben werden, dennoch bietet dies immense Vorteile.
Des Weiteren sind Vorgänge wie, einloggen, Kontakte annehmen, Nachrichten verfassen, auslesen oder editieren etc. ein Kinderspiel.
Der Größte Vorteil jedoch wird vermutlich sein, dass diese Alternative noch im Jahr 2016 funktioniert.
Was benötigen Sie?
Für dieses Tutorial benötigen Sie zwei externe Komponenten. Diese wären einerseits die Alternative Skype4Sharp sowie das JSON Framework für .NET Newtonsoft.Json.
Beide Komponenten finden Sie im Dateianhang dieses Beitrags (hier bei ist jedoch zu beachten, dass die .dll's nicht auf dem aktuellsten Stand sein können), oder auf folgenden Websiten:
github.com/lin-e/Skype4Sharp
newtonsoft.com/json
Ebenfalls wäre Grundwissen beziehungsweise Verständnis vorteilhaft.
Los geht's!
Erster Schritt ist, logischweise, das Setzen der Verweise sowie der Imports-Anweisungen. Diesbezüglich hoffe ich, dass ich darauf nicht weiter Eingehen muss.
Damit Sie dennoch auf dem selben Stand wie ich bin:
Als nächsten müssen Sie ein neues
An dieser Stelle wird ebenfalls ihr Passwort im Klartext zu sehen sein, falls Sie das Ganze nicht per Usereingabe regeln.
Anschließend wird ein Login durchgeführt mit
Natürlich hilft Ihnen das vorerste wenig. Als nächster Schritt müssen die Evente verknüpft sowie der Poll gestartet werden. Doch davor ein kleines Beispiel bezüglich des Logins.
Dieser Code dient nur als Beispiel und sollte eigentlich selbsterklärend sein.
Login
Nun, dadurch, dass der Login komplett ist, fügen wir die Handler hinzu. Logischerweise muss hierbei zuerst die zu verknüpfende Methode generiert werden.
Anschließend kann sofort der Poll mit Hilfe von
Grundsätzlich haben Sie schon alles wesentlich erledigt. Kommen wir nun zum Auslesen von empfangenen Nachrichten.
Behandeln von Nachrichten
Dadruch, dass unser Poll nun läuft sowie unsere Handler verknüpft sind können wir mit dem auslesen von Chatnachrichten beginnen.
Im vorherigen Abschnitt haben wir ja bereits eine Methode für den Handler erstellt. In dieser arbeiten wir nun weiter.
Diese Methode liefert und direkt die Nachricht als
Anschließend trennen wir den cmdTrigger von möglichen Parametern:
An dieser Stelle eine kleine Einführung in das
Es beinhaltet so gut wie alle relevanten Informationen, wie zum Beispiel Informationen über den Chat selbst, den Sender und logischerweise
die Nachricht selbst. Wenn Sie nun eine Nachricht schreiben wollen, verändern Sie entweder die
oder verwenden
Wenn wir nun also weiter fortfahren, kommen wir zu dem Punkt an dem wir unsere erste Nachricht an den Sender zurückgeben:
Nun, nach diesem Status-Update, parsen wir das Kommando. Ich erledige dies hier auf die wahrscheinlich einfachste (dennoch nicht unbedingt beste) Methode:
Wie man sieht, wird eine einfache
Wichtig ist, dass ich hier anstatt dem senden einer neuen Nachricht wie
Natürlich müssen Sie dies nicht so machen, es hat jedoch einen etwas schöneren Effekt wenn nicht immer die Nachricht "Processing your command..." in jeder Textnachricht vorhanden ist.
Ebenfalls sehen Sie, dass in der zurückzugebenden Nachricht (bei Ping) der User, beziehungsweise Sender, selbst direkt angesprochen wird. Wie oben schon erwähnt finden sich Informationen über diesen in dem
Gründsätzlich ist dieses Tutorial, wenn es nach dem Titel geht, an dieser Stelle schon komplett.
Dennoch finden Sie in den folgenden Abschnitten noch weitere hiflreiche Informationen bezüglich der Skype4Sharp-Library.
Abb1: Eine Beispielanwendung welche auf diesem Code aufbaut.
(Man beachte meine Amazon kaufvorschläge, man merkt dass ich Probleme mit meiner Tastatur hatte...)
Antworten auf div. Ereignisse
Ich habe bereits weiter oben erwähnt, dass Sie auch auf Anrufe, Freundschaftsanfragen etc. reagieren können.
Mit diesen Ereignissen beschäftigen wir uns hier in diesem Abschnitt des Tutorials.
Freundschaftsanfragen sind relativ simpel. Zuerst sollten Sie einen Handler hinzufügen, wie schon zuvor für normale Nachrichten.
Anschließend können Sie einfach auf eingehende Anfragen antworten mit
Natürlich lassen sich hier auch diverse Abfrage durchlaufen, damit zum Beispiel nicht jeder Benutzer angenommen wird. Sie können in diesem Fall einfach erneut die
Wenn Sie nun mit Hilfe der Library einen Nutzer hinzufügen wollen, können Sie dies zum Beispiel über
Entfernen ist folglich ähnlich einfach via
Chatinteraktion ist mit der Skype4Sharplib ähnlich einfach. Definieren Sie einfach zuerst ein neues
Anschließend können Sie einfach seine Eigenschaften verändern, User hinzufügen oder entfernen.
So können Sie zum Beispiel das Thema des Chats mit der
Entfernen funktioniert über
An dieser Stelle möchte ich noch weitere Evente der Library auflisten (zu finden auch auf GitHub):
ChatMembersChanged
ContactReceived
ContactRequestReceived
MessageEdited
MessageReceived
TopicChange
CallStarted
UserRoleChanged
GroupPictureChanged
FileReceived
Vom Prinzip her funktionieren alle ähnlich. Es sollte also hierbei zu keinen wirklichen Komplikationen kommen.
Natürlich lässt sich das Ganze noch massiv erweitern. Doch an diese Stelle denke ich sollte alles für dieses Tutorial abgedeckt sein.
Somit komme ich zum Abschluss.
Das war's!
An dieser Stelle ist das Tutorial zu Ende. Ich hoffe ich konnte Ihnen weiterhelfen.
Sie finden ebenfalls die zwei verwendete Libraries im Anhang, jedoch beachten Sie, wie bereits oben erwähnt,
dass diese höchstwahrscheinlich nicht up-2-date sind. Ich empfehle Ihnen also diese manuell von den Herstellerseiten zu downloaden.
Ein Beispielprojekt wird höchstwahrscheinlich in naher Zukunft folgen. Dieses wird vermutlich im Source-Code-Austausch veröffentlicht werden.
Kleiner Vorgeschmack
Ich möchte mich ebenfalls bei c0mmodity, welcher nicht nur der Verfasser dieser Library ist, sondern natürlich auch das englische Tutorial bereitgestellt hat.
An sich ist dies zwar nicht besonders relevant, ich wollte es dennoch an dieser Stelle erwähnen.
Falls Ihnen dieses Tutorial gefallen hat können Sie sich gerne noch Weitere von mir durchlesen.
Sie finden eine Übersicht auf meinem Profil hier: Gather
Mit freundlichen Grüßen,
Martin Pfeiffer (Gather)
Es handelt sich hierbei um eine Alternative zur Skype4Com-Library. Dies ist deswegen relevant, da der Support für diese Library, soweit ich informiert bin, nicht mehr vorhanden ist.
Ich habe mich deswegen aus Langeweile, und weil ich es außerdem interessant finde, dass es Personen gibt, die für simpelste Anwendungen, die auf diesem Prinzip basieren, Geld verlangen, entschieden dieses Tutorial zu verfassen.
Welche Vorteile hat diese Alternative?
Mir persönlich gefällt sie ziemlich gut, da sie im Vergleich zur Skye4ComLib keine laufende Skype-Instanz benötigt.
Hierbei müssen zwar die Kontaktdaten im Sourcecode angegeben werden, dennoch bietet dies immense Vorteile.
Des Weiteren sind Vorgänge wie, einloggen, Kontakte annehmen, Nachrichten verfassen, auslesen oder editieren etc. ein Kinderspiel.
Der Größte Vorteil jedoch wird vermutlich sein, dass diese Alternative noch im Jahr 2016 funktioniert.
Was benötigen Sie?
Für dieses Tutorial benötigen Sie zwei externe Komponenten. Diese wären einerseits die Alternative Skype4Sharp sowie das JSON Framework für .NET Newtonsoft.Json.
Beide Komponenten finden Sie im Dateianhang dieses Beitrags (hier bei ist jedoch zu beachten, dass die .dll's nicht auf dem aktuellsten Stand sein können), oder auf folgenden Websiten:
github.com/lin-e/Skype4Sharp
newtonsoft.com/json
Ebenfalls wäre Grundwissen beziehungsweise Verständnis vorteilhaft.
Los geht's!
Erster Schritt ist, logischweise, das Setzen der Verweise sowie der Imports-Anweisungen. Diesbezüglich hoffe ich, dass ich darauf nicht weiter Eingehen muss.
Damit Sie dennoch auf dem selben Stand wie ich bin:
Als nächsten müssen Sie ein neues
SkypeCredentials
- sowie ein Skype4Sharp
-Objekt erzeugen.An dieser Stelle wird ebenfalls ihr Passwort im Klartext zu sehen sein, falls Sie das Ganze nicht per Usereingabe regeln.
Anschließend wird ein Login durchgeführt mit
mainskype.Login()
. Das wesentliche ist hiermit schon erledigt. Ein einfacher Login in Skype via der Anwendung.Natürlich hilft Ihnen das vorerste wenig. Als nächster Schritt müssen die Evente verknüpft sowie der Poll gestartet werden. Doch davor ein kleines Beispiel bezüglich des Logins.
Dieser Code dient nur als Beispiel und sollte eigentlich selbsterklärend sein.
VB.NET-Quellcode
- Private Function Login() As Boolean
- Dim wasSuccessful As Boolean = False
- Console.WriteLine("[LOGIN]: Login with your skype account")
- Console.WriteLine("[LOGIN]: Username..")
- Dim user As String = Console.ReadLine
- Console.WriteLine("[LOGIN]: Password..")
- Dim info As ConsoleKeyInfo
- Dim pass As String = String.Empty
- Do
- info = Console.ReadKey(True)
- If info.Key = ConsoleKey.Enter Then
- Console.WriteLine()
- Exit Do
- Else
- pass &= info.KeyChar
- Console.Write("*"c)
- End If
- Loop
- authCreds = New SkypeCredentials(user, pass)
- mainSkype = New Skype4Sharp.Skype4Sharp(authCreds)
- Console.WriteLine("[DEBUG]: Logging in with {0}", authCreds.Username)
- If mainSkype.Login() Then
- wasSuccessful = True
- Console.WriteLine("[DEBUG]: Login complete")
- End If
- Return wasSuccessful
- End Function
Nun, dadurch, dass der Login komplett ist, fügen wir die Handler hinzu. Logischerweise muss hierbei zuerst die zu verknüpfende Methode generiert werden.
AddHandler mainSkype.messageReceived, AddressOf MainSkype_messageReceived
Anschließend kann sofort der Poll mit Hilfe von
mainSkype.StartPoll()
gestartet werden.Grundsätzlich haben Sie schon alles wesentlich erledigt. Kommen wir nun zum Auslesen von empfangenen Nachrichten.
Behandeln von Nachrichten
Dadruch, dass unser Poll nun läuft sowie unsere Handler verknüpft sind können wir mit dem auslesen von Chatnachrichten beginnen.
Im vorherigen Abschnitt haben wir ja bereits eine Methode für den Handler erstellt. In dieser arbeiten wir nun weiter.
Diese Methode liefert und direkt die Nachricht als
ChatMessage
-Objekt. Folglich können Sie einfach abfragen ob es sich um ein Kommando handelt:If pMessage.Body.StartsWith(cmdTrigger) Then
. Natürlich müssen Sie zuerst einen cmdTrigger
festlegen. In meinem Fall ist dieser: "!"
.Anschließend trennen wir den cmdTrigger von möglichen Parametern:
Dim cmdArgs As String() = pMessage.Body.Split(CChar(" "))
.An dieser Stelle eine kleine Einführung in das
ChatMessage
-Objekt selber:Es beinhaltet so gut wie alle relevanten Informationen, wie zum Beispiel Informationen über den Chat selbst, den Sender und logischerweise
die Nachricht selbst. Wenn Sie nun eine Nachricht schreiben wollen, verändern Sie entweder die
Body
-Eigenschaft der Nachricht (um eine bereits gesendete zu editieren),oder verwenden
pMessage.Chat.SendMessage("text")
. Wenn wir nun also weiter fortfahren, kommen wir zu dem Punkt an dem wir unsere erste Nachricht an den Sender zurückgeben:
Dim rMessage As ChatMessage = pMessage.Chat.SendMessage("Processing your command...")
Nun, nach diesem Status-Update, parsen wir das Kommando. Ich erledige dies hier auf die wahrscheinlich einfachste (dennoch nicht unbedingt beste) Methode:
VB.NET-Quellcode
- Select Case (cmdArgs(0).Remove(0, cmdTrigger.Length).ToLower())
- Case "ping"
- rMessage.Body = String.Format("Ping @{0}: Pong", pMessage.Sender.Username)
- Case "about"
- rMessage.Body = "About this application:" & Environment.NewLine _
- & " Tutorial: Gather (vb-paradise):" & Environment.NewLine _
- & " https://www.vb-paradise.de/index.php/User/12105-Gather/" & Environment.NewLine _
- & " API-Creator: Commodity" & Environment.NewLine
- Case Else
- rMessage.Body = "This command does not exist. Please type in " & cmdTrigger & "help for a list of all available commands."
- End Select
Wie man sieht, wird eine einfache
Select
-Abfrage durchlaufen, nach der anschließend bestimmte Aktionen, je nach Kommando, ausgeführt werden.Wichtig ist, dass ich hier anstatt dem senden einer neuen Nachricht wie
Chat.SendMessage
lediglich die Body-Eigenschaft der Nachricht editiere.Natürlich müssen Sie dies nicht so machen, es hat jedoch einen etwas schöneren Effekt wenn nicht immer die Nachricht "Processing your command..." in jeder Textnachricht vorhanden ist.
Ebenfalls sehen Sie, dass in der zurückzugebenden Nachricht (bei Ping) der User, beziehungsweise Sender, selbst direkt angesprochen wird. Wie oben schon erwähnt finden sich Informationen über diesen in dem
Sender
-Objekt.Gründsätzlich ist dieses Tutorial, wenn es nach dem Titel geht, an dieser Stelle schon komplett.
Dennoch finden Sie in den folgenden Abschnitten noch weitere hiflreiche Informationen bezüglich der Skype4Sharp-Library.
Abb1: Eine Beispielanwendung welche auf diesem Code aufbaut.
(Man beachte meine Amazon kaufvorschläge, man merkt dass ich Probleme mit meiner Tastatur hatte...)
Antworten auf div. Ereignisse
Ich habe bereits weiter oben erwähnt, dass Sie auch auf Anrufe, Freundschaftsanfragen etc. reagieren können.
Mit diesen Ereignissen beschäftigen wir uns hier in diesem Abschnitt des Tutorials.
Freundschaftsanfragen sind relativ simpel. Zuerst sollten Sie einen Handler hinzufügen, wie schon zuvor für normale Nachrichten.
Anschließend können Sie einfach auf eingehende Anfragen antworten mit
.Accept()
bzw. .Decline()
.VB.NET-Quellcode
Natürlich lassen sich hier auch diverse Abfrage durchlaufen, damit zum Beispiel nicht jeder Benutzer angenommen wird. Sie können in diesem Fall einfach erneut die
Body
-Eigenschaft abfragen.Wenn Sie nun mit Hilfe der Library einen Nutzer hinzufügen wollen, können Sie dies zum Beispiel über
mainSkype.AddUser("username", "text")
. Entfernen ist folglich ähnlich einfach via
mainSkype.RemoveUser("username")
.Chatinteraktion ist mit der Skype4Sharplib ähnlich einfach. Definieren Sie einfach zuerst ein neues
Chat
-Objekt.Anschließend können Sie einfach seine Eigenschaften verändern, User hinzufügen oder entfernen.
So können Sie zum Beispiel das Thema des Chats mit der
Topic
-Eigenschaft setzen. User werden einfach über Add()
hinzugefügt, und deren Rechte können nun mit SetAdmin()
erhöht werden.Entfernen funktioniert über
Kick()
sowie die Gruppe mit Leave()
verlassen.An dieser Stelle möchte ich noch weitere Evente der Library auflisten (zu finden auch auf GitHub):
ChatMembersChanged
ContactReceived
ContactRequestReceived
MessageEdited
MessageReceived
TopicChange
CallStarted
UserRoleChanged
GroupPictureChanged
FileReceived
Vom Prinzip her funktionieren alle ähnlich. Es sollte also hierbei zu keinen wirklichen Komplikationen kommen.
Natürlich lässt sich das Ganze noch massiv erweitern. Doch an diese Stelle denke ich sollte alles für dieses Tutorial abgedeckt sein.
Somit komme ich zum Abschluss.
Das war's!
An dieser Stelle ist das Tutorial zu Ende. Ich hoffe ich konnte Ihnen weiterhelfen.
Sie finden ebenfalls die zwei verwendete Libraries im Anhang, jedoch beachten Sie, wie bereits oben erwähnt,
dass diese höchstwahrscheinlich nicht up-2-date sind. Ich empfehle Ihnen also diese manuell von den Herstellerseiten zu downloaden.
Ein Beispielprojekt wird höchstwahrscheinlich in naher Zukunft folgen. Dieses wird vermutlich im Source-Code-Austausch veröffentlicht werden.
Kleiner Vorgeschmack
Ich möchte mich ebenfalls bei c0mmodity, welcher nicht nur der Verfasser dieser Library ist, sondern natürlich auch das englische Tutorial bereitgestellt hat.
An sich ist dies zwar nicht besonders relevant, ich wollte es dennoch an dieser Stelle erwähnen.
Falls Ihnen dieses Tutorial gefallen hat können Sie sich gerne noch Weitere von mir durchlesen.
Sie finden eine Übersicht auf meinem Profil hier: Gather
Mit freundlichen Grüßen,
Martin Pfeiffer (Gather)
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Gather“ ()