Connettere un bot a Direct Line

Questo articolo descrive come connettere un bot al canale Direct Line . Usare questo canale per comunicare con un bot tramite l'applicazione client.

Nota

Direct Line è un canale standard tramite protocollo HTTPS per consentire la comunicazione tra un'applicazione client e un bot. Se invece è necessario l'isolamento di rete, usare l'estensioneservizio app Direct Line su WebSocket.

Prerequisiti

  • Un account di Azure. Se non se ne ha già uno, creare un account gratuito prima di iniziare.
  • Un bot esistente pubblicato in Azure.

Aggiungere il canale Direct Line

La prima cosa da fare è aggiungere il canale Direct Line al bot.

  1. Vai al portale di Azure.
  2. Passare alla risorsa di Azure Bot. In Bot Impostazioni selezionare Canali.
  3. Selezionare Direct Line nell'elenco canali disponibili.

Il bot è ora configurato per l'uso di Direct Line usando il sito predefinito.

In alternativa, è possibile aggiungere un nuovo sito anziché usare il sito predefinito. Selezionare il pulsante Nuovo sito nella pagina Canale Direct Line per creare un nuovo sito. Direct Line new site button in Azure portal

Gestire le chiavi private

Quando si aggiunge il canale diretto, Bot Framework genera chiavi segrete. L'applicazione client usa queste chiavi per autenticare le richieste dell'API Direct Line che emette per comunicare con un bot. Per altre informazioni, vedere Autenticazione.

  1. Per visualizzare il segreto Direct Line di un sito in testo normale, passare alla pagina del canale Direct Line .

  2. Selezionare la scheda Direct Line , quindi il sito per cui si vuole ottenere la chiave, ad esempio Default_Site. Azure aprirà un riquadro Configura il sito .

  3. In Chiavi segrete selezionare l'icona a forma di occhio accanto alla chiave corrispondente.

    Show Direct Line keys

  4. Copiare e archiviare in modo sicuro la chiave. Usare la chiave per autenticare le richieste API Direct Line che l'applicazione client rilascia per comunicare con un bot.

    Nota

    I segreti non devono essere esposti o incorporati nelle applicazioni client. Vedere il passaggio successivo.

  5. La procedura consigliata consiste nell'usare l'API Direct Line per scambiare la chiave per un token. L'applicazione client userà quindi il token per autenticare le richieste all'interno dell'ambito di una singola conversazione.

Configurare le impostazioni

Per configurare le impostazioni del sito:

  1. Nella pagina Canale Direct Line selezionare il sito da configurare nell'elenco Siti . Verrà aperto il riquadro Configura sito , illustrato di seguito: Configure site pane

  2. Selezionare la versione del protocollo Direct Line che verrà usata dall'applicazione client per comunicare con un bot.

    Suggerimento

    Se si sta creando una nuova connessione tra l'applicazione client e il bot, usare l'API Direct Line 3.0.

  3. Al termine, selezionare Applica per salvare la configurazione del sito. Ripetere questo processo, a partire da un nuovo sito, per ogni applicazione client che si vuole connettere al bot.

Configurare l'autenticazione avanzata

Una delle configurazioni del sito disponibili è Opzioni di autenticazione avanzata, che consente di ridurre i rischi di sicurezza quando ci si connette a un bot ,ad esempio usando il controllo chat Web. Per altre informazioni, vedere Autenticazione avanzata direct Line.

Per aggiungere l'autenticazione avanzata:

  1. Abilitare Migliorare le opzioni di autenticazione. Verrà visualizzato un messaggio che indica che è necessario avere almeno un'origine attendibile. Verrà visualizzato un collegamento Aggiungi un'origine attendibile. Se si abilita l'autenticazione avanzata, è necessario specificare almeno un'origine attendibile.

    Un'origine attendibile è un dominio usato dal sistema per autenticare gli utenti. In questo caso Direct Line usa il dominio per generare un token.

    • Se si configurano origini attendibili come parte della pagina dell'interfaccia utente di configurazione, queste impostazioni verranno sempre usate come unico set per la generazione di un token. L'invio di origini attendibili aggiuntive (o l'impostazione di origini attendibili su nessuno) quando si genera un token o l'avvio di una conversazione verrà ignorata (non vengono aggiunte all'elenco o convalidate incrociate).
    • Se non è stata abilitata l'autenticazione avanzata, verrà usato qualsiasi URL di origine inviato come parte delle chiamate API. Add trusted origin
  2. Dopo aver aggiunto un URL di dominio attendibile, selezionare Applica.

Bot di esempio direct Line

È possibile scaricare un esempio .NET da questo percorso: Esempio di bot Direct Line.

L'esempio contiene due progetti:

  • DirectLineBot. Crea un bot per connettersi tramite un canale Direct Line.
  • DirectLineClient. Si tratta di un'applicazione console che comunica con il bot precedente tramite il canale Direct Line.

API Direct Line

  • Le credenziali per l'API Direct Line devono essere ottenute dalla registrazione di Azure Bot e consentiranno al chiamante di connettersi al bot per cui sono stati generati. Nel progetto bot aggiornare il appsettings.json file con questi valori.

    {
    "MicrosoftAppId": "",
    "MicrosoftAppPassword": ""
    }
    
  • Nella portale di Azure abilitare Direct Line nell'elenco dei canali e quindi configurare il segreto Direct Line. Assicurarsi che la casella di controllo per la versione 3.0 sia selezionata. Nel progetto client della console aggiornare il App.config file con la chiave privata Direct Line e l'handle del bot (ID bot).

    <appSettings>
        <add key="DirectLineSecret" value="YourBotDirectLineSecret" />
        <add key="BotId" value="YourBotHandle" />
    </appSettings>
    

I messaggi utente vengono inviati al bot usando il metodo Client Conversations.PostActivityAsync Direct Line usando l'oggetto ConversationId generato in precedenza.

while (true)
{
    string input = Console.ReadLine().Trim();

    if (input.ToLower() == "exit")
    {
        break;
    }
    else
    {
        if (input.Length > 0)
        {
            Activity userMessage = new Activity
            {
                From = new ChannelAccount(fromUser),
                Text = input,
                Type = ActivityTypes.Message
            };

            await client.Conversations.PostActivityAsync(conversation.ConversationId, userMessage);
        }
    }
}