หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
คุณสามารถเชื่อมต่อเอเจนต์ของคุณกับแอปที่กำหนดเองเพื่อให้ผู้ใช้แอปโต้ตอบกับเอเจนต์ได้โดยตรงจากภายในแอปของคุณ
ในกรณีส่วนใหญ่ แอปที่กำหนดเองของคุณเป็นแอปบนอุปกรณ์เคลื่อนที่ที่เป็นทั้งแอปบนเว็บหรือแอปดั้งเดิมหรืออะแดปเตอร์สำหรับบริการอื่น ๆ ที่ธุรกิจของคุณต้องการ
มีขั้นตอนต่าง ๆ ในการเชื่อมต่อกับแอปบนมือถือของคุณ ขึ้นอยู่กับว่าแอปของคุณเป็นแอปที่ทำงานบนเว็บหรือแอปดั้งเดิม
การเชื่อมต่อเอเจนต์ของคุณกับแอปบนเว็บนั้นค่อนข้างตรงไปตรงมาเนื่องจากเป็นการคัดลอกส่วนย่อยของโค้ดลงในแอปของคุณ อย่างไรก็ตาม ทั้งแอปบนเว็บและแอปดั้งเดิมหรือแอปที่กำหนดเองยังคงต้องใช้ความเชี่ยวชาญของนักพัฒนาในการผสานรวมเอเจนต์เข้ากับแอปของคุณอย่างสมบูรณ์ ทั้งสองกระบวนงานจะอธิบายในบทความนี้
ข้อกำหนดเบื้องต้น
- .NET Core SDK รุ่น 2.1
- แพ็คเกจ NuGet Microsoft.Bot.Connector.DirectLine
- เอเจนต์ที่สร้างขึ้นใน Copilot Studio ที่คุณต้องการเชื่อมต่อกับแอปของคุณ
เชื่อมต่อเอเจนต์ของคุณกับแอปบนเว็บ
ใน Copilot Studio ในเมนูการนำทาง ให้เลือก ช่องทาง
เลือกไทล์ แอปบนมือถือ เพื่อเปิดหน้าต่างการกำหนดค่า
คัดลอกรหัสภายใต้ส่ว แอปบนเว็บ และมอบให้กับนักพัฒนาแอปของคุณเพื่อเพิ่มลงในแอปบนเว็บของคุณ
เชื่อมต่อเอเจนต์ของคุณกับแอปดั้งเดิมหรือกำหนดเอง
เคล็ดลับ
แม้ว่าส่วนนี้จะอธิบายถึงวิธีการเชื่อมต่อกับแอปบนมือถือ แต่กระบวนการเดียวกันนี้สามารถนำไปใช้กับแอปแบบกำหนดเองหรือแบบดั้งเดิม เช่น แอป IoT (Internet of Things)
หากเป้าหมายของคุณคือการเชื่อมต่อกับช่องทางบริการ Azure Bot นอกจากทำตามคำแนะนำที่นี่แล้ว นักพัฒนาของคุณสามารถเรียนรู้เพิ่มเติมได้ที่ เผยแพร่เอเจนต์ของคุณกับช่องทางบริการ Azure Bot
สำคัญ
คำแนะนำในส่วนนี้ต้องการการพัฒนาซอฟต์แวร์จากคุณหรือนักพัฒนาของคุณ คำแนะนำนี้ถือว่าผู้ใช้มีระดับความเชี่ยวชาญที่เหมาะสมสำหรับผู้เชี่ยวชาญด้านไอทีที่มีประสบการณ์ เช่น ผู้ดูแลระบบไอทีหรือผู้พัฒนาซอฟต์แวร์ที่มีความเข้าใจอย่างมั่นคงเกี่ยวกับเครื่องมือสำหรับนักพัฒนา ยูทิลิตี และ IDE (Integrated Development Environment)
การอ้างอิง
คำแนะนำในเอกสารนี้อ้างอิงเอกสารต้นทางต่อไปนี้:
- Bot Framework Direct Line API
- การรับรองความถูกต้องของ Direct Line
- ตัวแปรตามบริบทพร้อมใช้งานเมื่อมีการส่งต่อ
- กิจกรรม Microsoft Bot Framework
ดึงข้อมูลพารามิเตอร์เอเจนต์ Copilot Studio ของคุณ
หากต้องการเชื่อมต่อกับเอเจนต์ที่คุณสร้างขึ้น คุณจะต้องดึงชื่อเอเจนต์และปลายทางโทเค็นของเอเจนต์เพื่อระบุ
ใน Copilot Studio ไปที่หน้า ภาพรวม ของเอเจนต์ของคุณ และคัดลอกชื่อเอเจนต์ของคุณ
เลือก ช่องทาง>แอปสำหรับอุปกรณ์เคลื่อนที่
บนหน้า แอปสำหรับอุปกรณ์เคลื่อนที่ ถัดจาก ตำแหน่งข้อมูลโทเค็น ให้เลือก คัดลอก คุณต้องมีปลายทางนี้สำหรับขั้นตอน รับโทเค็น Direct Line
รับโทเค็น Direct Line
เพื่อเริ่มการสนทนากับเอเจนต์ของคุณ คุณต้องมีโทเค็น Direct Line โทเค็นนี้สามารถรับได้โดยการส่งคำขอ GET ไปยังปลายทางที่ระบุภายในหน้าจอ Copilot Studio โทเค็นนี้จะต้องใช้เป็นส่วนหัวสำหรับการเรียก Directline API ในภายหลัง
ตัวอย่าง:
GET <BOT TOKEN ENDPOINT>
หากคำขอสำเร็จ ปลายทางจะส่งกลับโทเค็น Direct Line เวลาหมดอายุ และ conversationId สำหรับเอเจนต์ที่ร้องขอ
ตัวอย่าง:
{
"token": "RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0y8qbOF5xPGfiCpg4Fv0y8qqbOF5x8qbOF5xn",
"expires_in": 3600,
"conversationId": "abc123"
}
รับตัวอย่างรหัสโทเค็น Direct Line
ตัวอย่างต่อไปนี้ได้รับโทเค็น Direct Line สำหรับเอเจนต์ Copilot Studio
/// <summary>
/// Get directline token for connecting bot
/// </summary>
/// <returns>directline token as string</returns>
public async Task<DirectLineToken> GetTokenAsync(string url)
{
try
{
return await _httpClient.GetFromJsonAsync<DirectLineToken>(url);
}
catch (HttpRequestException ex)
{
throw ex;
}
}
/// <summary>
/// class for serialization/deserialization DirectLineToken
/// </summary>
public class DirectLineToken
{
public string Token { get; set; }
public int Expires_in { get; set; }
public string ConversationId { get; set; }
}
ออบเจ็กต์การตอบสนองเหมือนกับคำขอ GET ที่เราเห็นก่อนหน้านี้
{
"token": "RCurR_XV9ZA.cwA.BKA.iaJrC8xpy8qbOF5xnR2vtCX7CZj0LdjAPGfiCpg4Fv0y8qbOF5xPGfiCpg4Fv0y8qqbOF5x8qbOF5xn",
"expires_in": 3600,
"conversationId": "abc123"
}
ใช้ Direct Line เพื่อสื่อสารกับเอเจนต์
หลังจากดึงโทเค็น Direct Line คุณก็พร้อมที่จะสนทนากับเอเจนต์ Copilot Studio ของคุณด้วย Direct Line หากต้องการเริ่มการสนทนา ส่งและรับข้อความ โปรดทำตามคำแนะนำที่ Bot Framework Direct Line API
ตัวอย่างต่อไปนี้เริ่มการสนทนา และส่งและรับข้อความจากเอเจนต์ Copilot Studio
เริ่มต้นอินสแตนซ์ DirectLineClient ด้วยโทเค็น Direct Line และเริ่มการสนทนา:
// 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; }เมื่อเริ่มต้นแล้ว สามารถระบุและเชื่อมต่อการสนทนาแต่ละรายการโดยใช้การรวมกันของ
tokenและconversationtIdส่งข้อความผู้ใช้ไปยังการสนทนาที่มีอยู่:// Use the retrieved token to create a DirectLineClient instance // Use the conversationId from above step // endConversationMessage is your predefined message indicating that user wants to quit the chat while (!string.Equals(inputMessage = /*Get_User_Input()*/, endConversationMessage, StringComparison.OrdinalIgnoreCase)) { using (var directLineClient = new DirectLineClient(token)) { // Send user message using directlineClient // Payload is a Microsoft.Bot.Connector.DirectLine.Activity await directLineClient.Conversations.PostActivityAsync(conversationtId, new Activity() { Type = ActivityTypes.Message, From = new ChannelAccount { Id = "userId", Name = "userName" }, Text = inputMessage, TextFormat = "plain", Locale = "en-Us", }); } }ดึงการตอบสนองของเอเจนต์โดยใช้
tokenและconversationIdเดียวกัน กิจกรรมการตอบกลับจาก Direct Line ที่ดึงมานั้นประกอบด้วยข้อความทั้งจากผู้ใช้และเอเจนต์ คุณสามารถกรองกิจกรรมการตอบด้วยชื่อเอเจนต์ของคุณเพื่อรับเฉพาะข้อความตอบรับของเอเจนต์// Use the same token to create a directLineClient using (var directLineClient = new DirectLineClient(token)) { // To get the first response set string watermark = null // More information about watermark is available at // https://learn.microsoft.com/azure/bot-service/rest-api/bot-framework-rest-direct-line-1-1-receive-messages?view=azure-bot-service-4.0 // response from bot is of type Microsoft.Bot.Connector.DirectLine.ActivitySet ActivitySet response = await directLineClient.Conversations.GetActivitiesAsync(conversationtId, watermark); // update watermark from response watermark = response?.Watermark; // response contains set of Activity from both user and bot // To display bot response only, filter Activity.From.Name equals to your bot name List<Activity> botResponses = response?.Activities?.Where(x => x.Type == ActivityTypes.Message && string.Equals(x.From.Name, /*Bot_Name*/, StringComparison.Ordinal)).ToList(); // Display botResponses }
รีเฟรชโทเค็น Direct Line
คุณอาจต้องเพิ่มรหัสเพื่อรีเฟรชโทเค็น Direct Line หากโปรแกรมประยุกต์ของคุณมีการสนทนาที่ยาวนานกับเอเจนต์ โทเค็นหมดอายุ แต่สามารถรีเฟรชได้ก่อนหมดอายุ เรียนรู้เพิ่มเติมได้ที่ การรับรองความถูกต้อง Direct Line
ตัวอย่างต่อไปนี้จะรีเฟรชโทเค็นสำหรับการสนทนา Copilot Studio ที่มีอยู่:
// DirectLine provides a token refresh method
// Requires the currentToken valid when refreshing
string refreshToken = new DirectLineClient(currentToken).Tokens.RefreshToken().Token;
// create a new directline client with refreshToken
directLineClient = new DirectLineClient(refreshToken);
// use new directLineClient to communicate to your bot
แยกวิเคราะห์ส่วนข้อมูลการสนทนาจากเอเจนต์
หลังจากที่คุณเริ่มการสนทนากับเอเจนต์แล้ว เพย์โหลด JSON ของการสนทนาจะใช้กิจกรรม Direct Line มาตรฐานของ Microsoft Bot Framework คุณสามารถเรียนรู้เพิ่มเติมได้ที่ Bot Framework Direct Line API
จัดการกิจกรรมการส่งต่อ
หากแอปพลิเคชันของคุณจำเป็นต้องส่งต่อไปยังผู้ให้บริการตัวแทนสนทนาสด คุณต้องจัดการกิจกรรมการส่งต่อ กิจกรรมการส่งต่อจะถูกส่งเมื่อกดโหนด "โอนให้ตัวแทน" คุณสามารถ เรียนรู้เพิ่มเติมเกี่ยวกับส่วนข้อมูลของกิจกรรมการส่งต่อ
ทริกเกอร์ข้อความต้อนรับ
หากคุณต้องการให้เอเจนต์ของคุณส่งหัวข้อของระบบคำทักทายโดยอัตโนมัติเมื่อผู้ใช้เริ่มการสนทนา คุณสามารถส่งกิจกรรมด้วย Type=event และ Name=startConversation