Posts mit dem Label Developer werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Developer werden angezeigt. Alle Posts anzeigen

Sonntag, 2. August 2020

Discord-Bots mit der ASP.net-Web-Site hosten

Beim arbeiten am Projekt "Thai-Service.net", einer Web-Applikation im "BtoC"-Umfeld, stehen Kommunikationskanäle ganz oben an. So bin ich auf "Discord" aufmerksam geworden. Eigentlich ein Instand-Messaging-Dienst der ans Spieleumfeld angelegt ist. Mich haben die API-Schnittstellen begeistert.

Man kann da zum Beispiel "Bots" einrichten, die sehr vielfältige Aufgaben des Administrators automatisch erledigen (davon gibt es sehr viele "out of the box") oder, und da wird es interessant, man greift zu einer der beiden "C#"-Libraries und baut seine eigenen Bots. "Discord" hat eine APi, die allerdings nicht so schön ".net"-optimiert ist. Beide Libraries scheinen auch die gleichen Väter zu haben, den sie ähneln sich sehr. Der eine Anbieter nennt sein Produkt "Discord.net", der zweite seines "DSharpPlus". Warum ich mich bei der Auswahl auf zweiteres Produkt festgelegt habe, weiß ich nicht mehr, es muß mit der Dokumentation zusammen gehangen haben.

Da ich mit "Discord" erst seit zwei Tagen zu tun habe, kann ich nicht sehr viel erzählen darüber. Ich habe die Zeit genutzt, einiges auszuprobieren und vor allen Dingen ein Problem zu lösen, daß mir den Einsatz fast unmöglich gemacht hätte. Die Dokumentation beruht ausschließlich auf einer Konsolenanwendung basierend auf dem ASP.net-Framework "Core". Das würde bedeuten, daß ich neben dem Web-Space auch Server-Ressourcen anmieten müßte (so schlagen es auch die Dokumentationen vor). Das wäre es mir nicht wert gewesen.

Daher habe ich mir das ganze noch einmal angesehen und bin zum Schluß gekommen, das in die Web-Site zu integrieren. Die ist, wie wir wissen, dafür jedoch nicht gemacht. Das richtige wäre ein Dienst gewesen, aber auch das scheitert an den Vorgaben fast aller Anbieter von Web-Space 

Als erstes muß der "Bot" zum Leben erweckt werden und zwar 24 x 7, ohne daß die Web-Site beeinflußt wird (das könnte man auch anders lösen, aber mein Anspruch war die Integration)- So bin ich darauf verfallen den "Bot" in einen "generischen Handler" zu packen. Er sollte ja nur angestoßen werden und ab dann die Events des "Bots" aufzunehmen. Ich hatte auch andere Lösungen im Sinn ("Signal R" zum Beispiel), aber das wäre einfach zu aufwändig gewesen, auch wenn es den "saubereren" Ansatz darstellte.

Okay, gehen wir den unsauberen Weg. Als erstes sehen wir uns den "Handler" an, "BotResponse.ashx.cs":

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using DSharpPlus;
using DSharpPlus.Interactivity;
using DSharpPlus.CommandsNext;
using System.Threading.Tasks;

namespace ThaiService.Content
{
    /// <summary>
    /// Here the Discord-Bot is activated and the messages in the channel are intercepted and analyzed.
    /// </summary>
    public class BotResponse : IHttpHandler
    {
        static DiscordClient discord;
        static CommandsNextModule commands;
        static InteractivityModule interactivity;
        Dictionary<string, string> settings = new Models.DiscordBot().ReadSetting();

        public async void ProcessRequest(HttpContext context)
        {
            discord = new DiscordClient(new DiscordConfiguration
            {
                Token = (settings.TryGetValue("BasicBotToken", out string value)) ? value : "",
                TokenType = TokenType.Bot,
                UseInternalLogHandler = true,    // Here we must work on
                LogLevel = LogLevel.Debug
            });

            discord.GuildMemberAdded += async e =>
            {
                // In the future this messages are set in a database.
                await e.Member.SendMessageAsync("Hello, welcome on board!");
            };

            discord.MessageCreated += async e =>
            {
                if (e.Message.Content.ToLower().StartsWith("thai-service"))
                {
                    new Models.DiscordBot().AddMessage(e.Message);
                    await e.Message.RespondAsync("Thank you! The message is send to us...");
                }
            };

            discord.MessageCreated += async e =>
            {
                if (e.Message.Content.ToLower().StartsWith("ping"))
                    await e.Message.RespondAsync("pong!");
            };

            commands = discord.UseCommandsNext(new CommandsNextConfiguration
            {
                StringPrefix = (settings.TryGetValue("BasicBotPrefix", out value)) ? value : ""
            });

            await discord.ConnectAsync();
            await Task.Delay(-1);
        }



        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
    }


Im Source der "BotResponse.ashx.cs" habe ich einen Aufruf gelb gemarkert. Das wäre ein Beispiel dafür wie ein Event aus "Discord" heraus, an eine Funktion weiter geleitet und verarbeitet wird.
Ihr müsst Euch noch eine Classe basteln, die ggf. Commands enthält und Euch auch die Settings, Ins Besonderen das Token Eures Bots zurück gibt. Das ist in beiden Libraries sehr gut dokumentiert.

Der Aufruf in der "Default.aspx.cs" kreiert ein "Warning", da das "await" fehlt, Überseht es einfach einmal... (Wir können keinen "Awaiter" einfügen, da ansonsten unsere Web-Site nicht geladen würde. Da gibt es bessere Lösungen aber ich will ja sehen, das es läuft.)


    public partial class _Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            lblBot.Text = startBot().Result;
        }

        private async Task<string> startBot()
        {
            // Test if the task is alrady started
            if (Session["task"] == null)
            {
                HttpContext context = HttpContext.Current;
                Session["task"] = Task.Run(() => new BotResponse().ProcessRequest(context));
                return "bot started!";
            }
            else
            {
// Hier kann ich ggf. feststellen, ob mein Bot noch läuft...
                return "bot is " + ((Task)Session["task"]).Status;
            }
        }
    }


In "Discord" kann man jetzt "ping" oder "thai-service" aufrufen und löst damit eine Aktion aus:



Der Aufruf "thai-service" am Beginn einer Nachricht führt dazu, daß eine Hinweis in unserem Messaging-System von "Thai-Service.net" geposted wird. Der Response in "Discord" ist ein schlichtes "Danke, die Nachricht wurde an uns gesendet..."




Achtung bitte:
Die Site "Thai-Service.net" ist noch nicht online. Daher könnt Ihr einen Live-Test nur ausprobieren, wenn ich sie an meinem Entwicklungsrechner gestartet habe....

Ihr könnt es gerne probieren, der Einladungslink ist: https://discord.gg/ETUKs8f






Wichtige Links:
"Discord" Web-Site: https://discord.com/new
"Discord" for Developer: https://discord.com/developers/


Dienstag, 5. April 2016

Build 2016: Microsoft Entwicklerkonferenz

© 2016 Microsoft
Die "web & mobile Developer" berichtet in ihrem Newsletter vom 4. April 2016 über die "Build 2016", der wichtigsten Entwicklerkonferenz von Microsoft, über die Highlights. Die Konferenz fand diesjährig in San Francisco statt und die wichtigste Nachricht von Microsoft war laut "web & mobile Developer": "Die Ankündigung beinhaltet ein umfangreiches Anniversary Update von Windows 10 für diesen Sommer, welches allen Windows 10 Kunden kostenlos zur Verfügung stehen wird."



Und weiter heißt es: "Windows 10 hat den schnellsten Start in der Geschichte von Windows hingelegt und läuft mittlerweile auf mehr als 270 Millionen Geräten. Signifikante Neuerungen wie Windows Ink und die Erweiterung bestehender Dienste wie Cortana oder Windows Hello ermöglichen zukünftig eine noch natürlichere Interaktion mit der Windows Plattform."

Zudem dürft es die Entwickler interessiert haben, daß für die "Cortana Intelligence Suite" neue Cloudienste bereitgestellt werden, die es ihnen möglich machen soll, intelligente Dienste und Bots zu entwickeln. "Gleichzeitig machen neue Werkzeuge Windows 10 zur idealen Umgebung für die plattformübergreifende Entwicklung.", so die "web & mobile Developer".







Montag, 28. Dezember 2015

News: Bitkom Research sieht großen Weiterbildungsbedarf

Die "web & mobile Developer" berichtet:

Großer Weiterbildungsbedarf

Die deutsche Wirtschaft sieht großen Bedarf bei der Weiterbildung ihrer Fachkräfte zu Digitalthemen. Mehr als vier von zehn Unternehmen halten es für notwendig, Mitarbeiter in der Datenanalyse zu schulen.


© bitkom
Jedes dritte Unternehmen hält zusätzliche Kenntnisse rund um Social Media und Programmieren (je 35 Prozent) für notwendig. Das sind Ergebnisse einer repräsentativen Bitkom-Umfrage. Jedes vierte Unternehmen sieht großen Bedarf bei der Fortbildung zu Datenschutz und Datensicherheit, 16 Prozent bei allgemeinen PC-Anwenderkenntnissen. »Daten sind der Rohstoff des 21. Jahrhunderts, Big-Data-Analysen werden für Unternehmen aus allen Branchen an Bedeutung gewinnen. Deshalb ist es erfreulich, dass so viele Unternehmen erkannt haben, dass Know-how in diesem Bereich für den künftigen Geschäftserfolg eine große Bedeutung zukommt«, sagt Bitkom-Hauptgeschäftsführer Dr. Bernhard Rohleder. Nur drei Prozent sehen im eigenen Unternehmen keinen Weiterbildungsbedarf zu diesen Themen.


Freitag, 18. Dezember 2015

News: Head Geeks von Solarwinds "Branchentrends"

Die "web & mobile Developer" berichtet:


Branchentrends für das kommende Jahr

Das Jahresende ist die Zeit der Rückblicke, aber auch der Vorausschauen auf das kommende Jahr. Die Head Geeks von Solarwinds wagen einen Blick auf die wichtigsten Trends der IT-Branche.

Das Jahr 2015 neigt sich langsam dem Ende und anstatt zurückzuschauen, lohnt es sich gerade jetzt, einen Blick in die Zukunft zu werfen. Denn im vergangenen Jahr haben ehemalige Highlight-Themen wie die Cloud ihren Wow-Faktor verloren, Advanced Persistent Threats (kurz APTs) sind in aller Munde und das Internet der Dinge ist auf dem Vormarsch. Was sind also die großen Themen für 2016 in einer Branche, die sich im ständigen Wandel befindet?
  1. Gefahr für die Cloud: Das Vertrauen in die Cloud ist stark gewachsen. Kleine und große Unternehmen haben mittlerweile auf Cloud umgestellt, teilweise innerhalb kürzester Zeit. Die Gefahr: oft wurde wenig Geld und Mühe in Sicherheitsprotokolle und Datenverschlüsselung investiert. Es dürfte also eine Frage der Zeit sein, bis es zu Sicherheitsvorfällen kommt. Sollte einer der Cloud-Anbieter Opfer eines derartigen Angriffs werden, würde sich das massiv auf deren Kunden auswirken.
  2. IT auf Kuschelkurs: Die vielen Fusionen im vergangenen Jahr waren der Beginn eines Trends, der sich im nächsten Jahr fortsetzen dürfte: Technologien wie IoT, Cloud Computing und eine umfassende Digitalisierung werden zur Voraussetzung für die Wettbewerbsfähigkeit – und oft sind Zusammenschlüsse der einfachste Weg, diese sicherzustellen. Zu den Anreizen gehören ein leichterer Zugang zu wertvoller IT, erfolgreiches Talentmanagement, Produktverbesserungen, disruptive Entwicklungen und Expansion.
  3. DevOps auf dem Vormarsch: DevOps ist eine Methode der Softwareentwicklung, die vorsieht, dass Entwicklung und IT-Betrieb enger zusammenarbeiten. Ziel ist es, gemeinsam in einer Art Dauerschleife Anwendungen zu entwickeln, zu testen und zu überwachen. Sowohl kleine als auch große Unternehmen werden sich in 2016 immer stärker für DevOps interessieren. Denn die Vorteile liegen auf der Hand: Wettbewerbsvorteile durch schnellere Markteinführung und langfristig sinkende Supportkosten. Im Zuge dessen ist abzusehen, dass auch die Nutzerzahlen von Tools wie Slack™ weiter ansteigen werden, um transparente Teamkommunikation zu ermöglichen.
  4. Die Sicherheit der Dinge: IT-Experten in Unternehmen fällt es schwer, ihre Netzwerke unter Kontrolle zu behalten – so das Ergebnis des jüngsten Gartner-Berichts. Und das ist mehr denn je eine Herausforderung, wenn man die Vielzahl an Endknoten bedenkt, die es durch Trends wie BYOD zu überwachen und zu verwalten gibt. Mittlerweile ist alles auf irgendeine Weise mit dem Internet und sogar mit dem Netzwerk verbunden und damit ein Traum für jeden Hacker: gelangen Daten in die falschen Hände, steht Angreifern der Weg offen. Diese Bedrohungen betreffen aber nicht nur den Arbeitsplatz, sondern auch den privaten und öffentlichen Raum. Gartner zufolge werden „bis Ende 2018 20 Prozent der intelligenten Gebäude Opfer von digitalem Vandalismus“. Ein kleines Ärgernis wenn es nur um manipulierte Beleuchtung oder digitale Schilder geht, ein großes Risiko wenn Autos oder medizinische Geräte betroffen sind. Diese Risiken entstehen durch ein gefährliches Sicherheitsdefizit innerhalb des IoT, so dass menschliche Intervention und Netzwerkverwaltung – insbesondere im Gesundheitssektor – eine deutlich höhere Priorität erhalten müssen.

Freitag, 20. November 2015

Windows 10: Bereit für den Unternehmenseinsatz

Das "web & mobile Developer" Magazin teilte am 13.11.2015 mit:

Gerade ist das November-Update von Windows 10 erschienen und wird an die Nutzer ausgerollt. Damit – so Windows-Chef Myerson – ist Windows 10 auch bereit für den Unternehmenseinsatz.

© Microsoft

Mit der ersten neuen Hauptversion kommen einige Funktionen auf den Rechner, die es nicht mehr in die Erstveröffentlichung-Version geschafft hatten. Windows-Chef Myerson sagt, dass Windows 10 damit »erwachsen« geworden sei und Microsoft es nun für den Business-Einsatz empfehlen könne. Neben Windows 10 für PCs und Tablets soll auch die neue Version für die Xbox One kommen sowie »bald auch für ausgewählte Mobile Phones«.
Zu den Verbesserungen von Windows 10 gehören laut Myerson:
  • Windows 10 soll nun um fast 30 Prozent schneller starten als Windows 7 auf demselben Gerät.
  • Cortana erkennt nun mit dem Stift geschriebene Notizen und hilft beim Ablegen der Notizen, beispielsweise beim anlegen einer Adresse oder einer Erinnerung.
  • Der Browser Microsoft Edge wurde in Sachen Performance und Sicherheit weiter verbessert.
  • Mit Windows Update for Business können Unternehmen besser steuern können, wann und wie Updates ausgerollt werden.
  • Der Windows Store for Business soll dafür sorgen, dass Unternehmen sinnvoll und produktiv mit Apps umgehen können.
Beim Thema Sicherheit führt Microsoft die biometrische Authentifizierung mittels Windows Hello ins Feld, außerdem bringt der Device Guard neue Möglichkeiten, Unternehmens-PCs zuverlässig vor der Ausführung schädlicher beziehungsweise unerwünschter Software zu schützen.

Die neuen Business-Funktionen hat Microsoft bereits zusammen mit großen Unternehmen wie Daimler, Nestle und KPMG unter realen Bedingungen erprobt – so der Windows-Chef. [bl]


Sonntag, 15. November 2015

Kostenloses Display-Dock

Die "Web & Mobile Developer" berichtet:

Wer bis zum 31. Januar 2016 ein Lumia 950 XL kauft, erhält kostenlos ein Microsoft Display Dock im Wert von 109 Euro.


(c) Microsoft. Lumia 950
Über das Display Dock, das per USB-C mit dem Lumia 950 oder Lumia 950 XL verbunden wird, kann das Smartphone an einen externen Monitor angeschlossen werden – und bei Bedarf sogar auch an Tastatur und Maus. Inhalte werden dabei so skaliert, dass eine für den großen Bildschirm optimierte Arbeitsumgebung zur Verfügung steht.

Das Lumia 950 XL wird zu einer unverbindlichen Preisempfehlung von 699 Euro (inkl. Steuern, ohne Vertrag) angeboten. Das Lumia 950 soll als Single-SIM- sowie als Dual-SIM-Variante zu einem Preis von jeweils 599 Euro zu haben sein. Der Verkauf beider Geräte soll ab dem 28. November 2015 starten. 

Wer bis zum 31. Januar 2016 ein Lumia 950 XL kauft, erhält kostenlos ein Microsoft Display Dock im Wert von 109 Euro. Nach der Registrierung über die vorinstallierte App Lumia Offers kann der dort angezeigte Promo-Code anschließend im Microsoft Online Store für ein Display Dock eingelöst werden.

Allgemeine Informationen zum Lumia 950 XL gibt es hier.  [bl]




Gibt es Beispielweise beim: