你可以使用 ML Kit 在裝置上生成訊息回覆 模型
如要產生智慧回覆,請將 ML Kit 近期訊息記錄傳送至 對話。如果 ML Kit 判斷對話是以英文表示對話, 就沒有敏感主題的 ML Kit 最多產生 3 則回覆,您可當做建議使用者參考。
事前準備
- 如果尚未將 Firebase 加入應用程式,請按照下列步驟操作: 入門指南中的步驟。
- 在 Podfile 中加入 ML Kit 程式庫:
pod 'Firebase/MLCommon', '6.25.0' pod 'Firebase/MLNLSmartReply', '6.25.0'
安裝或更新專案的 Pod 後,請務必開啟 Xcode 專案.xcworkspace
。 - 在應用程式中匯入 Firebase:
Swift
import Firebase
Objective-C
@import Firebase;
1. 建立對話記錄物件
如要產生智慧回覆功能,您必須傳送 ML Kit 依時間順序排序的
TextMessage
物件,具有最早的時間戳記。每當使用者
新增或接收訊息、新增訊息、其時間戳記以及
並將傳送者的使用者 ID 加入對話記錄中。
使用者 ID 可以是任何能用來識別 對話。User-ID 不需要對應至任何使用者資料 而且使用者 ID 不必保持一致 叫用智慧回覆產生器。
如果訊息是由您想建議回覆的使用者所寄送,請設定
isLocalUser
設為 true。
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];
對話記錄物件如下列範例所示:
時間戳記 | 使用者 ID | 本機使用者? | 訊息 |
---|---|---|---|
2019 年 2 月 21 日星期四 13:13:39 (太平洋標準時間) | 是 | 你正在路上嗎? | |
2019 年 2 月 21 日星期四 13:15:03 (太平洋標準時間) | 朋友 | false | 抱歉,我遲到了! |
請注意,上述範例中最新的訊息並非來自本機 內容。這很重要,因為 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 可能不會傳回結果 建議回覆的關聯性,但輸入對話不在 指定語言,或模型偵測到敏感主題。