ML Kit può generare risposte brevi ai messaggi utilizzando un modello sul dispositivo.
Per generare risposte rapide, devi trasmettere a ML Kit un log dei messaggi recenti in una conversazione. Se ML Kit determina che la conversazione è in inglese e che non riguarda argomenti potenzialmente sensibili, ML Kit genera fino a tre risposte, che puoi suggerire all'utente.
| In bundle | Senza pacchetto | |
|---|---|---|
| Nome della raccolta | com.google.mlkit:smart-reply | com.google.android.gms:play-services-mlkit-smart-reply | 
| Implementazione | Il modello è collegato staticamente alla tua app in fase di compilazione. | Il modello viene scaricato dinamicamente tramite Google Play Services. | 
| Impatto delle dimensioni dell'app | Aumento delle dimensioni di circa 5,7 MB. | Aumento delle dimensioni di circa 200 kB. | 
| Tempo di inizializzazione | Il modello è disponibile immediatamente. | Potresti dover attendere il download del modello prima del primo utilizzo. | 
Prova
- Prova l'app di esempio per vedere un esempio di utilizzo di questa API.
Prima di iniziare
- Nel file - build.gradlea livello di progetto, assicurati di includere il repository Maven di Google nelle sezioni- buildscripte- allprojects.
- Aggiungi le dipendenze per le librerie Android ML Kit al file Gradle a livello di app del modulo, che di solito è - app/build.gradle. Scegli una delle seguenti dipendenze in base alle tue esigenze:- Per raggruppare il modello con l'app:
 - dependencies { // ... // Use this dependency to bundle the model with your app implementation 'com.google.mlkit:smart-reply:17.0.4' }- Per utilizzare il modello in Google Play Services:
 - dependencies { // ... // Use this dependency to use the dynamically downloaded model in Google Play Services implementation 'com.google.android.gms:play-services-mlkit-smart-reply:16.0.0-beta1' }- Se scegli di utilizzare il modello in Google Play Services, puoi configurare la tua app in modo che scarichi automaticamente il modello sul dispositivo dopo l'installazione dal Play Store. Aggiungendo la seguente dichiarazione al file - AndroidManifest.xmldell'app:- <application ...> ... <meta-data android:name="com.google.mlkit.vision.DEPENDENCIES" android:value="smart_reply" > <!-- To use multiple models: android:value="smart_reply,model2,model3" --> </application>- Puoi anche controllare esplicitamente la disponibilità del modello e richiedere il download tramite l'API ModuleInstallClient di Google Play Services. - Se non attivi i download dei modelli in fase di installazione o non richiedi il download esplicito, il modello viene scaricato la prima volta che esegui il generatore di risposte rapide. Le richieste effettuate prima del completamento del download non producono risultati. - 1. Crea un oggetto cronologia delle conversazioni- Per generare risposte rapide, devi trasmettere a ML Kit un elenco - Listdi oggetti- TextMessagein ordine cronologico, con il timestamp più recente per primo.- Ogni volta che l'utente invia un messaggio, aggiungi il messaggio e il relativo timestamp alla cronologia della conversazione: - Kotlin- conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis())) - Java- conversation.add(TextMessage.createForLocalUser( "heading out now", System.currentTimeMillis())); - Ogni volta che l'utente 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 nessun dato utente e non deve essere coerente tra le conversazioni o le invocazioni del generatore di risposte rapide. - Kotlin- conversation.add(TextMessage.createForRemoteUser( "Are you coming back soon?", System.currentTimeMillis(), userId)) - Java- conversation.add(TextMessage.createForRemoteUser( "Are you coming back soon?", System.currentTimeMillis(), userId)); - Un oggetto della cronologia delle conversazioni è simile al seguente esempio: - Timestamp - userID - isLocalUser - Messaggio - Gio 21 feb 13:13:39 PST 2019 - true - Sei in arrivo? - Gio 21 feb 13:15:03 PST 2019 - FRIEND0 - falso - Sono in ritardo, scusa! - ML Kit suggerisce risposte all'ultimo messaggio nella cronologia di una conversazione. L'ultimo messaggio deve provenire da un utente non locale. Nell'esempio precedente, l'ultimo messaggio della conversazione è dell'utente non locale FRIEND0. Quando utilizzi pass ML Kit questo log, suggerisce risposte al messaggio di AMICO: "Sono in ritardo, scusa!" - 2. Ricevere risposte ai messaggi- Per generare risposte rapide a un messaggio, ottieni un'istanza di - SmartReplyGeneratore trasmetti la cronologia della conversazione al relativo metodo- suggestReplies():- Kotlin- val smartReplyGenerator = SmartReply.getClient() smartReply.suggestReplies(conversation) .addOnSuccessListener { result -> if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) { // The conversation's language isn't supported, so // the result doesn't contain any suggestions. } else if (result.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) { // Task completed successfully // ... } } .addOnFailureListener { // Task failed with an exception // ... } - Java- SmartReplyGenerator smartReply = SmartReply.getClient(); smartReply.suggestReplies(conversation) .addOnSuccessListener(new OnSuccessListener - () { @Override public void onSuccess(SmartReplySuggestionResult result) { if (result.getStatus() == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) { // The conversation's language isn't supported, so // the result doesn't contain any suggestions. } else if (result.getStatus() == SmartReplySuggestionResult.STATUS_SUCCESS) { // Task completed successfully // ... } } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // Task failed with an exception // ... } }); - Se l'operazione ha esito positivo, viene passato un oggetto - SmartReplySuggestionResultal gestore di esito positivo. Questo oggetto contiene un elenco di un massimo di tre risposte suggerite, che puoi presentare all'utente:- Kotlin- for (suggestion in result.suggestions) { val replyText = suggestion.text } - Java- for (SmartReplySuggestion suggestion : result.getSuggestions()) { String replyText = suggestion.getText(); } - Tieni presente che ML Kit potrebbe non restituire risultati se il modello non è sicuro dell'pertinenza delle risposte suggerite, se la conversazione di input non è in inglese o se il modello rileva argomenti sensibili. 
