Puoi utilizzare ML Kit per generare risposte ai messaggi utilizzando un modello on-device.
Per generare le risposte rapide, passi a ML Kit un log dei messaggi recenti di una conversazione. Se ML Kit determina che la conversazione è in inglese e che non ha un argomento potenzialmente sensibile, genera fino a tre risposte che puoi suggerire all'utente.
Prima di iniziare
- Se non hai ancora aggiunto Firebase alla tua app, segui i passaggi descritti nella guida introduttiva.
- Includi le librerie ML Kit nel tuo Podfile:
pod 'Firebase/MLCommon', '6.25.0' pod 'Firebase/MLNLSmartReply', '6.25.0'
Dopo aver installato o aggiornato i pod del progetto, assicurati di aprire il progetto Xcode utilizzando il relativo.xcworkspace
. - Nell'app, importa Firebase:
Swift
import Firebase
Objective-C
@import Firebase;
1. Creare un oggetto della cronologia delle conversazioni
Per generare risposte rapide, passi a ML Kit un array di oggetti
TextMessage
ordinato cronologicamente, con il timestamp più antico in primo piano. Ogni volta che l'utente invia o riceve un messaggio, aggiungi il messaggio, il relativo timestamp e l'ID utente del mittente alla cronologia della conversazione.
L'ID utente può essere qualsiasi stringa che identifichi in modo univoco il mittente all'interno della conversazione. L'ID utente non deve corrispondere a dati utente e non deve essere coerente tra le conversazioni o le invocazioni del generatore di risposte intelligenti.
Se il messaggio è stato inviato dall'utente a cui vuoi suggerire le risposte, imposta
isLocalUser
su 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];
Un oggetto della cronologia delle conversazioni è simile al seguente esempio:
Timestamp | ID utente | Utente locale? | Messaggio |
---|---|---|---|
21 feb 2019 13:13:39 PST | true | Sei in viaggio? | |
21 feb 2019 13:15:03 PST | FRIEND0 | falso | Mi dispiace, sono in ritardo. |
Tieni presente che il messaggio più recente nell'esempio riportato sopra proviene da un utente non locale. Questo è importante perché ML Kit suggerisce le risposte da inviare dall'utente della tua app: l'utente locale. Assicurati di passare a ML Kit un log della conversazione che termina con un messaggio a cui l'utente potrebbe voler rispondere.
2. Ricevere risposte ai messaggi
Per generare risposte rapide a un messaggio, ottieni un'istanza di SmartReply
e passa la cronologia della conversazione al relativo metodo 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.
// ...
}
}];
]
Se l'operazione riesce, un oggetto SmartReplySuggestionResult
viene passato al gestore del completamento. Questo oggetto contiene un elenco di massimo tre risposte suggerite che puoi presentare all'utente:
Swift
for suggestion in result.suggestions {
print("Suggested reply: \(suggestion.text)")
}
Objective-C
for (FIRSmartReplySuggestion *suggestion in result.suggestions) {
NSLog(@"Suggested reply: %@", suggestion.text);
}
Tieni presente che ML Kit potrebbe non restituire risultati se il modello non è sicuro della pertinenza delle risposte suggerite, se la conversazione di input non è in inglese o se il modello rileva argomenti sensibili.