แชร์ผ่าน


เผยแพร่เอเจนต์ไปยังช่องทางบริการ Azure Bot

คุณสามารถเชื่อมต่อ ตัวแทน ของคุณกับช่องทาง Azure Bot Service ที่มีอยู่ ซึ่งจะเป็นประโยชน์หากคุณต้องการเชื่อมต่อ ตัวแทน กับลูกค้าในช่องทาง Azure Bot Service

การเพิ่มเอเจนต์ของคุณไปยังช่องทางบริการ Azure Bot ต้องใช้ความเชี่ยวชาญของนักพัฒนาอย่างมาก บทความนี้เขียนขึ้นสำหรับผู้ดูแลระบบไอทีหรือนักพัฒนาที่มีประสบการณ์ในการพัฒนาและเขียนโค้ด

เคล็ดลับ

คุณไม่จำเป็นต้องทำตามเอกสารนี้เพื่อเพิ่มเอเจนต์ Copilot Studio ไปยัง เว็บไซต์ Facebook หรือ Microsoft Teams ของคุณ หากเป้าหมายของคุณคือการเชื่อมต่อกับแอปบนเว็บที่กำหนดเองหรือแอปดั้งเดิม นักพัฒนาของคุณสามารถเรียนรู้เพิ่มเติมได้ที่ เผยแพร่เอเจนต์ในแอปสำหรับอุปกรณ์เคลื่อนที่หรือแบบกำหนดเอง

สำคัญ

คำแนะนำในส่วนนี้ต้องการการพัฒนาซอฟต์แวร์จากคุณหรือนักพัฒนาของคุณ ซึ่งมีไว้สำหรับผู้เชี่ยวชาญด้านไอทีที่มีประสบการณ์ เช่น ผู้ดูแลระบบไอทีหรือนักพัฒนาที่มีความเข้าใจอย่างถ่องแท้เกี่ยวกับเครื่องมือสำหรับนักพัฒนา ระบบสาธารณูปโภค และ IDE

ข้อกำหนดเบื้องต้น

ตัวอย่างโค้ด

ข้อมูลโค้ดที่ใช้ในเอกสารนี้มาจาก โค้ดตัวอย่างบอทรีเลย์

การอ้างอิง

คำแนะนำในเอกสารนี้อ้างอิงเอกสารต่อไปนี้:

สร้างหรือใช้บอทบริการ Azure Bot ที่มีอยู่

คุณต้องมีบอทบริการ Azure Bot ที่สามารถถ่ายทอดการสนทนาระหว่างเอเจนต์ Copilot Studio ช่องทางบริการ Azure Bot ของคุณ

แผนภาพบอทรีเลย์

โค้ดตัวอย่างบอทรีเลย์ เป็นจุดเริ่มต้นที่ดีหากคุณไม่มีบอทบริการ Azure Bot อยู่แล้ว ซึ่งถูกสร้างจาก โค้ดตัวอย่าง ของบอท Microsoft Bot Framework ที่สามารถรวบรวมและปรับใช้กับบริการ Azure Bot โค้ดตัวอย่างมีขึ้นเพื่อใช้เป็นจุดเริ่มต้นและไม่ได้มีไว้เพื่อใช้ในการผลิตโดยตรง คุณต้องเพิ่มโค้ดและการเพิ่มประสิทธิภาพเพื่อให้ตรงกับความต้องการทางธุรกิจของคุณ

หากคุณมีบอทบริการ Azure Bot อยู่แล้ว คุณต้องเพิ่มตัวเชื่อมต่อและโค้ด Copilot Studio เพื่อจัดการเซสชันการสนทนา จากนั้นคุณสามารถปรับใช้บอทกับบริการ Azure Bot และเชื่อมต่อกับช่องทางด้วยพอร์ทัล Azure

รับพารามิเตอร์เอเจนต์ Copilot Studio ของคุณ

หากต้องการเชื่อมต่อกับ ตัวแทน ที่คุณสร้างขึ้น Copilot Studio คุณจะต้องดึงชื่อและจุดสิ้นสุดโทเค็นของ ตัวแทน

  1. คัดลอกชื่อเอเจนต์ของคุณใน Copilot Studio

    รับชื่อบอท

  2. ในเมนูนำทาง ภายใต้ การตั้งค่า เลือก ช่องทาง

  3. เลือกช่องทางที่คุณต้องการเชื่อมต่อ สถานการณ์นี้ใช้ Slack เป็นตัวอย่าง

    ช่องทาง Slack

  4. หากต้องการคัดลอกและบันทึกค่า ตำแหน่งข้อมูลโทเค็น ให้เลือก คัดลอก คุณต้องมีปลายทางเพื่อเชื่อมต่อ ตัวแทน ของคุณกับช่องทาง Azure Bot Service

    รับพารามิเตอร์บอท

จัดการเซสชันการสนทนาด้วยเอเจนต์ Copilot Studio

อาจมีการสนทนาหลายรายการระหว่างช่องทางบริการ Azure Bot และการเชื่อมต่อ Direct Line กับเอเจนต์ Copilot Studio

บอทบริการ Azure Bot ของคุณต้องแมปและถ่ายทอดการสนทนาจากช่องทางบริการ Azure Bot ไปยังการสนทนา Direct Line กับเอเจนต์ Copilot Studio และในทางกลับกัน

โค้ดตัวอย่าง

ตัวอย่างต่อไปนี้ใช้ตัวอย่างจาก โค้ดตัวอย่างบอทรีเลย์

  1. ในการเริ่มการสนทนาช่องทางบริการ Azure Bot ภายนอกใหม่ทุกครั้ง ให้เริ่มต้นการสนทนาของเอเจนต์ Copilot Studio อ้างถึง รับโทเค็น Direct Line และ ใช้ Direct Line เพื่อสื่อสารกับเอเจนต์ สำหรับคำแนะนำในการเริ่มการสนทนาใหม่กับบอท

    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. ในการจัดการหลายเซสชัน คุณต้องรักษาการแมปการสนทนาในช่องทางบริการ Azure Bot ภายนอกให้สอดคล้องกันกับการสนทนาของเอเจนต์ Copilot Studio การสนทนาของเอเจนต์ Copilot Studio สามารถระบุและเชื่อมต่อกับคุณสมบัติสองประการ: ConversationtId และ Token

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

    ในการจัดการวงจรการสนทนา ให้รีเฟรชโทเค็น Direct Line หรือล้างการสนทนาที่ไม่ได้ใช้งาน เรียนรู้เพิ่มเติมเกี่ยวกับการรีเฟรชโทเค็นที่ รีเฟรชโทเค็น Direct Line การสนทนากับเอเจนต์ Copilot Studio เพื่อสนับสนุนการรีเฟรชโทเค็น Direct Line มีการกำหนดไว้ดังนี้:

    /// <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. เมื่อเริ่มการสนทนากับเอเจนต์ Copilot Studio ใหม่ ให้เพิ่มคู่ค่าคีย์ (external_Azure_Bot_Service_channel_conversationID,PowerVirtualAgentsConversation) ไปยังตารางการแมป

    // 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. เมื่อต้องการดำเนินการต่อในการสนทนาที่มีอยู่ เมื่อได้รับข้อความช่องทางบริการ Azure Bot ภายนอกใหม่ ให้ดึงการสนทนาที่มีอยู่จากตารางการแมป ถ่ายทอดกิจกรรมการสนทนาภายนอกไปยังเอเจนต์ Copilot Studio ของคุณ และรับคำตอบ

    ตัวอย่างต่อไปนี้แสดงการถ่ายทอดการสนทนาโดยการลบล้างเมธอด 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. โปรดดู ใช้ Direct Line เพื่อสื่อสารกับเอเจนต์ สำหรับวิธีรับการตอบสนองของเอเจนต์ Copilot Studio เมื่อได้รับการตอบของเอเจนต์ Copilot Studio โปรดดู แยกวิเคราะห์ส่วนข้อมูลการสนทนาจากเอเจนต์ สำหรับวิธีการแยกวิเคราะห์การตอบไปยังการตอบกลับในช่องทางบริการ Azure Bot ภายนอก

ตัวอย่างของการแยกวิเคราะห์คำตอบสามารถพบได้ใน โค้ดตัวอย่างบอทรีเลย์ ResponseConverter.cs.

ปรับใช้กับบริการ Azure Bot

หลังจากที่คุณเตรียมบอทรีเลย์บริการ Azure Bot แล้ว คุณต้อง ปรับใช้บอทกับบริการ Azure Bot ของคุณ

ตั้งค่าช่องทางบริการ Azure Bot

คุณสามารถตั้งค่าช่องทางที่คุณต้องการเชื่อมต่อได้โดยเข้าสู่ระบบพอร์ทัล Azure และเลือกกลุ่มทรัพยากรบริการ Azure Bot Service ที่คุณได้ปรับใช้ ดูคำแนะนำเฉพาะสำหรับแต่ละช่องทางได้ที่ ช่องทางบริการ Azure Bot