Del via


Publicere en agent til Azure Bot Service-kanaler

Du kan oprette forbindelse mellem din agent og eksisterende Azure Bot Service-kanaler. Denne forbindelse er nyttig, hvis du vil forbinde din agent med kunder på Azure Bot Service-kanaler.

Tilføjelse af din agent i 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.

Vigtige oplysninger

Instruktionerne i dette afsnit kræver udvikling af software fra dig eller dine udviklere. Dette afsnit er beregnet til erfarne it-medarbejdere, f.eks. it-administratorer eller udviklere, der har en solid forståelse af udviklerværktøjer, hjælpeprogrammer og integrerede udviklingsmiljøer (IDE'er).

Tip

Du behøver ikke at følge dette dokument for at føje din Copilot Studio-agent til dit websted, 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å Publicere en agent til mobile og brugerdefinerede apps.

Forudsætninger

Kodeeksempler

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

Referencer

Instruktionerne i dette dokument refererer til følgende dokumenter:

Opret eller brug en eksisterende Azure Bot Service-bot

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

Relæbot-diagram.

Eksempelkoden for relæbehandlet bot er et godt udgangspunkt, hvis du ikke har en eksisterende Azure Bot Service-bot. Denne eksempelkode er bygget ud fra eksempelkoden for Microsoft Bot Framework-robotten, som du kan kompilere og udrulle til Azure Bot Service. Brug eksempelkoden som udgangspunkt. Eksempelkoden er ikke beregnet til produktionsbrug. 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 udrulle robotten til Azure Bot Service og oprette forbindelse til kanaler ved hjælp af Azure Portal.

Hent dine Copilot Studio-agentparametre

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

  1. Kopiér din agents 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 for at oprette forbindelse mellem din agent og Azure Bot Service-kanalen.

    Hent botparametre.

Administrer samtalesessioner med din Copilot Studio-agent

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

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

Eksempel på eksempelkode

Det følgende eksempel bruger prøver fra relæbot-eksempelkoden.

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

    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 vedligeholde en tilknytning af eksterne Azure Bot Service-kanalsamtaler til tilsvarende Copilot Studio-agentsamtaler. Opret forbindelse til en Copilot Studio-agentsamtale ved hjælp af 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-agentsamtale, der understøtter opdatering af Direct Line-tokens, er defineret på følgende måde:

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

    // 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. Hvis du vil fortsætte en eksisterende samtale, skal du hente den eksisterende samtale fra tilknytningstabellen, når du modtager en ny ekstern Azure Bot Service-kanalmeddelelse. Videresend den eksterne samtaleaktivitet til din Copilot Studio-agent, og få et svar.

    I følgende eksempel vises videresendelse af samtalen, hvilket gøres 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 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. Vi henviser til Anvendelse af Direct Line til at kommunikere med agenten for oplysninger om, hvordan du kan få Copilot Studio-agentens svar. Når du modtager Copilot Studio-agentens svar, skal du se Parse samtalenyttedata fra agenten for at få oplysninger om, hvordan du fortolker svaret på det eksterne svar på Azure Bot Service-kanalen.

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 oprettet din Azure Bot Service-relærobot, skal du udrulle robotten til din Azure Bot Service.

Opsætning af Azure Bot Service-kanaler

Hvis du vil konfigurere kanaler, skal du logge på Azure Portal og vælge den Azure Bot Service-ressourcegruppe, du har udrullet til. Du kan finde specifikke instruktioner under Azure Bot Service-kanaler.