เผยแพร่เอเจนต์ไปยังช่องทางบริการ Azure Bot
คุณสามารถเชื่อมต่อ ตัวแทน ของคุณกับช่องทาง Azure Bot Service ที่มีอยู่ ซึ่งจะเป็นประโยชน์หากคุณต้องการเชื่อมต่อ ตัวแทน กับลูกค้าในช่องทาง Azure Bot Service
การเพิ่มเอเจนต์ของคุณไปยังช่องทางบริการ Azure Bot ต้องใช้ความเชี่ยวชาญของนักพัฒนาอย่างมาก บทความนี้เขียนขึ้นสำหรับผู้ดูแลระบบไอทีหรือนักพัฒนาที่มีประสบการณ์ในการพัฒนาและเขียนโค้ด
เคล็ดลับ
คุณไม่จำเป็นต้องทำตามเอกสารนี้เพื่อเพิ่มเอเจนต์ Copilot Studio ไปยัง เว็บไซต์ Facebook หรือ Microsoft Teams ของคุณ หากเป้าหมายของคุณคือการเชื่อมต่อกับแอปบนเว็บที่กำหนดเองหรือแอปดั้งเดิม นักพัฒนาของคุณสามารถเรียนรู้เพิ่มเติมได้ที่ เผยแพร่เอเจนต์ในแอปสำหรับอุปกรณ์เคลื่อนที่หรือแบบกำหนดเอง
สำคัญ
คำแนะนำในส่วนนี้ต้องการการพัฒนาซอฟต์แวร์จากคุณหรือนักพัฒนาของคุณ ซึ่งมีไว้สำหรับผู้เชี่ยวชาญด้านไอทีที่มีประสบการณ์ เช่น ผู้ดูแลระบบไอทีหรือนักพัฒนาที่มีความเข้าใจอย่างถ่องแท้เกี่ยวกับเครื่องมือสำหรับนักพัฒนา ระบบสาธารณูปโภค และ IDE
ข้อกำหนดเบื้องต้น
- การสมัครใช้บริการ Azure Bot
- บอทบริการ Azure Bot ที่ใช้ v4 SDK
- .NET Core SDK รุ่น 2.1
- แพ็คเกจ NuGet Microsoft.Bot.Connector.DirectLine
- เอเจนต์ที่สร้างขึ้นใน Copilot Studio ที่คุณต้องการเชื่อมต่อกับช่องทางบริการ Azure Bot
- เผยแพร่เอเจนต์ไปยังแอปสำหรับอุปกรณ์เคลื่อนที่หรือแบบกำหนดเอง
ตัวอย่างโค้ด
ข้อมูลโค้ดที่ใช้ในเอกสารนี้มาจาก โค้ดตัวอย่างบอทรีเลย์
การอ้างอิง
คำแนะนำในเอกสารนี้อ้างอิงเอกสารต่อไปนี้:
- ปรับใช้บอทของคุณกับ Azure สำหรับคำแนะนำในการปรับใช้บอทบริการ Azure Bot
- ช่องทางบริการ Azure Bot เพื่อเชื่อมต่อกับช่องทางที่รองรับบริการ Azure Bot
- บริการ Azure Bot ดีบักด้วยโปรแกรมจำลอง สำหรับคำแนะนำในการดีบักบอทบริการ Azure Bot
สร้างหรือใช้บอทบริการ 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 คุณจะต้องดึงชื่อและจุดสิ้นสุดโทเค็นของ ตัวแทน
คัดลอกชื่อเอเจนต์ของคุณใน Copilot Studio
ในเมนูนำทาง ภายใต้ การตั้งค่า เลือก ช่องทาง
เลือกช่องทางที่คุณต้องการเชื่อมต่อ สถานการณ์นี้ใช้ Slack เป็นตัวอย่าง
หากต้องการคัดลอกและบันทึกค่า ตำแหน่งข้อมูลโทเค็น ให้เลือก คัดลอก คุณต้องมีปลายทางเพื่อเชื่อมต่อ ตัวแทน ของคุณกับช่องทาง Azure Bot Service
จัดการเซสชันการสนทนาด้วยเอเจนต์ Copilot Studio
อาจมีการสนทนาหลายรายการระหว่างช่องทางบริการ Azure Bot และการเชื่อมต่อ Direct Line กับเอเจนต์ Copilot Studio
บอทบริการ Azure Bot ของคุณต้องแมปและถ่ายทอดการสนทนาจากช่องทางบริการ Azure Bot ไปยังการสนทนา Direct Line กับเอเจนต์ Copilot Studio และในทางกลับกัน
โค้ดตัวอย่าง
ตัวอย่างต่อไปนี้ใช้ตัวอย่างจาก โค้ดตัวอย่างบอทรีเลย์
ในการเริ่มการสนทนาช่องทางบริการ 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; }
ในการจัดการหลายเซสชัน คุณต้องรักษาการแมปการสนทนาในช่องทางบริการ 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 }
เมื่อเริ่มการสนทนากับเอเจนต์ 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, };
เมื่อต้องการดำเนินการต่อในการสนทนาที่มีอยู่ เมื่อได้รับข้อความช่องทางบริการ 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; }
โปรดดู ใช้ Direct Line เพื่อสื่อสารกับเอเจนต์ สำหรับวิธีรับการตอบสนองของเอเจนต์ Copilot Studio เมื่อได้รับการตอบของเอเจนต์ Copilot Studio โปรดดู แยกวิเคราะห์ส่วนข้อมูลการสนทนาจากเอเจนต์ สำหรับวิธีการแยกวิเคราะห์การตอบไปยังการตอบกลับในช่องทางบริการ Azure Bot ภายนอก
ตัวอย่างของการแยกวิเคราะห์คำตอบสามารถพบได้ใน โค้ดตัวอย่างบอทรีเลย์ ResponseConverter.cs.
ปรับใช้กับบริการ Azure Bot
หลังจากที่คุณเตรียมบอทรีเลย์บริการ Azure Bot แล้ว คุณต้อง ปรับใช้บอทกับบริการ Azure Bot ของคุณ
ตั้งค่าช่องทางบริการ Azure Bot
คุณสามารถตั้งค่าช่องทางที่คุณต้องการเชื่อมต่อได้โดยเข้าสู่ระบบพอร์ทัล Azure และเลือกกลุ่มทรัพยากรบริการ Azure Bot Service ที่คุณได้ปรับใช้ ดูคำแนะนำเฉพาะสำหรับแต่ละช่องทางได้ที่ ช่องทางบริการ Azure Bot