Inviare e ricevere messaggi di testo

SI APPLICA A: SDK v4

Il modo principale in cui il bot comunicherà con gli utenti, e allo stesso modo riceverà le comunicazioni, è tramite attività di messaggistica. Alcuni messaggi possono contenere solo testo normale, mentre altri possono contenere contenuti più avanzati, ad esempio schede o allegati. Il gestore turni del bot riceve messaggi dall'utente e da lì è possibile inviare risposte all'utente stesso. L'oggetto contesto di turno fornisce i metodi per inviare messaggi di risposta all'utente. Questo articolo descrive come inviare messaggi di testo normale.

La sintassi markdown è supportata per la maggior parte dei campi di testo, ma il supporto può variare a seconda del canale.

Per un bot in esecuzione che invia e riceve messaggi, seguire le guide introduttive nella parte superiore del sommario o vedere l'articolo sul funzionamento dei bot, che include anche collegamenti a esempi disponibili per l'esecuzione personale.

Nota

Gli SDK JavaScript, C# e Python di Bot Framework continueranno a essere supportati, ma Java SDK verrà ritirato con il supporto finale a lungo termine che termina a novembre 2023.

I bot esistenti creati con Java SDK continueranno a funzionare.

Per la creazione di nuovi bot, prendere in considerazione l'uso di Power Virtual Agents e leggere la scelta della soluzione chatbot appropriata.

Per altre informazioni, vedere Il futuro della compilazione di bot.

Invio di un SMS

Per inviare un sms, specificare la stringa da inviare come attività:

Nei gestori di attività del bot, utilizzare il metodo SendActivityAsync dell'oggetto contesto di turno per inviare una singola risposta al messaggio. È anche possibile usare il metodo SendActivitiesAsync dell'oggetto per inviare più risposte contemporaneamente.

await turnContext.SendActivityAsync($"Welcome!");

Ricevere un messaggio di testo

Per gestire un messaggio di testo, utilizzare la proprietà text dell'oggetto attività .

Nei gestori di attività del bot usare il codice seguente per ricevere un messaggio.

var responseMessage = turnContext.Activity.Text;

Inviare un indicatore di digitazione

Gli utenti si aspettano una risposta tempestiva ai messaggi. Se il bot esegue alcune attività con esecuzione prolungata, ad esempio una chiamata a un server o una query, senza fornire all'utente alcuna indicazione sulla sua richiesta, l'utente potrebbe dimostrarsi impaziente e inviare messaggi aggiuntivi o dare semplicemente per scontato che il bot non funziona.

I bot dei canali Web Chat e Direct Line supportano l'invio di un'indicazione di digitazione per mostrare all'utente che il messaggio è stato ricevuto ed elaborato. Tuttavia, il bot deve lasciare che il turno venga terminato entro 15 secondi o che il servizio Connessione or si verifichi il timeout. Per i processi più lunghi, leggere altre informazioni sull'invio di messaggi proattivi.

L'esempio seguente illustra come inviare un'indicazione di digitazione tramite.

protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
    if (string.Equals(turnContext.Activity.Text, "wait", System.StringComparison.InvariantCultureIgnoreCase))
    {
        await turnContext.SendActivitiesAsync(
            new Activity[] {
                new Activity { Type = ActivityTypes.Typing },
                new Activity { Type = "delay", Value= 3000 },
                MessageFactory.Text("Finished typing", "Finished typing"),
            },
            cancellationToken);
    }
    else
    {
        var replyText = $"Echo: {turnContext.Activity.Text}. Say 'wait' to watch me type.";
        await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);
    }
}

Risorse aggiuntive

Passaggi successivi