Bagikan melalui


Menerbitkan copilot ke saluran Azure bot Service

Anda dapat menyambungkan copilot Anda ke saluran Azure bot Service yang ada , yang dapat membantu jika Anda ingin menyambungkan copilot Anda ke pengguna akhir di saluran Azure bot Service.

Menambahkan copilot Anda ke saluran Azure bot Service memerlukan keahlian pengembang yang cukup besar. Artikel ini ditulis untuk admin atau pengembang TI yang memiliki pengalaman mengembangkan dan menulis kode.

Tip

Anda tidak perlu mengikuti dokumen ini untuk menambahkan copilot Anda Copilot Studio ke situs web Anda , Facebook, atau Microsoft Teams. Jika tujuan Anda adalah terhubung ke aplikasi berbasis web atau native kustom, pengembang Anda dapat mempelajari selengkapnya di Memublikasikan copilot ke aplikasi seluler atau kustom.

Penting

Petunjuk di bagian ini memerlukan pengembangan perangkat lunak dari Anda atau pengembang Anda. Ini ditujukan untuk profesional TI berpengalaman, seperti admin atau pengembang TI yang memiliki pemahaman solid tentang alat pengembang, utilitas, dan IDE.

Prasyarat

Sampel kode

Cuplikan kode yang digunakan dalam dokumen ini berasal dari kode sampel bot relai.

Referensi

Petunjuk dalam dokumen ini mengacu pada dokumen-dokumen berikut:

Membuat atau menggunakan bot Layanan Azure bot yang ada

Anda memerlukan Bot Azure bot Service yang dapat menyampaikan percakapan antara copilot dan Copilot Studio saluran Azure bot Service.

Diagram bot Relai.

Kode sampel bot relai adalah titik awal yang baik jika Anda tidak memiliki Bot Layanan Bot Azure yang sudah ada. Ini dibangun darikode Microsoft Bot Framework sampel bot yang dapat dikompilasi dan disebarkan ke Azure bot Service. Kode contoh dimaksudkan untuk digunakan sebagai titik awal dan tidak ditujukan untuk digunakan dalam produksi secara langsung. Anda perlu menambahkan kode dan pengoptimalan agar sesuai dengan kebutuhan bisnis Anda.

Jika Anda sudah memiliki bot Azure bot Service, Anda perlu menambahkan Copilot Studio konektor dan kode untuk mengelola sesi percakapan. Selanjutnya Anda dapat menyebarkan bot ke layanan Azure bot dan menyambung ke saluran dengan portal Azure.

Dapatkan parameter copilot Anda Copilot Studio

Untuk terhubung ke copilot yang Anda gunakan untuk Copilot Studio membangun, Anda perlu mengambil nama copilot dan titik akhir token Anda.

  1. Salin nama Copilot Studio kopilot Anda.

    Dapatkan nama bot.

  2. Di menu navigasi di bawah Pengaturan, pilih Saluran.

  3. Pilih saluran yang ingin hubungkan. Skenario ini menggunakan Slack sebagai contoh.

    Saluran Slack.

  4. Untuk menyalin dan menyimpan nilai titik akhir Token, pilih Salin. Anda memerlukan titik akhir untuk menyambungkan copilot Anda ke saluran Azure bot Service.

    Dapatkan parameter bot.

Mengelola sesi percakapan dengan kopilot Anda Copilot Studio

Mungkin ada beberapa percakapan antara saluran Azure bot Service dan Direct Line koneksi dengan copilot Anda Copilot Studio .

Bot Azure bot Service Anda perlu memetakan dan menyampaikan percakapan dari saluran Azure bot Service ke Direct Line percakapan dengan Copilot Studio copilot dan sebaliknya.

Contoh Kode Sampel

Contoh berikut menggunakan sampel dari kode sampel bot relai.

  1. Pada setiap percakapan saluran Azure bot Service eksternal baru dimulai, mulai Copilot Studio percakapan copilot. Lihat Dapatkan Direct Line token dan Gunakan Direct Line untuk berkomunikasi dengan copilot untuk instruksi tentang memulai percakapan baru dengan 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. Untuk mengelola beberapa sesi, Anda perlu mempertahankan pemetaan percakapan saluran Azure bot Service eksternal ke percakapan copilot yang sesuai Copilot Studio . Copilot Studio Percakapan kopilot dapat diidentifikasi dengan dan dihubungkan dengan dua properti: ConversationtId dan Token.

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

    Untuk mengelola siklus hidup percakapan, refresh Direct Line token atau bersihkan percakapan yang tidak aktif. Pelajari selengkapnya tentang refresh token di Refresh Direct Line token. Copilot Studio Percakapan copilot untuk mendukung penyegaran Direct Line token didefinisikan sebagai berikut:

    /// <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. Saat percakapan kopilot baru Copilot Studio dimulai, tambahkan pasangan nilai kunci (external_Azure_Bot_Service_channel_conversationID, PowerVirtualAgentsConversation) ke tabel pemetaan.

    // 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. Untuk melanjutkan percakapan yang ada, setelah pesan saluran Azure bot Service eksternal baru diterima, ambil percakapan yang ada dari tabel pemetaan, menyampaikan aktivitas percakapan eksternal ke copilot Anda Copilot Studio , dan dapatkan respons.

    Contoh berikut menunjukkan penyampaian percakapan dengan mengganti metode 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. Lihat Gunakan Direct Line untuk berkomunikasi dengan kopilot untuk cara mendapatkan Copilot Studio respons kopilot. Saat Copilot Studio respons copilot diterima, lihat Mengurai payload percakapan dari copilot untuk cara mengurai respons ke respons saluran Azure bot Service eksternal.

Contoh penguraian respons dapat ditemukan di relai bot kode sampel ResponseConverter.cs.

Terapkan ke layanan Azure bot

Setelah Anda menyiapkan bot relai Azure bot Service, Anda perlu menyebarkan bot ke Azure bot Service Anda.

Konfigurasi saluran Layanan bot Azure

Anda dapat menyiapkan saluran yang ingin Anda sambungkan dengan masuk ke portal Microsoft Azure dan memilih grup sumber daya Azure bot Service yang Anda sebarkan. Lihat instruksi khusus untuk setiap saluran di Saluran Azure bot Service.