Check out what’s new from Firebase at Google I/O 2022. Learn more

สร้างการตอบกลับอัจฉริยะด้วย ML Kit บน iOS

คุณสามารถใช้ ML Kit เพื่อสร้างการตอบกลับข้อความโดยใช้รุ่นในอุปกรณ์

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

ก่อนจะเริ่ม

  1. หากคุณยังไม่ได้เพิ่ม Firebase ในแอปของคุณ ให้ทำตามขั้นตอนในคู่มือ การเริ่มต้นใช้ งาน
  2. รวมไลบรารี ML Kit ใน Podfile ของคุณ:
    pod 'Firebase/MLCommon', '6.25.0'
    pod 'Firebase/MLNLSmartReply', '6.25.0'
    
    หลังจากที่คุณติดตั้งหรืออัปเดต Pod ของโปรเจ็กต์แล้ว อย่าลืมเปิดโปรเจ็กต์ Xcode โดยใช้ . .xcworkspace
  3. ในแอปของคุณ ให้นำเข้า Firebase:

    Swift

    import Firebase

    วัตถุประสงค์-C

    @import Firebase;

1. สร้างวัตถุประวัติการสนทนา

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

ID ผู้ใช้สามารถเป็นสตริงใดๆ ที่ระบุผู้ส่งภายในการสนทนาได้โดยไม่ซ้ำกัน ID ผู้ใช้ไม่จำเป็นต้องสอดคล้องกับข้อมูลผู้ใช้ใดๆ และ 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)

วัตถุประสงค์-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];

วัตถุประวัติการสนทนาดูเหมือนตัวอย่างต่อไปนี้:

การประทับเวลา 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.
        // ...
    }
}

วัตถุประสงค์-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)")
}

วัตถุประสงค์-C

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

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