คุณสามารถใช้ ML Kit เพื่อสร้างข้อความตอบกลับโดยใช้ในอุปกรณ์ โมเดล
หากต้องการสร้างสมาร์ทรีพลาย คุณจะต้องส่งบันทึกข้อความล่าสุดใน ML Kit ไปยัง การสนทนา ถ้า ML Kit ระบุว่าการสนทนาเป็นภาษาอังกฤษ การสนทนาไม่มีเรื่องที่อาจมีความละเอียดอ่อน ML Kit จะสร้างคำตอบสูงสุด 3 คำตอบ ซึ่งคุณสามารถแนะนำให้ผู้ใช้ได้
ก่อนเริ่มต้น
- หากยังไม่ได้เพิ่ม Firebase ลงในแอป ให้ดำเนินการดังนี้ ขั้นตอนในคู่มือเริ่มต้นใช้งาน
- รวมไลบรารี ML Kit ไว้ใน Podfile ดังนี้
pod 'Firebase/MLCommon', '6.25.0' pod 'Firebase/MLNLSmartReply', '6.25.0'
หลังจากติดตั้งหรืออัปเดตพ็อดของโปรเจ็กต์แล้ว อย่าลืมเปิด Xcode โดยใช้.xcworkspace
- ในแอป ให้นำเข้า Firebase ดังนี้
Swift
import Firebase
Objective-C
@import Firebase;
1. สร้างออบเจ็กต์ประวัติการสนทนา
หากต้องการสร้างสมาร์ทรีพลาย คุณต้องส่งอาร์เรย์ ML Kit ตามลำดับเวลา
ออบเจ็กต์ TextMessage
รายการ โดยมีการประทับเวลาแรกสุดก่อน เมื่อใดก็ตามที่ผู้ใช้
ส่งหรือรับข้อความ เพิ่มข้อความ การประทับเวลา และข้อความ
รหัสผู้ใช้ของผู้ส่งไปยังประวัติการสนทนา
User ID อาจเป็นสตริงใดๆ ที่ระบุผู้ส่งโดยไม่ซ้ำกันภายใน การสนทนา User-ID ไม่จำเป็นต้องสอดคล้องกับข้อมูลผู้ใช้ และรหัสผู้ใช้ไม่จำเป็นต้องสอดคล้องกันระหว่างการสนทนา หรือ คำขอของโปรแกรมสร้างสมาร์ทรีพลาย
หากผู้ใช้ที่คุณต้องการแนะนำการตอบกลับเป็นผู้ส่งข้อความ ให้ตั้งค่า
isLocalUser
เป็นจริง
Swift
var conversation: [TextMessage] = []
// Then, for each message sent and received:
let message = TextMessage(
text: "How are you?",
timestamp: Date().timeIntervalSince1970,
userID: "userId",
isLocalUser: false)
conversation.append(message)
Objective-C
NSMutableArray *conversation = [NSMutableArray array];
// Then, for each message sent and received:
FIRTextMessage *message = [[FIRTextMessage alloc]
initWithText:@"How are you?"
timestamp:[NSDate date].timeIntervalSince1970
userID:userId
isLocalUser:NO];
[conversation addObject:message];
ออบเจ็กต์ประวัติการสนทนามีลักษณะดังตัวอย่างต่อไปนี้
การประทับเวลา | User ID | เป็นผู้ใช้ในเครื่องหรือไม่ | ข้อความ |
---|---|---|---|
พฤ. 21 ก.พ. 13:13:39 PST 2019 | จริง | คุณกำลังเดินทางหรือเปล่า | |
พฤ. 21 ก.พ. 13:15:03 น. PST 2019 | เพื่อน0 | เท็จ | ขออภัยในความไม่สะดวก |
โปรดทราบว่าข้อความล่าสุดในตัวอย่างด้านบนมาจากข้อความนอกพื้นที่ ผู้ใช้ ข้อความนี้สำคัญเนื่องจาก ML Kit แนะนำคำตอบที่ต้องการให้ส่ง โดยผู้ใช้แอป: ผู้ใช้ในเครื่อง คุณควรตรวจสอบว่าได้ผ่าน ML Kit บันทึกการสนทนาที่ลงท้ายด้วยข้อความที่ผู้ใช้ของคุณอาจ ต้องการตอบกลับ
2. รับข้อความตอบกลับ
หากต้องการสร้างสมาร์ทรีพลายในข้อความ ให้รับอินสแตนซ์ของ SmartReply
และส่งผ่าน
ประวัติการสนทนาเป็นเมธอด suggestReplies(for:completion:)
:
Swift
let naturalLanguage = NaturalLanguage.naturalLanguage()
naturalLanguage.smartReply().suggestReplies(for: conversation) { result, error in
guard error == nil, let result = result else {
return
}
if (result.status == .notSupportedLanguage) {
// The conversation's language isn't supported, so the
// the result doesn't contain any suggestions.
} else if (result.status == .success) {
// Successfully suggested smart replies.
// ...
}
}
Objective-C
FIRNaturalLanguage *naturalLanguage = [FIRNaturalLanguage naturalLanguage];
FIRSmartReply *smartReply = [naturalLanguage smartReply];
[smartReply suggestRepliesForMessages:inputText
completion:^(FIRSmartReplySuggestionResult * _Nullable result,
NSError * _Nullable error) {
if (error || !result) {
return;
}
if (result.status == FIRSmartReplyResultStatusNotSupportedLanguage) {
// The conversation's language isn't supported, so the
// the result doesn't contain any suggestions.
} else if (result.status == FIRSmartReplyResultStatusSuccess) {
// Successfully suggested smart replies.
// ...
}
}];
]
หากการดำเนินการสำเร็จ ระบบจะส่งออบเจ็กต์ SmartReplySuggestionResult
ไปยัง
ตัวแฮนเดิลการเสร็จสมบูรณ์ ออบเจ็กต์นี้มีรายการที่แนะนำไม่เกิน 3 รายการ
ซึ่งสามารถนำเสนอแก่ผู้ใช้ได้ ดังนี้
Swift
for suggestion in result.suggestions {
print("Suggested reply: \(suggestion.text)")
}
Objective-C
for (FIRSmartReplySuggestion *suggestion in result.suggestions) {
NSLog(@"Suggested reply: %@", suggestion.text);
}
โปรดทราบว่า ML Kit อาจไม่แสดงผลลัพธ์หากโมเดลไม่มั่นใจใน ความเกี่ยวข้องของการตอบกลับที่แนะนำ การสนทนาที่เป็นอินพุตไม่ได้อยู่ใน ภาษาอังกฤษ หรือหากโมเดลตรวจพบหัวข้อที่มีความละเอียดอ่อน