par , 13/09/2018 � 21h48 (3539 Affichages)
Microsoft a apport� une importante refonte � sa plateforme de d�veloppement des agents conversationnels avec la version 4 du Bot Framework.
Pour rappel, le bot Framework est un ensemble d�outils d�velopp�s par Microsoft, permettant de d�velopper avec souplesse et simplicit� des bots. Il s�agit des agents conversationnels qui seront en mesure d��changer avec une entit� tierce. Un bot sera par exemple en mesure de guider un humain pour effectuer la commande d�un repas, acheter un article, etc. Les impl�mentations possibles sont assez nombreuses et il y a actuellement un engouement pour de telles technologies.
Le Bot Framework offre des outils pour d�velopper, connecter, tester, d�ployer et g�rer des bots. La refonte de la plateforme porte principalement sur les points cl�s suivants :
L�ouverture � d�autres langages/framework
Initialement, il �tait uniquement possible de d�velopper des bots en .NET et en Node en utilisant le SDK Bot Builder pour NodeJS et pour .NET. Dans la version 4, le bot builder SDK sera disponible pour Python et Java. Il sera donc possible de d�velopper son agent conversationnel en utilisant l�un de ces quatre langages populaires.
Prise en charge de .NET Core
Avec la version 3.0 du Bot Builder SDK, il �tait assez difficile de d�velopper un bot reposant sur .NET Core. Ceci parce que le Bot Builder utilisait de nombreuses librairies qui ne sont pas disponibles avec .NET Core.
La version 4.0 du Bot Framework a �t� d�velopp�e pratiquement � partir de z�ro, en utilisant comme socle .NET Core. Le projet est encore au stade de pr�version et est activement en cours de d�veloppement. La rupture avec la version pr�c�dente est importante.
Un nouveau Bot Emulator
Avec la version 4 du Bot Builder SDK, Microsoft mettra �galement � la disposition des d�veloppeurs une nouvelle version du Bot Framework Emulator.
Pour information, le Bot Framework Emulator est une application de bureau permettant aux d�veloppeurs de tester et d�boguer leur Bot. Gr�ce � ce dernier, le d�veloppeur peut chatter avec son bot et inspecter les messages re�us et envoy�s par ce dernier.
Le Bot Framework Emulator V4, qui est �galement encore en phase de pr�version, apporte aussi des changements importants � l�outil.
Avec cette version, il est possible de sauvegarder le transcript de sa conversation avec le Bot. Une sauvegarde peut �galement �tre charg�e dans l�interface de chat du bot. Il est possible d�utiliser le format markdown pour cr�er son propre transcript, ensuite le sauvegarder avec l�extension .chat afin de l�ouvrir avec l��mulateur. Cette fonctionnalit� est tr�s utile pour prototyper son bot avant de d�buter avec le d�veloppement.
Le Bot Framework Emulator V4 est disponible en t�l�chargement sur la page suivante : https://github.com/Microsoft/BotFram...lator/releases
Pr�requis pour cr�er son premier bot
Pour cr�er votre premier bot, vous devez disposer des outils suivants :
- Visual Studio 2017
- Bot Framework Emulator V4
- Bot Builder SDK V4
Le Bot Builder SDK est disponible comme un package NuGet. Aucune installation n�est requise.
Installation du mod�le de projet Bot Builder
Micrososft a mis en place un mod�le de projet pour permettre de d�marrer facilement avec le Bot Builder SDK V4. Ce mod�le contient les r�f�rences aux packages du Bot Builder, la configuration et le code minimum pour ex�cuter un bot basique.
Pour installer ce template dans Visual Studio, vous pouvez utiliser Visual Studio MarketPlace. L�interface est accessible via le menu Outils, ensuite Extensions et mises � jour. Vous devez rechercher Bot Builder V4 :
NB : Pour que l�installation s�effectue, vous devez fermer toutes les instances de Visual Studio 2017.
Cr�ation de notre premier bot
Nous allons maintenant cr�er un nouveau projet en utilisant le mod�le de projet que nous venons d�installer.
Explorons le code de l�application cr��e.
L�application qui a �t� cr��e est une application ASP.NET Core 2.0. En dehors des packages par d�faut de ASP.NET Core, trois packages suppl�mentaires ont �t� install�s pour le Bot Builder SDK. Ceux-ci sont visibles dans le fichier .csproj :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.5" />
<PackageReference Include="Microsoft.Bot.Builder.Core" Version="4.0.1-preview" />
<PackageReference Include="Microsoft.Bot.Builder.Core.Extensions" Version="4.0.1-preview" />
<PackageReference Include="Microsoft.Bot.Builder.Integration.AspNet.Core" Version="4.0.1-preview" />
</ItemGroup>
</Project> |
En dehors des fichiers traditionnels d�une application ASP.NET Core de base, nous avons les fichiers EchoBot.cs, EchoState.cs et FirstBot.bot :
Le fichier Startup.cs
D�mystifions pour commencer le fichier Startup.cs. Il s�agit du fichier de d�marrage de toute application ASP.NET Core. Il est directement appel� dans le Main de votre projet. Ce fichier est utilis� pour enregistrer les services et injecter des modules dans le pipeline d�une requ�te HTTP.
Observons pour commencer la m�thode ConfigureServices. Cette m�thode est utilis�e pour configurer dans le conteneur d�IoC les services qui seront consomm�s par l�application :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public void ConfigureServices(IServiceCollection services)
{
services.AddBot<EchoBot>(options =>
{
options.CredentialProvider = new ConfigurationCredentialProvider(Configuration);
// The CatchExceptionMiddleware provides a top-level exception handler for your bot.
options.Middleware.Add(new CatchExceptionMiddleware<Exception>(async (context, exception) =>
{
await context.TraceActivity("EchoBot Exception", exception);
await context.SendActivity("Sorry, it looks like something went wrong!");
}));
IStorage dataStore = new MemoryStorage();
options.Middleware.Add(new ConversationState<EchoState>(dataStore));
});
} |
Le Bot Builder SDK V4 offre une nouvelle m�thode d�extension AddBot. C�est un g�n�rique qui accepte une classe qui doit �tre une impl�mentation de l�interface IBot. Elle prend ensuite en param�tre un objet de type BotFrameworkOptions, qui est un delegate permettant de d�finir les options de votre bot.
La premi�re option concerne les credentials du bot :
options.CredentialProvider = new ConfigurationCredentialProvider(Configuration);
Les credentials du bot sont enregistr�s par d�faut dans le fichier appsettings.json.
1 2 3 4
| {
"MicrosoftAppId": "",
"MicrosoftAppPassword": ""
} |
Pour que votre bot soit utilis� via Skype, FaceBook Messenger ou une page de chat d�un site Web, vous devez au pr�alable enregistrer celui-ci via Azure Bot Channel Registration. Vous allez obtenir l�AppID et l�AppPassword de votre application, que vous devez enregistrer dans ce fichier de configuration.
L�option suivante concerne la gestion des exceptions :
1 2 3 4 5 6
|
options.Middleware.Add(new CatchExceptionMiddleware<Exception>(async (context, exception) =>
{
await context.TraceActivity("EchoBot Exception", exception);
await context.SendActivity("Sorry, it looks like something went wrong!");
})); |
Le middleware CatchExceptionMiddleware fournit un gestionnaire d�exception pour votre bot. Toute exception lors de l�ex�cution du bot sera attrap�e par ce code.
La derni�re option concerne le stockage qui sera utilis� pour enregistrer l��tat du bot :
1 2
| IStorage dataStore = new MemoryStorage();
options.Middleware.Add(new ConversationState<EchoState>(dataStore)); |
Le stockage en m�moire est utilis� par d�faut. Il est assez pratique lorsqu�on d�veloppe encore sont bot. Mais, en environnement de production, vous devez utiliser un moyen de stockage qui permettra la persistance des donn�es.
Passons maintenant � la M�thode Configure :
1 2 3 4 5 6 7 8 9 10 11
| public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseDefaultFiles()
.UseStaticFiles()
.UseBotFramework();
} |
La m�thode d�extension UserBotFramework() va permettre de charger dans le pipeline HTTP le code n�cessaire pour faite fonctionner votre bot.
Le fichier EchoState.cs
Ce fichier contient la classe EchoState qui est une simple classe de donn�es qui permettra de r�cup�rer les donn�es de l��tat du bot lors d�une conversation :
1 2 3 4
| public class EchoState
{
public int TurnCount { get; set; } = 0;
} |
Le fichier EchoBot.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| public class EchoBot : IBot
{
/// <summary>
/// Every Conversation turn for our EchoBot will call this method. In here
/// the bot checks the Activty type to verify it's a message, bumps the
/// turn conversation 'Turn' count, and then echoes the users typing
/// back to them.
/// </summary>
/// <param name="context">Turn scoped context containing all the data needed
/// for processing this conversation turn. </param>
public async Task OnTurn(ITurnContext context)
{
// This bot is only handling Messages
if (context.Activity.Type == ActivityTypes.Message)
{
// Get the conversation state from the turn context
var state = context.GetConversationState<EchoState>();
// Bump the turn count.
state.TurnCount++;
// Echo back to the user whatever they typed.
await context.SendActivity($"Turn {state.TurnCount}: You sent '{context.Activity.Text}'");
}
}
} |
Dans ce fichier nous avons le code de notre bot : ce que ce dernier fera. La classe EchoBot h�rite de l�interface IBot. Elle doit impl�menter minimalement la m�thode OnTurn. Toute conversation avec le bot appelle cette m�thode. Elle prend en param�tre ITurnContext qui contient toutes les donn�es de contexte du bot.
Dans l�exemple ci-dessus, on v�rifie si l�activit� en cours du bot est de type Message. En Fonction du type du message, vous pouvez effectuer des traitements diff�rents.
Ensuite on r�cup�re l��tat actuel du bot � partir des donn�es de contexte qui sont stock�es dans le MemoryStorage d�fini dans la configuration du bot.
Le fichier FirstBot.Bot
Ce fichier permet de stocker en un seul endroit les m�tadonn�es sur les diff�rents services qui sont consomm�s par le bot. Par d�faut, il contient les informations suivantes :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| {
"name": "FirstBot",
"secretKey": "",
"services": [
{
"appId": "",
"id": "http://localhost:3978/api/messages",
"type": "endpoint",
"appPassword": "",
"endpoint": "http://localhost:3978/api/messages",
"name": "FirstBot"
}
]
} |
Test du bot
Pour tester le bot, vous devez ex�cuter votre application en appuyant sur F5. Une page va s�afficher dans votre navigateur avec les instructions pour d�bogueur le bot en utilisant l��mulateur et pour d�ployer ce dernier.
Ouvrez l��mulateur, allez sur le menu fichier, puis cliquez sur � Open Bot Configuration �. Une fen�tre de chat va s�afficher. Vous pouvez commencer � �changer avec votre bot.
La nouvelle version du Bot Builder SDK apporte une refonte importante � la plateforme. Ceci est mon premier billet sur le Bot Builder SDK V4. Plusieurs autres billets seront publi�s dans les prochaines semaines sur le m�me sujet.
Restez connect�!
GitHub du Bot Builder SDK V4
GitHub du Bot Framework Emulator V4
Blog Bot Framework