Sdílet prostřednictvím


Přidání kopilota Copilot Studio do kanálů Azure Bot Service

Důležité

Schopnosti a funkce Power Virtual Agents jsou nyní součástí Microsoft Copilot Studio po významných investicích do generativní umělé inteligence a vylepšených integracích napříč Microsoft Copilot.

Některé články a snímky obrazovky mohou odkazovat na Power Virtual Agents, zatímco aktualizujeme dokumentaci a obsah školení.

Svého kopilota můžete připojit ke stávajícím Kanálům služby Azure Bot Service. To může být užitečné, pokud chcete svého kopilota připojit ke koncovým uživatelům na kanálech Azure Bot Service.

Přidání kopilota do kanálů Azure Bot Service vyžaduje značné znalosti vývojářů. Tento článek je napsán pro IT administrátory nebo vývojáře, kteří mají zkušenosti s vývojem a psaním kódu.

Tip

Nemusíte se řídit tímto dokumentem, abyste přidali vašeho kopilota Copilot Studio na webovou stránku, Facebook nebo Microsoft Teams. Pokud je vaším cílem připojení k vlastní webové nebo nativní aplikaci, vaši vývojáři se mohou dozvědět více na Přidejte kopilota do mobilních a vlastních aplikací.

Důležité

Pokyny v této části vyžadují vývoj softwaru od vás nebo vašich vývojářů. Je určený pro zkušené IT profesionály, jako jsou IT administrátoři nebo vývojáři, kteří dobře rozumí vývojářským nástrojům, utilitám a IDE.

Předpoklady

Vzorky kódu

Fragmenty kódu použité v tomto dokumentu pocházejí z ukázkového kódu reléového robota.

Odkazy

Pokyny v tomto dokumentu odkazují na následující:

Vytvořte nebo použijte existujícího bota Azure Bot Service

Potřebujete bota Azure Bot Service, který dokáže předávat konverzace mezi vaším kopilotem Copilot Studio a kanály Azure Bot Service.

Schéma reléového bota.

Ukázkový kód reléového bota je dobrým výchozím bodem, pokud nemáte existujícího bota Azure Bot Service. Je postaven z ukázkového kódu robota Microsoft Bot Framework, který lze zkompilovat a nasadit do služby Azure Bot Service. Ukázkový kód je určen k použití jako výchozí bod a není určen k přímému použití ve výrobě. Budete muset přidat kód a optimalizaci, aby odpovídaly potřebám vaší firmy.

Pokud již máte bota Azure Bot Service, musíte přidat konektor Copilot Studio a kód pro správu konverzačních relací. Poté můžete robota nasadit do služby Azure Bot Service a připojit se ke kanálům pomocí Azure Portal.

Získání parametrů kopilota Copilot Studio

Chcete-li se připojit k kopilotovi, kterým jste vytvořili pomocí Copilot Studio, budete muset získat název kopilota a koncový bod tokenu.

  1. Zkopírujte název svého kopilota Copilot Studio.

    Získejte název robota.

  2. V navigační nabídce pod Nastavení vyberte Kanály.

  3. Vyberte kanál, ke kterému se chcete připojit. Tento scénář používá Slack jako příklad.

    Slack kanál.

  4. Chcete-li zkopírovat a uložit hodnotu Koncový bod tokenu, vyberte Kopírovat. K připojení kopilota ke kanálu Azure Bot Service budete potřebovat koncový bod.

    Získání parametrů robota.

Spravujte konverzační relace pomocí svého kopilota Copilot Studio

Může probíhat více konverzací mezi kanály Azure Bot Service a připojení Direct Line s vaším kopilotem Copilot Studio.

Váš bot služby Azure Bot Service bude muset namapovat a přenést konverzaci z kanálu Azure Bot Service do konverzace Direct Line pomocí kopilota Copilot Studio a naopak.

Příklad ukázkového kódu

Následující příklad používá ukázky z ukázkového kódu reléového bota.

  1. Při každém zahájení nové konverzace externího kanálu Azure Bot Service spusťte konverzaci kopilota Copilot Studio. Viz Získat token Direct Line a Použití Direct Line pro komunikaci s kopilotem pro pokyny k zahájení nové konverzace s robotem.

    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. Chcete-li spravovat více relací, musíte udržovat mapování externích konverzací kanálu Azure Bot Service na odpovídající konverzace kopilota Copilot Studio. Konverzaci kopilota Copilot Studio lze identifikovat a spojit se dvěma vlastnostmi: ConversationtId a Token.

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

    Chcete-li spravovat životní cyklus konverzace, obnovte tokeny Direct Line nebo vyčistěte nečinné konverzace. Další informace o obnovení tokenu naleznete na Obnovit token Direct Line. Konverzace kopilota Copilot Studio na jejich podporu je definována takto:

    /// <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. Když začne nová konverzace kopilota Copilot Studio, přidejte pár klíč-hodnota (external_Azure_Bot_Service_channel_conversationID, PowerVirtualAgentsConversation) do mapovací tabulky.

    // 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. Chcete-li pokračovat ve stávající konverzaci, po obdržení nové zprávy externího kanálu Azure Bot Service načtěte existující konverzaci z mapovací tabulky a přeneste aktivitu externí konverzace do svého kopilota Copilot Studio a získejte odpověď.

    Následující příklad ukazuje předávání konverzace přepsáním metody 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. Viz Použití Direct Line pro komunikaci s kopilotem pro to, jak získat odpověď kopilota Copilot Studio. Když je přijata odpověď kopilota Copilot Studio, viz Analyzujte obsah konverzace z kopilota pro informace o tom, jak analyzovat odpověď na odpověď externího kanálu Azure Bot Service.

Příklad analýzy odezvy lze nalézt v ukázkovém kódu reléového bota ResponseConverter.cs.

Nasazení do služby Azure Bot Service

Až budete mít připraveného přenosového robota Azure Bot Service, musíte nasadit robota do služby Azure Bot Service.

Nastavení kanálů Azure Bot Service

Kanály, ke kterým se chcete připojit, můžete nastavit tak, že se přihlásíte k Azure Portal a vyberete skupinu prostředků Azure Bot Service, do které jste nasadili. Podívejte se na konkrétní pokyny pro každý kanál na Kanály Azure Bot Service.