Avvio rapido: Aggiungere un bot all'app di chat
Informazioni su come creare esperienze di intelligenza artificiale conversazionale in un'applicazione di chat usando il canale di messaggistica chat Servizi di comunicazione di Azure disponibile in Azure servizio Bot. In questa guida introduttiva si crea un bot usando BotFramework SDK. Si integra quindi il bot in un'applicazione di chat creata usando Communication Services Chat SDK.
In questa guida introduttiva si apprende come:
- Creare e distribuire un bot in Azure
- Ottenere una risorsa di Servizi di comunicazione
- Abilitare il canale chat di Servizi di comunicazione per il bot
- Creare un'app di chat e aggiungere il bot come partecipante
- Esplorare altre funzionalità per il bot
Prerequisiti
- Un account Azure e una sottoscrizione attiva. Creare un account gratuitamente.
- Visual Studio 2019 o versione successiva.
- Versione più recente di .NET Core. (https://dotnet.microsoft.com/download/dotnet/).
- Bot Framework SDK
Creare e distribuire un bot in Azure
Per usare Servizi di comunicazione di Azure chat come canale in Azure servizio Bot, distribuire prima un bot. Per distribuire un bot, seguire questa procedura:
- Creare una risorsa di Azure servizio Bot
- Ottenere l'ID e la password dell'app del bot
- Creare un'app Web per contenere l'app bot
- Creare un endpoint di messaggistica per il bot
Creare una risorsa di Azure servizio Bot
Usare prima di tutto il portale di Azure per creare una risorsa di Azure servizio Bot. Il canale chat di Servizi di comunicazione supporta bot a tenant singolo, bot di identità gestiti e bot multi-tenant.
- Ai fini di questa guida introduttiva si userà un
multitenant
bot. - Per configurare un
single-tenant
bot omanaged identity
, vedere Informazioni sull'identità del bot. - Per un
managed identity
bot, potrebbe essere necessario aggiornare l'identità del servizio bot.
Ottenere l'ID app e la password dell'app del bot
Ottenere quindi l'ID e la password dell'app Microsoft assegnati al bot al momento della distribuzione. Questi valori vengono usati per le configurazioni successive.
Creare un'app bot e pubblicarla in un'app Web
Per creare un bot, è possibile eseguire una delle operazioni seguenti:
- Rivedere gli esempi di Bot Builder per lo scenario, creare un'app Web e quindi distribuirvi l'esempio di bot.
- Usare Bot Builder SDK per creare e pubblicare un bot in un'app Web.
Per questa guida introduttiva si userà l'esempio Echo Bot degli esempi di Bot Builder.
Creare un'app Web per contenere l'app bot
Per creare l'app Web, usare l'interfaccia della riga di comando di Azure per creare una risorsa del servizio app Azure o creare l'app nel portale di Azure.
Per creare un'app Web bot usando il portale di Azure:
Nel portale selezionare Crea una risorsa. Nella casella di ricerca immettere l'app Web. Selezionare il riquadro App Web.
In Crea app Web selezionare o immettere i dettagli per l'app, inclusa l'area in cui si vuole distribuire l'app.
Selezionare Rivedi e crea per convalidare la distribuzione ed esaminare i dettagli della distribuzione. Quindi, selezionare Crea.
Quando viene creata la risorsa dell'app Web, copiare l'URL del nome host visualizzato nei dettagli della risorsa. L'URL fa parte dell'endpoint creato per l'app Web.
Creare un endpoint di messaggistica per il bot
Azure servizio Bot in genere prevede che bot Application Web App Controller esponga un endpoint nel formato /api/messages
. L'endpoint gestisce tutti i messaggi inviati al bot.
Successivamente, nella risorsa bot creare un endpoint di messaggistica dell'app Web:
Nella portale di Azure passare alla risorsa azure Bot. Nel menu della risorsa selezionare Configurazione.
In Configurazione, per endpoint di messaggistica, incollare l'URL del nome host dell'app Web copiata nella sezione precedente. Aggiungere l'URL con
/api/messages
.Seleziona Salva.
Distribuire l'app Web
Il passaggio finale per creare un bot consiste nel distribuire l'app Web. Per questa guida introduttiva, usare l'esempio Echo Bot . La funzionalità Echo Bot è limitata all'eco dell'input dell'utente. Ecco come distribuirlo nell'app Web in Azure:
Usare Git per clonare questo repository GitHub:
git clone https://github.com/Microsoft/BotBuilder-Samples.git cd BotBuilder-Samples
In Visual Studio aprire il progetto Echo Bot.
Nel progetto di Visual Studio aprire il file Appsettings.json . Incollare l'ID app Microsoft e la password dell'app copiati in precedenza:
{ "MicrosoftAppType": "", "MicrosoftAppId": "<App-registration-ID>", "MicrosoftAppPassword": "<App-password>", "MicrosoftAppTenantId": "" }
Usare quindi Visual Studio o VS Code per i bot C# per distribuire il bot.
È anche possibile usare una finestra del prompt dei comandi per distribuire un bot di Azure.
In Visual Studio, in Esplora soluzioni, fare clic con il pulsante destro del mouse sul progetto EchoBot e scegliere Pubblica:
Selezionare Nuovo per creare un nuovo profilo di pubblicazione. Per Destinazione selezionare Azure:
Per la destinazione specifica, selezionare app Azure Servizio:
Nella configurazione della distribuzione selezionare l'app Web nei risultati visualizzati dopo l'accesso all'account Azure. Per completare il profilo, selezionare Fine e quindi selezionare Pubblica per avviare la distribuzione.
Ottenere una risorsa di Servizi di comunicazione
Dopo aver creato e distribuito il bot, creare una risorsa di Servizi di comunicazione da usare per configurare un canale di Servizi di comunicazione:
Completare i passaggi per creare una risorsa di Servizi di comunicazione.
Creare un utente di Servizi di comunicazione e rilasciare un token di accesso utente. Assicurarsi di impostare l'ambito per la chat. Copiare la stringa del token e la stringa ID utente.
Abilitare il canale Chat di Servizi di comunicazione
Quando si dispone di una risorsa di Servizi di comunicazione, è possibile configurare un canale di Servizi di comunicazione nella risorsa bot. In questo processo viene generato un ID utente per il bot.
Nella portale di Azure passare alla risorsa azure Bot. Nel menu della risorsa selezionare Canali. Nell'elenco dei canali disponibili selezionare Servizi di comunicazione di Azure - Chat.
Selezionare Connetti per visualizzare un elenco di risorse di Servizi di comunicazione disponibili nella sottoscrizione.
Nel riquadro Nuova connessione selezionare la risorsa chat di Servizi di comunicazione e quindi selezionare Applica.
Quando vengono verificati i dettagli della risorsa, nella colonna Bot Servizi di comunicazione di Azure ID viene visualizzato un ID bot. È possibile usare l'ID bot per rappresentare il bot in un thread di chat usando l'API AddParticipant di Chat di Servizi di comunicazione. Dopo aver aggiunto il bot a una chat come partecipante, il bot inizia a ricevere attività correlate alla chat e può rispondere nel thread di chat.
Creare un'app di chat e aggiungere il bot come partecipante
Ora che si ha l'ID servizi di comunicazione del bot, è possibile creare un thread di chat con il bot come partecipante.
Seguire la guida introduttiva "Aggiungi chat alla tua app"
Per creare un'app di chat, seguire la procedura descritta nella guida introduttiva Aggiungere chat all'app .
- Sostituire <Resource_Endpoint> con l'endpoint di Servizi di comunicazione dal passaggio Ottenere una risorsa del servizio di comunicazione.
- Sostituire <Access_Token> con il token di accesso utente dal passaggio Ottenere una risorsa del servizio di comunicazione.
- Sostituire <Access_ID> con i bot ACS_ID dal passaggio Abilitare il canale chat di Servizi di comunicazione.
Eseguire l'applicazione chat C# in locale
Per eseguire l'applicazione chat in locale, usare il dotnet run
comando :
dotnet run
Si dovrebbe ricevere un messaggio dal bot nella console che indica "Hello World".
Output di esempio:
1730405535010:Hello World
Altre operazioni che è possibile eseguire con un bot
Un bot può ricevere più di un messaggio di testo normale da un utente in un canale chat di Servizi comunicazioni. Alcune delle attività che un bot può ricevere da un utente includono:
- Aggiornamento della conversazione
- Aggiornamento dei messaggi
- Eliminazione del messaggio
- Indicatore di digitazione
- Attività evento
- Vari allegati, incluse le schede adattive
- Dati del canale bot
Le sezioni successive illustrano alcuni esempi per illustrare queste funzionalità.
Inviare un messaggio di benvenuto quando un nuovo utente viene aggiunto al thread
La logica echo bot corrente accetta l'input dell'utente e la ripete. Se si vuole aggiungere più logica, ad esempio rispondere a un evento di Servizi di comunicazione aggiunto al partecipante, copiare il codice seguente e incollarlo nel file di origine EchoBot.cs :
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Bot.Builder;
using Microsoft.Bot.Schema;
namespace Microsoft.BotBuilderSamples.Bots
{
public class EchoBot : ActivityHandler
{
public override async Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken)
{
if (turnContext.Activity.Type == ActivityTypes.Message)
{
var replyText = $"Echo: {turnContext.Activity.Text}";
await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);
}
else if (ActivityTypes.ConversationUpdate.Equals(turnContext.Activity.Type))
{
if (turnContext.Activity.MembersAdded != null)
{
foreach (var member in turnContext.Activity.MembersAdded)
{
if (member.Id != turnContext.Activity.Recipient.Id)
{
await turnContext.SendActivityAsync(MessageFactory.Text("Hello and welcome to chat with EchoBot!"), cancellationToken);
}
}
}
}
}
}
}
Inviare una scheda adattiva
Nota
Le schede adattive sono supportate solo all'interno di Servizi di comunicazione di Azure casi d'uso in cui tutti i partecipanti alla chat sono Servizi di comunicazione di Azure utenti e non per i casi d'uso di interoperabilità di Teams.
È possibile inviare una scheda adattiva al thread di chat per aumentare l'engagement e l'efficienza. Una scheda adattiva consente anche di comunicare con gli utenti in vari modi. È possibile inviare una scheda adattiva da un bot aggiungendo la scheda come allegato di attività del bot.
Ecco un esempio di come inviare una scheda adattiva:
var reply = Activity.CreateMessageActivity();
var adaptiveCard = new Attachment()
{
ContentType = "application/vnd.microsoft.card.adaptive",
Content = {/* the adaptive card */}
};
reply.Attachments.Add(adaptiveCard);
await turnContext.SendActivityAsync(reply, cancellationToken);
Ottenere payload di esempio per le schede adattive in Esempi e modelli.
Per un utente di chat, il canale chat di Servizi di comunicazione aggiunge un campo ai metadati del messaggio che indica che il messaggio ha un allegato. Nei metadati la microsoft.azure.communication.chat.bot.contenttype
proprietà è impostata su azurebotservice.adaptivecard
.
Di seguito è riportato un esempio di messaggio di chat con una scheda adattiva collegata:
{
"content": "{\"attachments\":[{\"contentType\":\"application/vnd.microsoft.card.adaptive\",\"content\":{/* the adaptive card */}}]}",
"senderDisplayName": "BotDisplayName",
"metadata": {
"microsoft.azure.communication.chat.bot.contenttype": "azurebotservice.adaptivecard"
},
"messageType": "Text"
}
Inviare un messaggio dall'utente al bot
È possibile inviare un sms di base da un utente al bot nello stesso modo in cui si invia un sms a un altro utente.
Tuttavia, quando si invia un messaggio con un allegato da un utente a un bot, aggiungere questo flag ai metadati di Chat di Servizi di comunicazione:
"microsoft.azure.communication.chat.bot.contenttype": "azurebotservice.adaptivecard"
Per inviare un'attività evento da un utente a un bot, aggiungere questo flag ai metadati della chat di Servizi di comunicazione:
"microsoft.azure.communication.chat.bot.contenttype": "azurebotservice.event"
Le sezioni seguenti illustrano i formati di esempio per i messaggi di chat da un utente a un bot.
Messaggio di testo semplice
{
"content":"Simple text message",
"senderDisplayName":"Acs-Dev-Bot",
"metadata":{
"text":"random text",
"key1":"value1",
"key2":"{\r\n \"subkey1\": \"subValue1\"\r\n
"},
"messageType": "Text"
}
Messaggio con allegato
{
"content": "{
\"text\":\"sample text\",
\"attachments\": [{
\"contentType\":\"application/vnd.microsoft.card.adaptive\",
\"content\": { \"*adaptive card payload*\" }
}]
}",
"senderDisplayName": "Acs-Dev-Bot",
"metadata": {
"microsoft.azure.communication.chat.bot.contenttype": "azurebotservice.adaptivecard",
"text": "random text",
"key1": "value1",
"key2": "{\r\n \"subkey1\": \"subValue1\"\r\n}"
},
"messageType": "Text"
}
Messaggio con un'attività di evento
Un payload dell'evento include tutti i campi JSON nel contenuto del messaggio, ad eccezione di Name
. Il Name
campo contiene il nome dell'evento.
Nell'esempio seguente il nome endOfConversation
dell'evento con il payload "{field1":"value1", "field2": { "nestedField":"nestedValue" }}
viene inviato al bot:
{
"content":"{
\"name\":\"endOfConversation\",
\"field1\":\"value1\",
\"field2\": {
\"nestedField\":\"nestedValue\"
}
}",
"senderDisplayName":"Acs-Dev-Bot",
"metadata":{
"microsoft.azure.communication.chat.bot.contenttype": "azurebotservice.event",
"text":"random text",
"key1":"value1",
"key2":"{\r\n \"subkey1\": \"subValue1\"\r\n}"
},
"messageType": "Text"
}
Il campo microsoft.azure.communication.chat.bot.contenttype
dei metadati è obbligatorio solo in un messaggio inviato da un utente a un bot.
Campi di attività del bot supportati
Le sezioni seguenti descrivono i campi di attività del bot supportati per i flussi da bot a utente e flussi da utente a bot.
Flusso da bot a utente
I campi di attività bot seguenti sono supportati per i flussi da bot a utente.
Impegni
- Message
- Digitazione
Campi attività messaggio
Text
Attachments
AttachmentLayout
SuggestedActions
From.Name
(convertito in ServiziSenderDisplayName
di comunicazione).ChannelData
(convertito in ServiziChat Metadata
di comunicazione . Se iChannelData
valori di mapping sono oggetti, vengono serializzati in formato JSON e inviati come stringa.
Flusso da utente a bot
Questi campi di attività bot sono supportati per i flussi da utente a bot.
Attività e campi
Message
Id
(ID messaggio chat di Servizi di comunicazione)TimeStamp
Text
Attachments
Aggiornamento della conversazione
MembersAdded
MembersRemoved
TopicName
Aggiornamento dei messaggi
Id
(ID messaggio chat di Servizi di comunicazione aggiornato)Text
Attachments
Eliminazione del messaggio
Id
(ID messaggio di chat di Servizi di comunicazione eliminato)
Event
Name
Value
Digitazione
Altri campi comuni
Recipient.Id
eRecipient.Name
(ID utente chat di Servizi di comunicazione e nome visualizzato)From.Id
eFrom.Name
(ID utente chat di Servizi di comunicazione e nome visualizzato)Conversation.Id
(ID thread chat di Servizi di comunicazione)ChannelId
(Chat di Servizi di comunicazione se vuoto)ChannelData
(metadati dei messaggi chat di Servizi di comunicazione)
Modelli di handoff del bot
In alcuni casi, un bot non comprende una domanda o non può rispondere a una domanda. Un cliente potrebbe chiedere nella chat di essere connesso a un agente umano. In questi scenari, il thread di chat deve essere passato dal bot a un agente umano. È possibile progettare l'applicazione per eseguire la transizione di una conversazione da un bot a un essere umano.
Gestione delle comunicazioni da bot a bot
In alcuni casi d'uso, due bot devono essere aggiunti allo stesso thread di chat per fornire servizi diversi. In questo scenario potrebbe essere necessario assicurarsi che un bot non invii risposte automatiche ai messaggi di un altro bot. Se non viene gestito correttamente, l'interazione automatizzata tra i bot potrebbe comportare un ciclo infinito di messaggi.
È possibile verificare l'identità utente di Servizi di comunicazione di un mittente del messaggio nella proprietà dell'attività From.Id
. Verificare se appartiene a un altro bot. Eseguire quindi l'azione necessaria per impedire un flusso di comunicazione da bot a bot. Se questo tipo di scenario comporta volumi di chiamate elevati, il canale chat di Servizi di comunicazione limita le richieste e un bot non può inviare e ricevere messaggi.
Altre informazioni sui limiti di limitazione.
Risoluzione dei problemi
Le sezioni seguenti descrivono i modi per risolvere gli scenari comuni.
Non è possibile aggiungere il canale chat
Nel portale per sviluppatori di Microsoft Bot Framework passare a Configuration Bot Messaging (Messaggistica bot di configurazione>) per verificare che l'endpoint sia stato impostato correttamente.
Il bot ottiene un'eccezione non consentita durante la risposta a un messaggio
Verificare che l'ID e la password dell'app Microsoft del bot vengano salvati correttamente nel file di configurazione del bot caricato nell'app Web.
Il bot non può essere aggiunto come partecipante
Verificare che l'ID servizi di comunicazione del bot venga usato correttamente quando viene inviata una richiesta per aggiungere un bot a un thread di chat.
Passaggi successivi
Può essere utile vedere anche gli articoli seguenti:
- Acquisire familiarità con i concetti relativi alle chat
- Informazioni sul funzionamento dei prezzi per la chat