สร้างฟีเจอร์ช่วยตอบด้วย ML Kit บน iOS

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

ML Kit จะสร้างข้อความตอบสั้นๆ โดยใช้โมเดลในอุปกรณ์ได้

หากต้องการสร้างการตอบกลับอัจฉริยะ คุณจะต้องส่งบันทึกข้อความล่าสุดในการสนทนา ML Kit ในการสนทนา หาก ML Kit ระบุว่าการสนทนาเป็นภาษาอังกฤษและการสนทนาไม่มีหัวเรื่องที่ละเอียดอ่อน ML Kit จะสร้างการตอบกลับสูงสุด 3 รายการซึ่งคุณสามารถแนะนําให้แก่ผู้ใช้ได้

ลองใช้งาน

ข้อควรทราบก่อนที่จะเริ่มต้น

  1. รวมพ็อด ML Kit ต่อไปนี้ใน Podfile
    pod 'GoogleMLKit/SmartReply', '3.2.0'
    
  2. หลังจากติดตั้งหรืออัปเดตพ็อดของโปรเจ็กต์ ให้เปิดโปรเจ็กต์ Xcode โดยใช้ .xcworkspace XKit เวอร์ชัน 12.4 ขึ้นไปรองรับ ML Kit

1. สร้างออบเจ็กต์ประวัติการสนทนา

หากต้องการสร้างการตอบกลับอัจฉริยะ คุณจะต้องส่งอาร์เรย์ของออบเจ็กต์ TextMessage ที่เรียงตามลําดับเวลาซึ่งมีลําดับเวลาเรียงตามลําดับเวลา โดยเริ่มจากการประทับเวลาแรกสุดก่อน เมื่อใดก็ตามที่ผู้ใช้ส่งหรือรับข้อความ ให้เพิ่มข้อความ การประทับเวลา และรหัสผู้ใช้ของผู้ส่งข้อความลงในประวัติการสนทนา

User-ID อาจเป็นสตริงที่ระบุผู้ส่งที่ไม่ซ้ํากันภายในการสนทนา 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:
MLKTextMessage *message = [[MLKTextMessage alloc]
        initWithText:@"How are you?"
        timestamp:[NSDate date].timeIntervalSince1970
        userID:userId
        isLocalUser:NO];
[conversation addObject:message];

ออบเจ็กต์ประวัติการสนทนามีลักษณะดังนี้

การประทับเวลา รหัสผู้ใช้ isLocalผู้ใช้ ข้อความ
พฤ. 21 ก.พ. 13:13:39 น. PST 2019 จริง คุณกําลังเดินทางอยู่ใช่ไหม
พฤ. 21 ก.พ. 13:15:03 น. PST 2019 เพื่อน 0 เท็จ ไปสายหน่อยนะ

ML Kit จะแนะนําการตอบกลับข้อความล่าสุดในประวัติการสนทนา ข้อความล่าสุดควรมาจากผู้ใช้ที่ไม่ได้อยู่ในเครื่อง ในตัวอย่างข้างต้น ข้อความสุดท้ายในการสนทนามาจากผู้ใช้ **0 ที่ไม่ใช่ผู้ใช้ในพื้นที่ เมื่อใช้ ML Kit บันทึกนี้ ระบบจะแนะนําการตอบกลับข้อความของ FriendsO ว่า "ชําระล่าช้า ขออภัย"

2. รับข้อความตอบกลับ

หากต้องการสร้างการตอบกลับที่ชาญฉลาดสําหรับข้อความ ให้รับอินสแตนซ์ SmartReply และส่งประวัติการสนทนาไปยังเมธอด suggestReplies(for:completion:) ดังนี้

Swift

SmartReply.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 result doesn't contain any suggestions.
    } else if (result.status == .success) {
        // Successfully suggested smart replies.
        // ...
    }
}

Objective-C

MLKSmartReply *smartReply = [MLKSmartReply smartReply];
[smartReply suggestRepliesForMessages:inputText
                           completion:^(MLKSmartReplySuggestionResult * _Nullable result,
                                        NSError * _Nullable error) {
  if (error || !result) {
    return;
  }
  if (result.status == MLKSmartReplyResultStatusNotSupportedLanguage) {
      // The conversation's language isn't supported, so
      // the result doesn't contain any suggestions.
  } else if (result.status == MLKSmartReplyResultStatusSuccess) {
      // Successfully suggested smart replies.
      // ...
  }
}];

หากดําเนินการสําเร็จ ระบบจะส่งออบเจ็กต์ SmartReplySuggestionResult ไปยังเครื่องจัดการกระบวนการ ออบเจ็กต์นี้มีรายการที่แนะนําที่แนะนําสูงสุด 3 รายการ ซึ่งคุณจะนําเสนอให้ผู้ใช้ได้

Swift

for suggestion in result.suggestions {
  print("Suggested reply: \(suggestion.text)")
}

Objective-C

for (MLKSmartReplySuggestion *suggestion in result.suggestions) {
  NSLog(@"Suggested reply: %@", suggestion.text);
}

โปรดทราบว่า ML Kit อาจไม่แสดงผลการค้นหาหากโมเดลไม่มั่นใจในความเกี่ยวข้องของการตอบกลับที่แนะนํา การสนทนาที่ป้อนไม่ได้เป็นภาษาอังกฤษ หรือหากโมเดลตรวจพบเรื่องที่มีความละเอียดอ่อน