Share via


Een Copilot Studio-copilot toevoegen aan Azure Bot Service-kanalen

Belangrijk

Power Virtual Agents-mogelijkheden en -functies maken nu deel uit van Microsoft Copilot Studio na aanzienlijke investeringen in generatieve AI en verbeterde integraties binnen Microsoft Copilot.

Sommige artikelen en schermopnamen verwijzen mogelijk naar Power Virtual Agents terwijl we de documentatie en trainingsinhoud bijwerken.

U kunt uw copilot verbinden met bestaande Azure Bot Service-kanalen. Dit kan handig zijn als u uw copilot wilt verbinden met eindgebruikers op Azure Bot Service-kanalen.

Voor het toevoegen van uw copilot aan Azure Bot Service-kanalen is aanzienlijke expertise van ontwikkelaars vereist. Dit artikel is geschreven voor IT-beheerders of ontwikkelaars die ervaring hebben met het ontwikkelen en schrijven van code.

Tip

U hoeft dit document niet te volgen om uw Copilot Studio-copilot toe te voegen aan uw website, Facebook of Microsoft Teams. Als het uw doel is om verbinding te maken met een aangepaste webapp native app, kunnen uw ontwikkelaars meer informatie vinden in Copilot toevoegen aan mobiele en aangepaste apps.

Belangrijk

Voor instructies in deze sectie is softwareontwikkeling van u of uw ontwikkelaars vereist. Deze sectie is bedoeld voor ervaren IT-professionals, zoals IT-beheerders of ontwikkelaars, die een gedegen kennis hebben van ontwikkelaarstools, hulpprogramma's en IDE's.

Vereisten

Codevoorbeelden

Codefragmenten die in dit document worden gebruikt, zijn afkomstig uit voorbeeldcode voor een relaybot.

Verwijzingen

De instructies in dit document verwijzen naar het volgende:

Een Azure Bot Service-bot maken of een bestaande Azure Bot Service-bot gebruiken

U hebt een Azure Bot Service-bot nodig die gesprekken tussen uw Copilot Studio-copilot en Azure Bot Service-kanalen kan doorgeven.

Diagram van relaybot.

De voorbeeldcode voor een relaybot is een goed beginpunt als u geen bestaande Azure Bot Service-bot hebt. Het is opgebouwd uit voorbeeldcode voor de Microsoft Bot Framework-bot die kan worden gecompileerd en geïmplementeerd in Azure Bot Service. De voorbeeldcode is bedoeld als uitgangspunt en niet bedoeld om direct in productie te worden gebruikt. U moet code en optimalisatie toevoegen om aan uw zakelijke behoeften te voldoen.

Als u al een Azure Bot Service-bot hebt, moet u een Copilot Studio-connector en code toevoegen om gesprekssessies te beheren. Vervolgens kunt u de bot implementeren in Azure Bot Service en verbinding maken met kanalen met de Azure-portal.

Uw Copilot Studio-copilotparameters ophalen

Om verbinding te maken met de copilot die u hebt gebouwd met Copilot Studio, moet u de naam van uw copilot en het token-eindpunt ophalen om deze te identificeren.

  1. Kopieer de naam van uw copilot in Copilot Studio.

    Botnaam ophalen.

  2. Selecteer in het navigatiemenu onder Instellingen de optie Kanalen.

  3. Selecteer het kanaal waarmee u verbinding wilt maken. In dit scenario wordt Slack gebruikt als voorbeeld.

    Slack-kanaal.

  4. Om de waarde van het Tokeneindpunt te kopiëren en op te slaan, selecteert u Kopiëren. U hebt uw eindpunt nodig om uw copilot te verbinden met het Azure Bot Service-kanaal.

    Botparameters ophalen.

Gesprekssessies met uw Copilot Studio-copilot beheren

Er kunnen meerdere gesprekken plaatsvinden tussen de Azure Bot Service-kanalen en de Direct Line-verbinding met uw Copilot Studio-copilot.

Uw Azure Bot Service-bot moet het gesprek toewijzen en doorgeven van het Azure Bot Service-kanaal naar het Direct Line-gesprek met de Copilot Studio-copilot en vice versa.

Voorbeeldcode

In het volgende voorbeeld worden voorbeelden uit de voorbeeldcode voor relaybots gebruikt.

  1. Start bij elk nieuw extern Azure Bot Service-kanaalgesprek een Copilot Studio-copilotgesprek. Raadpleeg Direct Line-token ophalen en Direct Line gebruiken om met de copilot te communiceren voor instructies over het starten van een nieuw gesprek met de bot.

    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. Als u meerdere sessies wilt beheren, moet u een toewijzing van externe Azure Bot Service-kanaalgesprekken aan de bijbehorende Copilot Studio-copilotgesprekken bijhouden. Een Copilot Studio-copilotgesprek kan worden geïdentificeerd en verbonden met twee eigenschappen: ConversationtId en Token.

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

    U kunt de levenscyclus van het gesprek beheren door de Direct Line-tokens te vernieuwen of inactieve gesprekken op te ruimen. Lees meer over het vernieuwen van tokens onder Direct Line-token vernieuwen. Een Copilot Studio-copilotgesprek om deze te ondersteunen, wordt als volgt gedefinieerd:

    /// <summary>
    /// Data model class for Copilot Studio copilot conversation
    /// </summary>
    public class PowerVirtualAgentsConversation
    {
        public string ConversationtId { get; set; } // The Copilot Studio copilot 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 copilot
    }
    
  3. Bij het begin van een nieuw Copilot Studio-copilotgesprek wordt een sleutelwaardepaar toegevoegd (external_Azure_Bot_Service_channel_conversationID, PowerVirtualAgentsConversation) aan de toewijzingstabel.

    // After new Copilot Studio copilot conversation starts
    ConversationRouter[external_Azure_Bot_Service_channel_conversationID] = new PowerVirtualAgentsConversation()
      {
        Token = token,
        ConversationtId = conversationId,
        WaterMark = null,
        LastConversationUpdateTime = DateTime.Now,
        LastTokenRefreshTime = DateTime.Now,
      }; 
    
  4. Als u wilt doorgaan met een bestaand gesprek, haalt u na een nieuw ontvangen extern Azure Bot Service-kanaalbericht het bestaande gesprek op uit de toewijzingstabel en stuurt u de externe gespreksactiviteit door naar uw Copilot Studio-copilot.

    In het volgende voorbeeld wordt weergegeven hoe een gesprek kan worden doorgestuurd door de methode ActivityHandler.OnMessageActivityAsync((ITurnContext<IMessageActivity>, CancellationToken) te overschrijven

    // Invoked when a message activity is received from the user
    // Send the user message to Copilot Studio copilot and get response
    protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
    {
        // Retrieve copilot conversation from mapping table
        // If not exists for the given external conversation ID, start a new Copilot Studio copilot 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. Raadpleeg Direct Line gebruiken om met de copilot te communiceren voor informatie over hoe u de respons van de Copilot Studio-copilot kunt ophalen. Wanneer het antwoord van de Copilot Studio-copilot is ontvangen, raadpleegt u Nettolading van gesprek van de copilot parseren voor informatie over het parseren van de reactie op de externe Azure Bot Service-kanaalreactie.

Een voorbeeld van het parseren van reacties is te vinden in de voorbeeldcode voor relaybots ResponseConverter.cs.

Implementeren naar Azure Bot Service

Wanneer uw Azure Bot Service-relaybot gereed is, moet u de bot implementeren naar Azure Bot Service.

Azure Bot Service-kanalen instellen

U kunt de kanalen instellen waarmee u verbinding wilt maken door u aan te melden bij de Azure-portal en de Azure Bot Service-resourcegroep te selecteren waarnaar u hebt geïmplementeerd. Bekijk de specifieke instructies voor elk kanaal in Azure Bot Service-kanalen.