Puoi usare ML Kit per generare risposte ai messaggi usando un modello sul dispositivo.
Per generare risposte intelligenti, trasmetti a ML Kit un registro dei messaggi recenti in una conversazione. Se ML Kit determina che la conversazione è in inglese e che non tratta argomenti potenzialmente sensibili, ML Kit genera fino a tre risposte, che puoi suggerire al tuo utente.
Prima di iniziare
- Se non hai già aggiunto Firebase alla tua app, fallo seguendo i passaggi 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 tuo progetto, assicurati di aprire il tuo progetto Xcode utilizzando il relativo.xcworkspace
. - Nella tua app, importa Firebase:
Veloce
import Firebase
Obiettivo-C
@import Firebase;
1. Crea un oggetto cronologia conversazioni
Per generare risposte intelligenti, passi a ML Kit una matrice ordinata cronologicamente di oggetti TextMessage
, con prima il timestamp più recente. Ogni volta che l'utente invia o riceve un messaggio, aggiungi il messaggio, il relativo timestamp e l'ID utente del mittente del messaggio alla cronologia delle conversazioni.
L'ID utente può essere qualsiasi stringa che identifica in modo univoco il mittente all'interno della conversazione. Non è necessario che l'ID utente corrisponda ad alcun dato utente e non è necessario che sia coerente tra le conversazioni o le invocazioni del generatore di risposte intelligenti.
Se il messaggio è stato inviato dall'utente a cui vuoi suggerire risposte, imposta isLocalUser
su true.
Veloce
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)
Obiettivo-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 |
---|---|---|---|
Gio 21 febbraio 13:13:39 PST 2019 | VERO | stai arrivando? | |
Gio 21 febbraio 13:15:03 PST 2019 | AMICO0 | falso | In ritardo, scusa! |
Tieni presente che il messaggio più recente nell'esempio precedente proviene da un utente non locale. Questo è importante perché ML Kit suggerisce risposte destinate ad essere inviate dall'utente della tua app: l'utente locale. Dovresti essere sicuro di passare a ML Kit un registro delle conversazioni che termina con un messaggio a cui il tuo utente potrebbe voler rispondere.
2. Ricevi risposte ai messaggi
Per generare risposte intelligenti a un messaggio, ottieni un'istanza di SmartReply
e passa la cronologia delle conversazioni al suo metodo suggestReplies(for:completion:)
:
Veloce
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.
// ...
}
}
Obiettivo-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 di completamento. Questo oggetto contiene un elenco di un massimo di 3 risposte suggerite, che puoi presentare al tuo utente:
Veloce
for suggestion in result.suggestions {
print("Suggested reply: \(suggestion.text)")
}
Obiettivo-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, la conversazione di input non è in inglese o se il modello rileva argomenti delicati.