Skip to content Skip to footer

Erstellen eines Bots mit dem Bot Framework SDK und Azure Bot Service

Das Microsoft Bot Framework ist eine umfassende Entwicklungsplattform, die eine leistungsstarke Sammlung von Bibliotheken, Tools und Diensten für die Erstellung intelligenter Bots bereitstellt. Als modulares und erweiterbares SDK, bekannt als das Bot Framework SDK, ermöglicht es Entwicklern, Conversational AI zu implementieren, die natürliche Sprache versteht, Fragen beantwortet und komplexe Dialoge führt. Das Framework besteht aus zwei Kernkomponenten: dem Bot Builder SDK für die eigentliche Entwicklung und dem Bot Connector Service für die Kanal-Integration und Nachrichtenverwaltung.

Die Architektur des Bot Frameworks basiert auf einem flexiblen Multi-Channel-Ansatz, der es ermöglicht, Bots nahtlos auf verschiedenen Plattformen wie Microsoft Teams, Slack, Facebook Messenger und weiteren Kanälen bereitzustellen. Durch die Integration mit Azure können diese Bots in der Cloud skaliert und verwaltet werden. Für die Entwicklung werden mehrere moderne Programmiersprachen unterstützt:

SpracheSupport-StatusHaupteinsatzgebiet
C#AktivEnterprise-Entwicklung
JavaScriptAktivWebbasierte Bots
PythonAktivKI/ML-Integration
JavaEingestellt (Nov 2023)Legacy-Systeme

Das Framework integriert sich nahtlos mit Azure KI Services und dem Azure KI Bot Service und bietet:

  • Integrierte Dialogverwaltung für komplexe Konversationsabläufe
  • State Management für kontextbezogene Interaktionen
  • Natural Language Processing durch Language Understanding
  • Adaptive Cards für interaktive Benutzeroberflächen

Die Entwicklungsumgebung unterstützt moderne DevOps-Praktiken und bietet umfangreiche Debugging- und Testmöglichkeiten durch den Bot Framework Emulator. Durch die Integration mit dem Azure Bot Service können Entwickler ihre Bots einfach in Azure bereitstellen und skalieren. Diese Kombination aus leistungsfähigen Entwicklungstools und Cloud-Services macht das Microsoft Bot Framework zu einer idealen Plattform für die Erstellung intelligenter Conversational Agents, die sowohl für kleine Unternehmen als auch für Enterprise-Szenarien geeignet sind.

Voraussetzungen für die Bot-Entwicklung

Die erfolgreiche Entwicklung eines Bots mit dem Microsoft Bot Framework erfordert eine systematisch eingerichtete Entwicklungsumgebung und spezifische technische Voraussetzungen. Als fundamentale Basis wird das .NET 6.0 SDK für die Entwicklung benötigt. Entwickler haben die Wahl zwischen verschiedenen Entwicklungsumgebungen, wobei Visual Studio mit seinen integrierten Bot-Vorlagen die umfassendste Unterstützung bietet.

Technische Grundvoraussetzungen

KomponenteVerwendungszweckPriorität
Node.jsJavaScript-RuntimeErforderlich
Bot Framework SDKEntwicklungs-KitErforderlich
Bot Framework EmulatorLokales TestingErforderlich
Visual Studio / VS CodeIDEEmpfohlen

Entwicklungsumgebung Setup

Die Installation der Bot Framework SDK-Vorlagen erfolgt über den Visual Studio Marketplace. Für JavaScript-basierte Entwicklung sind folgende NPM-Pakete erforderlich:

npm install --save botbuilder
npm install --save restify

Der Bot Framework Emulator ermöglicht das lokale Testen der Bot-Funktionalität ohne Azure-Deployment. Die Entwicklungsumgebung unterstützt verschiedene Programmiersprachen wie C#, JavaScript und Python. Die Bot Framework-Vorlagen bieten eine standardisierte Projektstruktur mit:

  • Vorkonfigurierter Ressourcenbereitstellung
  • Implementiertem HTTP-Endpunkt
  • Integriertem Adapter-Objekt
  • Grundlegendem Bot-Objekt

Für die lokale Entwicklung ist keine Azure-Subscription erforderlich, jedoch wird für produktive Systeme eine Azure Bot Service-Ressource empfohlen. Die Entwicklungsumgebung unterstützt moderne DevOps-Praktiken und ermöglicht eine nahtlose Integration mit Azure KI Services.

Erste Schritte bei der Erstellung eines Bots

Die Bot-Entwicklung mit dem Microsoft Bot Framework beginnt mit der Auswahl der passenden Projektvorlage. Das Framework bietet drei zentrale Vorlagentypen für unterschiedliche Anwendungsfälle:

Projektvorlagen-Übersicht

VorlageEinsatzbereichKomplexität
Echo BotEinstiegsprojektNiedrig
Core BotProduktivanwendungenMittel
Empty BotIndividuelle LösungenFlexibel

Lokale Entwicklung

Die Entwicklung beginnt mit der Erstellung eines neuen Projekts in Visual Studio unter Verwendung der Bot Framework v4 Templates. Der grundlegende Aufbau erfolgt mit folgendem Code:

public class EchoBot : ActivityHandler
{
    protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
    {
        var replyText = $"Echo: {turnContext.Activity.Text}";
        await turnContext.SendActivityAsync(MessageFactory.Text(replyText), cancellationToken);
    }
}

Emulator-Konfiguration

Der Bot Framework Emulator ermöglicht das lokale Testen der Bot-Funktionalität. Die Einrichtung erfolgt in drei Schritten:

  • Start des Bots auf dem lokalen HTTP-Port 3978
  • Öffnen des Emulators und Verbindung via http://localhost:3978/api/messages
  • Konfiguration der Authentifizierungseinstellungen falls erforderlich

Die lokale Entwicklungsumgebung unterstützt Debugging-Funktionen und ermöglicht die Analyse des JSON-Nachrichtenaustauschs zwischen Bot und Benutzer. Der Emulator bietet zusätzlich erweiterte Funktionen wie Konversationsprotokollierung und Nachrichteninspektion für eine effektive Entwicklung und Fehlerbehebung.

Grundlegende Bot-Funktionalitäten

Die grundlegenden Funktionen eines Bots im Microsoft Bot Framework basieren auf einem ausgefeilten System von Dialogen, Triggern und Intents. Das Dialog-Management bildet das Herzstück der Bot-Kommunikation und ermöglicht strukturierte Konversationsabläufe.

Dialog-System

Ein Dialog fungiert als zentrale Steuerungseinheit und kann folgende Zustände durchlaufen:

DialogzustandBeschreibungVerwendung
Begin DialogStartet neue KonversationInitialisierung
Continue DialogFührt aktiven Dialog fortLaufende Gespräche
End DialogSchließt Dialog abKonversationsende
Cancel DialogBricht Dialog abFehlerbehandlung

Intent-Erkennung

Die Intent-Verarbeitung erfolgt über verschiedene Trigger-Typen:

  • Intent Recognized: Reagiert auf erkannte LUIS oder RegEx-Intents
  • Unknown Intent: Behandelt nicht erkannte Benutzereingaben
  • QnA Intent: Verarbeitet QnA Maker Antworten
  • Custom Events: Ermöglicht benutzerdefinierte Ereignisbehandlung

Konversationsfluss-Implementierung

public class DialogBot : ActivityHandler
{
    protected override async Task OnMessageActivityAsync(
        ITurnContext<IMessageActivity> turnContext,
        CancellationToken cancellationToken)
    {
        var cluResult = await _recognizer.RecognizeAsync(turnContext, cancellationToken);
        var topIntent = cluResult.TopIntent().intent;

        switch (topIntent)
        {
            case "BookFlight":
                await HandleBookingDialog(turnContext, cancellationToken);
                break;
            default:
                await HandleUnknownIntent(turnContext, cancellationToken);
                break;
        }
    }
}

Der Konversationsfluss wird durch das State Management unterstützt, das den aktuellen Zustand der Konversation über mehrere Turns hinweg speichert. Dies ermöglicht kontextbezogene Antworten und die Verwaltung komplexer Dialogszenarien. Die Integration von Natural Language Understanding erlaubt es dem Bot, Benutzereingaben präzise zu interpretieren und entsprechende Dialogpfade zu aktivieren.

Integration mit Azure

Die Integration mit Azure ermöglicht eine nahtlose Bereitstellung von Bots in der Cloud. Der Azure Bot Service bietet drei zentrale Bereitstellungsoptionen für unterschiedliche Anforderungen:

Bereitstellungsmodelle

TypAnwendungsfallUnterstützte SDKs
Zugewiesene verwaltete IdentitätEnterprise-SzenarienC#, JavaScript, Python
EinzelinstanzDedizierte LösungenC#, JavaScript, Python
MehrinstanzGlobale DeploymentsAlle Bot Framework SDKs

Ressourcenkonfiguration

Die Einrichtung des Azure Bot Service erfolgt über das Azure-Portal mit folgenden Kernschritten:

# Ressourcenerstellung
az group create --name myResourceGroup --location westeurope
az deployment group create --resource-group myResourceGroup --template-file template.json

Die Ressourcenkonfiguration umfasst essenzielle Komponenten wie den Messaging-Endpunkt, die Microsoft App-ID und optional einen Application Insights-Instrumentierungsschlüssel für das Monitoring. Für die Bot-Bereitstellung wird ein App Service Plan benötigt, der die Infrastruktur für den Bot bereitstellt.

Deployment-Prozess

Der Bereitstellungsprozess erfordert die Konfiguration mehrerer Azure-Komponenten:

  • Azure Bot-Ressource für die Registrierung beim Bot Service
  • App Service-Ressource für das Hosting der Bot-Anwendung
  • Application Insights für Telemetrie und Monitoring
  • Kanalregistrierung für die Integration mit Messaging-Plattformen

Die Skalierbarkeit wird durch die Wahl des App Service Plans bestimmt, wobei verschiedene Leistungsstufen von Free bis Premium zur Verfügung stehen. Die regionale Verfügbarkeit spielt eine wichtige Rolle bei der Ressourcenkonfiguration, insbesondere für Bots in Azure mit lokalem Datenspeicher.

Bot-Architektur und Komponenten

Die Bot-Architektur des Microsoft Bot Framework basiert auf drei Kernkomponenten, die nahtlos zusammenarbeiten. Das State Management bildet dabei das Fundament für persistente Konversationen und verwendet drei zentrale Zustandscontainer:

ZustandstypAnwendungsbereichVerwendungszweck
User StateBenutzerspezifischProfilinformationen
Conversation StateKonversationsspezifischDialogverlauf
Private Conversation StateBenutzer + KonversationPersönliche Einstellungen

Middleware Pipeline

Die Middleware-Komponenten werden in einer Pipeline ausgeführt und ermöglichen die Verarbeitung von Nachrichten vor und nach dem eigentlichen Bot-Handler. Ein typisches Beispiel für die Implementation:

public class CustomMiddleware : IMiddleware
{
    public async Task OnTurnAsync(ITurnContext context, NextDelegate next)
    {
        // Vor der Bot-Logik
        await next(cancellationToken);
        // Nach der Bot-Logik
    }
}

Aktivitätshandling

Das Aktivitätshandling verarbeitet die Kommunikation zwischen Bot und Benutzer durch einen strukturierten Prozess:

  • Der Bot-Adapter empfängt eingehende HTTP-POST-Anfragen
  • Der Turn-Handler verarbeitet die Aktivität im Kontext
  • Das State Management speichert Änderungen nach dem „Last-Write-Wins“-Prinzip

Die Architektur verwendet einen zustandslosen Ansatz, bei dem jeder Turn unabhängig verarbeitet wird. Die Persistenz wird durch das State Management sichergestellt, das Daten automatisch in der zugrundeliegenden Speicherschicht speichert und abruft.

Erweiterte Funktionen

Die erweiterten Funktionen des Microsoft Bot Framework ermöglichen eine intelligente und nahtlose Kommunikation durch die Integration von Natural Language Understanding und Azure Cognitive Services.

Natural Language Understanding

Die Sprachverarbeitung basiert auf zwei Kernkomponenten:

KomponenteFunktionEinsatzbereich
Conversational Language UnderstandingIntent-ErkennungBenutzerabsichten verstehen
QnA MakerWissensbasisFAQ und allgemeine Antworten
Language GenerationAntwortgenerierungNatürliche Botantworten

Cognitive Services Integration

Die Integration von Azure KI Services ermöglicht:

public class LuisRecognizer
{
    protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext)
    {
        var luisResult = await _recognizer.RecognizeAsync(turnContext, cancellationToken);
        var topIntent = luisResult.GetTopScoringIntent();

        // Intent-basierte Verarbeitung
        switch(topIntent.intent)
        {
            case "Greeting":
                await HandleGreeting(turnContext);
                break;
            default:
                await HandleUnknownIntent(turnContext);
                break;
        }
    }
}

Multi-Channel-Support

Der Bot-Connector-Dienst ermöglicht die nahtlose Integration mit verschiedenen Kommunikationskanälen. Die Kanal-Adapter übersetzen dabei zwischen dem Bot Framework-Aktivitätsschema und dem nativen Schema des jeweiligen Kanals. Das Framework unterstützt:

  • Messaging-Plattformen wie Teams, Slack und Telegram
  • Sprachassistenten wie Cortana
  • Eigene Webchats durch Custom Channel Integration
  • Social Media Plattformen wie Facebook Messenger

Die transformer-basierten Modelle ermöglichen das Training in einer Sprache und die Nutzung in mehreren Sprachen ohne erneutes Training. Die Integration von Enterprise-Grade-Sicherheit gewährleistet dabei den Schutz sowohl der Trainingsdaten als auch der trainierten Modelle.

Testing und Debugging

Das Testing und Debugging von Bots im Microsoft Bot Framework erfolgt primär durch den Bot Framework Emulator, eine leistungsfähige Desktop-Anwendung für die lokale Entwicklung.

Lokales Testing

TestmethodeAnwendungsfallFunktionsumfang
Bot Framework EmulatorLokale EntwicklungVollständiges Debugging
Web Chat TestAzure-DeploymentBasis-Funktionstest
Direct Line TestingChannel-IntegrationAPI-Level Testing

Emulator-Setup und Nutzung

// Bot-Konfiguration für lokales Testing
public class TestBot : ActivityHandler
{
    protected override async Task OnMessageActivityAsync(
        ITurnContext<IMessageActivity> turnContext,
        CancellationToken cancellationToken)
    {
        var messageText = turnContext.Activity.Text;
        var reply = MessageFactory.Text($"Echo: {messageText}");
        await turnContext.SendActivityAsync(reply, cancellationToken);
    }
}

Der Debugging-Prozess umfasst mehrere Kernfunktionen:

  • JSON-Inspektion der ein- und ausgehenden Nachrichten
  • Konversationsprotokolle für die Nachverfolgung
  • State-Debugging für Zustandsänderungen
  • Breakpoint-Unterstützung in der IDE

Fehlerbehebung

Die systematische Fehleranalyse erfolgt durch:

  • Überprüfung der Bot-Erreichbarkeit über den Messaging-Endpoint
  • Analyse der HTTP-Statuscodes bei Verbindungsproblemen
  • Debugging von Authentifizierungsproblemen bei Channel-Integration
  • Überprüfung der Proxy-Einstellungen für Unternehmensumgebungen

Der Emulator ermöglicht das lokale Testing ohne Azure-Deployment und unterstützt dabei die vollständige Bot-Funktionalität einschließlich der Message-Inspection und des State-Managements.

Deployment und Veröffentlichung eines Bots

Das Deployment und die Veröffentlichung eines Bots mit dem Microsoft Bot Framework erfordert eine systematische Vorbereitung der Azure-Umgebung. Der Prozess umfasst mehrere zentrale Schritte für eine erfolgreiche Bereitstellung.

Azure-Ressourcen

RessourceZweckErforderlich
Azure BotBot-RegistrierungJa
App ServiceBot-HostingJa
App Service PlanInfrastrukturJa
Managed IdentityAuthentifizierungOptional

Deployment-Prozess

# Ressourcengruppe erstellen
az group create --name myBotGroup --location westeurope

# Bot-Deployment durchführen
az webapp deploy --resource-group myBotGroup --name myBotApp --src-path ./bot.zip

Kanal-Integration

Die Kanalregistrierung ermöglicht die Kommunikation über verschiedene Plattformen. Der Prozess umfasst:

  • Konfiguration der Bot-Identität (Single-Tenant oder Multi-Tenant)
  • Einrichtung der Messaging-Endpunkte
  • Verwaltung der Authentifizierungseinstellungen
  • Integration der Channel-spezifischen Konfigurationen

Die Produktionsumgebung erfordert besondere Aufmerksamkeit bei:

  • Konfiguration der Skalierungsoptionen im App Service Plan
  • Einrichtung des Application Insights für Monitoring
  • Verwaltung der Sicherheitszertifikate
  • Implementation der Fehlerbehandlung und Logging

Die regionale Verfügbarkeit spielt eine wichtige Rolle, wobei aktuell „westeurope“ und „centralindia“ spezielle Datenresidenz-Features bieten. Die Bereitstellung erfolgt über ARM-Templates oder direkt über das Azure Portal, wobei die Integration von DevOps-Praktiken empfohlen wird.

Best Practices und Optimierung

Die Best Practices und Optimierung von Bots im Microsoft Bot Framework umfassen drei zentrale Aspekte für einen erfolgreichen Produktivbetrieb.

Leistungsoptimierung

OptimierungsbereichMaßnahmeAuswirkung
SkalierungVermeidung von SingletonsVerbesserte Parallelität
DatenverarbeitungBackground TasksReduzierte Latenz
Load BalancingClient Affinity eliminierenOptimale Lastverteilung

Sicherheitsaspekte

Die Bot-Sicherheit basiert auf mehreren Schlüsselkomponenten:

  • Ausschließliche Verwendung von HTTPS und TLS 1.2 für die Kommunikation
  • Implementation der Bot Connector Authentication
  • Regelmäßige Aktualisierung der Datenbank-Sicherheitskontrollen
  • Aktivierung der Enhanced Direct Line Authentication

Wartung und Updates

Die kontinuierliche Bot-Wartung erfordert:

// Beispiel für sicheres State Management
public class BotState
{
    protected override async Task OnTurnAsync(ITurnContext context)
    {
        // Regelmäßige State-Validierung
        await ValidateStateAsync(context);
        // Automatische Bereinigung
        await CleanupStateAsync(context);
    }
}

Für die Optimierung der Bot-Antworten sollten:

  • Dialog-Templates wiederverwendbar gestaltet werden
  • Prompt-Properties für unerwartete Eingaben konfiguriert sein
  • Interruption-Handler für globale und lokale Unterbrechungen implementiert werden
  • Help/Cancel-Dialoge für bessere Benutzererfahrung integriert werden

Die Performance-Überwachung erfolgt durch Application Insights und ermöglicht die frühzeitige Erkennung von Engpässen. Durch die Implementierung von Background Tasks für ressourcenintensive Operationen wird die Hauptanwendung entlastet und die Skalierbarkeit verbessert.

Zusätzliche Ressourcen und nächste Schritte

Um mehr über die Erstellung eines neuen Bots zu erfahren, besuchen Sie Microsoft Learn oder konsultieren Sie die offizielle Dokumentation. Die neuesten Features des Bot Framework SDK finden Sie auf GitHub. Für Informationen zum Erstellen eines Bots mit dem Azure KI Bot Service und zur richtigen Copilot-Lösung wählen Sie die passenden Ressourcen aus.

Die nächsten Schritte umfassen die Implementierung Ihres Bots, das Testen des Bots mit dem Bot Framework Emulator und die Bereitstellung in Azure. Führen Sie den folgenden Befehl aus, um Ihre Azure Bot-Ressource zu generieren:

az bot create --resource-group myResourceGroup --name myBot --kind webapp --subscription mySubscription

Weitere Informationen finden Sie in der Dokumentation zum Azure Bot Service. Beim Erstellen der Ressource können Sie vorhandene Ressourcen verwenden oder neue Identitäten erstellen. Beim Azure KI Bot Service registrieren Sie Ihren Bot und konfigurieren die App-ID sowie die Authentifizierungseinstellungen.

Für fortgeschrittene Funktionen können Sie das Bot Framework Composer verwenden, um komplexe Dialoge zu erstellen und zu verwalten. Informationen zum Erstellen eines Bots mithilfe von Language Understanding im Bot finden Sie unter Natürliches Sprachverständnis. Bots sind Apps, die Benutzern gesendet werden können und mit Kanälen interagieren.

Zusammenfassend bietet das Microsoft Bot Framework in Kombination mit Azure eine leistungsstarke Plattform für die Erstellung, Bereitstellung und Verwaltung von Bots. Mit den richtigen Tools und Ressourcen können Sie effektive Bots erstellen, die den Anforderungen Ihrer Benutzer entsprechen.