Del via


Føje en copilot til Azure Bot Service-kanaler

Vigtigt!

Power Virtual Agents-funktioner og -egenskaber er nu en del af Microsoft Copilot Studio, der følger vigtige investeringer i generativ AI og forbedrede integrationer på tværs af Microsoft Copilot.

Der refereres muligvis til nogle artikler og skærmbilleder i Power Virtual Agents, mens vi opdaterer dokumentation og undervisningsindhold.

Du kan forbinde din copilot med eksisterende Azure Bot Service-kanaler. Dette kan være en hjælp, hvis du vil forbinde din copilot med slutbrugere på Azure Bot Service-kanaler.

Tilføjelse af din copilot til Azure Bot Service-kanaler kræver stor udviklerekspertise. Denne artikel er skrevet til IT-administratorer eller udviklere, der har erfaring med at udvikle og skrive kode.

Tip

Du behøver ikke at følge dette dokument for at tilføje din Copilot Studio-copilot til dit website, Facebook eller Microsoft Teams. Hvis dit mål er at forbinde med en brugerdefineret webbaseret eller oprindelig app, kan udviklerne få mere at vide på Tilføj copilot til mobile og brugerdefinerede apps.

Vigtigt!

Instruktionerne i dette afsnit kræver udvikling af software fra dig eller dine udviklere. Det er udviklet til erfarne IT-medarbejdere, såsom IT-administratorer eller udviklere, der har en solid forståelse for udviklerværktøjer, værktøjer og IDE'er.

Forudsætninger

Kodeeksempler

Kodestykker, der bruges i dette dokument, er fra relæbehandlede bot-eksempelkode.

Referencer

Instruktionerne i dette dokument refererer til følgende:

Opret eller brug en eksisterende Azure Bot Service-bot

Du skal bruge en Azure Bot Service-robot, der kan videresende samtaler mellem din Copilot Studio-copilot og Azure Bot Service-kanaler.

Relæbehandlet bot-diagram.

Eksempelkoden for relæbehandlet bot er et godt udgangspunkt, hvis du ikke har en eksisterende Azure Bot Service-bot. Den er opbygget af Microsoft Bot Framework-bot eksempelkode, der kan kompileres og installeres i Azure Bot Service. Eksempelkoden er beregnet til at blive brugt som udgangspunkt og er ikke beregnet til at blive brugt direkte i produktionen. Du skal tilføje kode og optimering for at kunne tilpasse den til dine forretningsbehov.

Hvis du allerede har en Azure Bot Service-bot, skal du tilføje en Copilot Studio-connector og kode for at administrere samtalesessioner. Du kan derefter installere botten i Azure Bot Service og oprette forbindelse til kanaler med Azure-portalen.

Hent dine Copilot Studio-copilotparametre

Hvis du vil oprette forbindelse til den copilot, du har oprettet med Copilot Studio, skal du hente din copilots navn og token-slutpunkt.

  1. Kopiér din copilots navn i Copilot Studio.

    Hent navn til bot.

  2. Vælg Kanaler under Indstillinger i navigationsmenuen.

  3. Vælg den kanal, du vil oprette forbindelse til. I dette scenarie bruges Slack som eksempel.

    Slack-kanal.

  4. Vælg Kopiér for at kopiere og gemme værdien af Slutpunkt for token. Du skal bruge dit slutpunkt til at oprette forbindelse mellem din copilot og Azure Bot Service-kanalen.

    Hent botparametre.

Administrer samtalesessioner med din Copilot Studio-copilot

Der kan være flere samtaler mellem Azure Bot Service-kanalerne og Direct Line-forbindelsen til din Copilot Studio-copilot.

Din Azure Bot Service-bot skal tilknytte og videresende samtalen fra Azure Bot Service-kanalen til Direct Line-samtalen med Copilot Studio-copilot og omvendt.

Eksempel på eksempelkode

I følgende eksempel bruges eksempler fra den relæbehandlet bot-eksempelkode.

  1. Du kan på alle nye eksterne Azure Bot Service-kanaler til samtalestart starte en Copilot Studio-copilotsamtale. Du kan finde flere instruktioner i at starte en ny samtale med copiloten i Hent et Direct Line-token og Anvend Direct Line til at kommunikere med copiloten.

    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. Hvis du vil administrere flere sessioner, skal du bevare en tilknytning af eksterne Azure Bot Service-kanalsamtaler til tilsvarende Copilot Studio-copilotsamtaler. En Copilot Studio-copilotsamtale kan identificeres og forbindes med to egenskaber: ConversationtId og Token.

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

    Du kan styre samtalens livscyklus ved at opdatere Direct Line-tokens eller rydde op i inaktive samtaler. Få mere at vide om tokenopdatering i Opdatere Direct Line-token. En Copilot Studio-copilotsamtale til at understøtte dem defineres som følger:

    /// <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. Når en ny Copilot Studio-copilotsamtale startes, skal du føje et nøgleværdipar (external_Azure_Bot_Service_channel_conversationID, PowerVirtualAgentsConversation) til tilknytningstabellen.

    // 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. Hvis du vil fortsætte med en eksisterende samtale, skal du, når der er modtaget en ny ekstern Azure Bot Service-kanalmeddelelse, hente den eksisterende samtale fra tilknytningstabellen, overføre den eksterne samtaleaktivitet til din Copilot Studio-copilot og modtage et svar.

    I følgende eksempel vises relæ af samtalen ved at tilsidesætte metoden ActivityHandler.OnMessageActivityAsync((ITurnContext<IMessageActivity>, CancellationToken)

    // 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. Vi henviser til Anvendelse af Direct Line til at kommunikere med copiloten for oplysninger om, hvordan du kan få Copilot Studio-copilotens svar. Når Copilot Studio-copilotens svar modtages, skal du gå til Fortolk samtalenyttedata fra copiloten for at finde ud af, hvordan du kan fortolke svaret til svaret fra den eksterne Azure Bot Service-kanal.

Du kan finde et eksempel på fortolkning af svar i relæ-eksempelkode for botten ResponseConverter.cs.

Installer på Azure Bot Service

Når du har gjort din Azure Bot Service-relæ-bot klar, skal du installere botten på din Azure Bot Service.

Opsætning af Azure Bot Service-kanaler

Du kan konfigurere de kanaler, du vil oprette forbindelse til, ved at logge på Azure-portalen og vælge den Azure Bot Service-ressourcegruppe, som du har installeret på. Få vist de specifikke instruktioner for hver kanal på Azure Bot Service-kanaler.