Freigeben über


Veröffentlichen Sie ein Agent auf Azure Bot Service-Kanälen

Sie können Ihr Agent an bestehende Azure Bot Service-Kanäle weitergeben, was hilfreich sein kann, wenn Sie Ihr Agent an Endbenutzer auf Azure Bot Service-Kanälen weitergeben möchten.

Das Hinzufügen Ihrer Agent- zu Azure Verbinden-Kanäle erfordert beträchtliches Entwicklerwissen. Dieser Artikel wurde für IT-Administratoren oder Entwickler geschrieben, die Erfahrung in der Entwicklung und dem Schreiben von Code haben.

Trinkgeld

Sie müssen dieses Dokument nicht folgen, um Ihr Copilot Studio Agent zu Ihrer Website Facebook hinzuzufügen oder Microsoft Teams. Wenn Ihr Ziel darin besteht, Verbinden in eine benutzerdefinierte webbasierte oder native App zu konvertieren, können Ihre Entwickler unter Ein Agent in mobilen oder benutzerdefinierten Apps veröffentlichen mehr erfahren.

Wichtig

Anweisungen in diesem Abschnitt erfordern Softwareentwicklung von Ihnen oder Ihren Entwicklern. Es richtet sich an erfahrene IT-Experten wie IT-Administratoren oder -Entwickler, die ein solides Verständnis für Entwicklertools, Dienstprogramme und IDEs haben.

Voraussetzungen

Codebeispiele

In diesem Dokument verwendete Codefragmente stammen von Relay-Bot-Beispielcode.

Referenzen

Die Anweisungen in diesem Dokument beziehen sich die folgenden Dokumente:

Einen vorhandenen Azure Bot Service-Bot erstellen oder verwenden

Sie benötigen ein Azure Bot Service Bot, das Gespräche zwischen Ihren Copilot Studio Agent- und Azure Bot Service-Kanälen weiterleiten kann.

Relay-Botdiagramm.

Der Relay-Bot-Beispielcode ist ein guter Ausgangspunkt, wenn Sie keinen vorhandenen Azure Bot Service-Bot haben. Er wird erstellt aus Microsoft Bot Framework-Bot-Beispielcode, der kompiliert und für den Azure Bot Service bereitgestellt werden kann. Der Beispielcode soll als Ausgangspunkt und nicht direkt in der Produktion verwendet werden. Sie müssen Code und Optimierung hinzufügen, um Ihren Geschäftsanforderungen zu entsprechen.

Wenn Sie bereits einen Azure Bot Service-Bot haben, müssen Sie einen Copilot Studio Connector und Code zum Verwalten von Konversationssitzungen hinzufügen. Anschließend können Sie den Bot für den Azure Bot Service bereitstellen und mit dem Azure-Portal eine Verbindung zu Kanälen herstellen.

Holen Sie sich Ihre Copilot Studio Agent-Parameter

Um Verbinden zu dem Agent hinzuzufügen, das Sie mit Copilot Studio erstellt haben, müssen Sie den Namen und das Token Agent Ihres Endpunkt abrufen.

  1. Kopieren Sie den Namen Ihres Agent in Copilot Studio.

    Name des Bots abrufen.

  2. Wählen Sie im Navigationsmenü unter Einstellungen die Option Kanäle.

  3. Wählen Sie den Kanal aus, mit dem Sie eine Verbindung herstellen möchten. Dieses Szenario verwendet Slack als Beispiel.

    Slack-Kanal.

  4. Um den Token Endpunkt Wert zu kopieren und zu speichern wählen Sie Kopieren. Sie benötigen Ihr Endpunkt, um Ihr Verbinden zum Kanal Azure Bot Service zu senden.

    Bot-Parameter abrufen.

Verwalten Sie Konversationssitzungen mit Ihrem Copilot Studio Agent

Es können mehrere Konversationen zwischen den Azure Bot Service-Kanälen und der Direct Line Verbindung mit Ihrem Copilot Studio Agent stattfinden.

Ihr Azure Bot Service Bot muss die Konversation vom Kanal Azure Bot Service an die Direct Line Konversation mit dem Copilot Studio Agent abbilden und weiterleiten und umgekehrt.

Beispielcodebeispiel

Das folgende Beispiel verwendet Beispiele aus dem Relay-Bot-Beispielcode.

  1. Starten Sie bei jedem neuen externen Azure Bot Service-Kanalkonversation eine Copilot Studio Agent-Konversation. Anweisungen zum Starten einer neuen Konversation mit Bot finden Sie unter Token abrufen Direct Line und Verwenden zur Kommunikation mit Agent Direct Line .

    using (var httpRequest = new HttpRequestMessage())
    {   
        httpRequest.Method = HttpMethod.Get;
        UriBuilder uriBuilder = new UriBuilder(TokenEndPoint);
        httpRequest.RequestUri = uriBuilder.Uri;
        using (var response = await s_httpClient.SendAsync(httpRequest))
        {
            var responseString = await response.Content.ReadAsStringAsync();
            string token = SafeJsonConvert.DeserializeObject<DirectLineToken>(responseString).Token;
        }
    }
    
    /// <summary>
    /// class for serialization/deserialization DirectLineToken
    /// </summary>
    public class DirectLineToken
    {
        public string Token { get; set; }
    }
    
     // Use the retrieved token to create a DirectLineClient instance
     using (var directLineClient = new DirectLineClient(token))
     {
         var conversation = await directLineClient.Conversations.StartConversationAsync();
         string conversationtId = conversation.ConversationId;
     }
    
  2. Um mehrere Sitzungen zu verwalten, müssen Sie eine Zuordnung externer Azure Bot Service-Kanalkonversationen mit entsprechenden Copilot Studio Agent-Konversationen pflegen. Eine Copilot Studio Agent-Konversation kann mithilfe von zwei Eigenschaften identifiziert und verknüpft werden: ConversationtId und Token.

    Dictionary<string, PowerVirtualAgentsConversation> ConversationRouter = new Dictionary<string, PowerVirtualAgentsConversation>();  
    

    Um den Konversationslebenszyklus zu verwalten, aktualisieren Sie die Direct Line-Tokens oder im Leerlauf befindliche Konversationen bereinigen. Weitere Informationen zur Token-Aktualisierung finden Sie unter Direct Line-Tokens aktualisieren. Eine Copilot Studio Agent-Konversation zur Unterstützung der Aktualisierung von Direct Line Token wird wie folgt definiert:

    /// <summary>
    /// Data model class for Copilot Studio agent conversation
    /// </summary>
    public class PowerVirtualAgentsConversation
    {
        public string ConversationtId { get; set; } // The Copilot Studio agent conversation ID retrieved from step 1
    
        public string Token { get; set; } // The DirectLine token retrieved from step 1
    
        public string WaterMark { get; set; } // Identify turn in a conversation
    
        public DateTime LastTokenRefreshTime { get; set; } = DateTime.Now; // Timestamp of last token refresh
    
        public DateTime LastConversationUpdateTime { get; set; } = DateTime.Now; // Timestamp of last active user message sent to agent
    }
    
  3. Wenn eine neue Copilot Studio Agent-Konversation beginnt, fügen Sie der Zuordnung-Tabelle ein Schlüssel-Wert-Paar (external_Azure_Bot_Service_channel_conversationID, PowerVirtualAgentsConversation) hinzu.

    // After new Copilot Studio agent conversation starts
    ConversationRouter[external_Azure_Bot_Service_channel_conversationID] = new PowerVirtualAgentsConversation()
      {
        Token = token,
        ConversationtId = conversationId,
        WaterMark = null,
        LastConversationUpdateTime = DateTime.Now,
        LastTokenRefreshTime = DateTime.Now,
      }; 
    
  4. Um eine bestehende Konversation fortzusetzen, rufen Sie beim Empfang einer neuen externen Azure Bot Service-Kanalnachricht die bestehende Konversation aus der Zuordnung-Tabelle ab, leiten Sie die externe Konversationsaktivität an Ihr Copilot Studio Agent weiter und erhalten Sie ein Antwort.

    Das folgende Beispiel zeigt die Weiterleitung von Konversationen durch Überschreiben der Methode ActivityHandler.OnMessageActivityAsync((ITurnContext<IMessageActivity>, CancellationToken)

    // Invoked when a message activity is received from the user
    // Send the user message to Copilot Studio agent and get response
    protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
    {
        // Retrieve agent conversation from mapping table
        // If not exists for the given external conversation ID, start a new Copilot Studio agent conversation
        ConversationRouter.TryGetValue(externalCID, out PowerVirtualAgentsConversation currentConversation) ?
                currentConversation : /*await StartBotConversationAsync(externalCID)*/;
    
        // Create DirectLine client with the token associated to current conversation
        DirectLineClient client = new DirectLineClient(currentConversation.Token);
    
        // Send user message using directlineClient
        await client.Conversations.PostActivityAsync(currentConversation.ConversationtId, new DirectLineActivity()
        {
          Type = DirectLineActivityTypes.Message,
          From = new ChannelAccount { Id = turnContext.Activity.From.Id, Name = turnContext.Activity.From.Name },
          Text = turnContext.Activity.Text,
          TextFormat = turnContext.Activity.TextFormat,
          Locale = turnContext.Activity.Locale,
        });
    
        // Update LastConversationUpdateTime for session management
        currentConversation.LastConversationUpdateTime = DateTime.Now;
    }  
    
  5. Informationen zum Abrufen von Agent's Antwort. finden Sie unter Direct Line Verwenden zur Kommunikation mit Agent Copilot Studio . Wenn das Copilot Studio Agent's Antwort empfangen wird, finden Sie unter Konversationsnutzlast von Agent analysieren Informationen dazu, wie das Antwort in den externen Azure Bot Service-Kanal Antwort analysiert wird.

Ein Beispiel für das Parsen von Antworten finden Sie in der Relay-Bot-Beispielcode ResponseConverter.cs.

Für Azure Bot Service bereitstellen

Nachdem Sie Ihren Azure Bot Service-Relay-Bot bereit haben, müssen Sie den Bot für Ihren Azure Bot Service bereitstellen.

Azure Bot Service-Kanäle einrichten

Sie können die Kanäle einrichten, zu denen Sie eine Verbindung herstellen möchten, indem Sie sich beim Azure-Portal anmelden und die Azure Bot Service-Ressourcengruppe auswählen, für die Sie die Bereitstellung durchgeführt haben. Sehen Sie sich die spezifischen Anweisungen für jeden Kanal unter Azure Bot Service-Kanäle an.