Créer un bot pour slack avec le Microsoft Bot Framework

Auteur du billet de blog : Nicolas Hilaire - Neotech Solutions

Nicolas Hilaire

Consultant .NET
  Publié le vendredi 2 septembre 2016

Artisan logiciel particulièrement intéressé par les technologies .NET. Polyvalent et curieux, je suis néanmoins à l'écoute des autres technologies du marché. MVP (Microsoft Most Valuable Professional) de 2007 à 2014, je suis également auteur d'un ouvrage pour apprendre le C#, à destination des débutants et de plusieurs MOOCs sur le C#, Windows Phone ou ASP.NET MVC...

Le Microsoft Bot Framework est comme son nom l’indique un framework pour réaliser des bots. Il consiste en une offre unifiée permettant de réaliser des bots pour beaucoup de plateformes différentes. Je vais m’en servir ici pour créer un bot complètement inutile pour slack, permettant de générer des « meme » de Doris, le fameux poisson sans mémoire du dessin animé le monde de Némo.

Le point de départ de la création d’un bot est la consultation de la documentation accessible à cette url : https://docs.botframework.com/en-us/ et notamment la partie C# puisque c’est celle-là que je vais utiliser https://docs.botframework.com/en-us/csharp/builder/sdkreference/, sachant qu’il est possible d’écrire des bots dans d’autres langages vu qu’il s’agit au final de créer une API REST.

Le plus simple est d’utiliser Visual Studio 2015 et de récupérer le template de création d’une application BOT comme décrit sur cette page https://docs.botframework.com/en-us/csharp/builder/sdkreference/gettingstarted.html. A savoir :

  • Télécharger le zip
  • Le copier dans "%USERPROFILE%\Documents\Visual Studio 2015\Templates\ProjectTemplates\Visual C#\"

Une fois ceci fait, et Visual Studio redémarré, on peut voir un nouveau template de projet :

Permettant de créer une application Bot (en fait, il s’agit d’une Web api toute bête qui expose une route particulière avec un peu de code pour nous prémâcher le travail).

La première chose à faire est de démarrer l’application BOT et de noter le port utilisé par l’API Web:

ici donc, 3979.

Téléchargez maintenant l’émulateur https://aka.ms/bf-bc-emulator, qui va nous permettre de tester notre application BOT. Une fois démarré, il vous faut changer l’url pour pointer sur le bon port de la web api :

 

notez que la route utilisée est "api/messages" comme on peut le voir grâce à la configuration de la route :

et l’utilisation d’un MessagesController.

Pour être sûr que tout fonctionne, tentez d’envoyer un message pour voir si tout est ok :

Ici j’envoie la chaine « test bot » et je reçois « You sent test bot which was 8 characters ». Si vous pouvez voir cette réponse du BOT dans la partie gauche, ainsi que du JSON dans la partie droite, c’est que c’est gagné :). En effet, si vous allez regarder le code, on peut voir que par défaut le BOT calcule la longueur du texte envoyé et renvoi la chaine ainsi que sa longueur. Bon, on peut sans doute faire un peu mieux, mais au moins c’est un début ^^.

Bien sûr, on peut débugger la web api pour voir ce qu’il se passe, si vous mettez un point d’arrêt et que vous renvoyez un message, vous pourrez naviguer dans le code du BOT en local.

Poussons un peu plus loin l’expérience et pour cela nous allons créer un bot qui génère un meme du poisson Doris. Pour cela, je vais créer un compte sur le site http://memegenerator.net et utiliser l’API adéquate. Voici une première version du code :

Donc, vous pouvez voir que j’ai choisi arbitrairement d’utiliser le caractère pipe | pour séparer la phrase avec sa partie haute et sa partie basse. Ensuite, rien de transcendant, j’appelle l’API avec l’HttpClient en lui passant les bons paramètres, puis j’utilise le markdown du BOT framework pour intégrer une image de Doris, voir https://docs.botframework.com/en-us/csharp/builder/sdkreference/activities.html pour les détails du langage markdown.

Il n’y a plus qu’à tester dans l’émulateur :

Plutôt pas mal pour un début :) .

Pour que notre application BOT soit utilisable depuis l’extérieur, il faut bien sur la publier et qu’elle soit accessible en ligne. Faisons ça dans Azure avec un petit click-droit -> publish….

Maintenant que le BOT est en ligne il faut l’enregistrer sur le portail https://dev.botframework.com/ ; où il faut se logguer. Puis ensuite, cliquez sur Register a bot :

 

Il faut maintenant saisir les informations relatives à votre BOT, faites attention à l’url de votre BOT sur Azure qui doit être en HTTPS et doit contenir bien sûr api/messages :

 

On vous demande ensuite plus bas de créer un app id :

 

 

Et il vous faut générer un ID d’application ainsi qu’un mot de passe :

Ceux-ci seront à mettre dans le web.config de votre API web :

Une fois ceci fait, il vous faut republier sur Azure avec ces modifications. Ça fait quelques allers-retours, mais c’est pour la bonne cause :).

Vous pouvez ensuite tester la connexion avec votre BOT depuis l’interface et choisir d’ajouter un ou plusieurs channels de communication. Et c’est là notamment toute la force du BOT framework :

Je choisi ici de créer une intégration avec Slack. Pour ce cas, un petit how-to apparait pour me guider et m’aider à configurer slack :

 

Allez jusqu’au bout du process et vous voici avec un BOT créé et configuré. Je l’ai appelé @doris pour ma part et je peux interagir avec lui comme un user classique, en message direct :

 

Bon, c'est bien, mais là il n'y a que moi qui le voit. Ce qui n’est pas mal, c’est que je peux également l’ajouter à un channel. Mais là par contre, il va écouter tous les messages qui passent et ainsi répondre à chaque message par une génération de meme. Ce qui n’est pas le but recherché.

Qu’à cela ne tienne, je vais utiliser une petite astuce pour le démarrer uniquement sur un mot clé. Ce qui se fait en général est d’utiliser un # par exemple. Voici la deuxième version du code faisant en sorte que le BOT n’écoute que les messages commençant par #doris :

Rien de spécial dans ce code, je supprime juste le #doris pour qu’il n’apparaisse pas dans l’image.

Note : je n’ai pas l’impression que l’on puisse utiliser les slash commands avec le BOT framework.

Et voilà comment le BOT fonctionne dans un channel désormais :

Vous n'avez plus qu'à implémenter d'autres générations de meme.

Et voilà pour cette première découverte du bot framework qui vous permettra d’agrémenter vos discussions sur slack :).

Commentaires

Ecrit par DanielOrackLC, mercredi 22 mars 2017

Like many other ailments, people are not properly informed about the reality of sleep apnea, especially if they have never dealt with it before. Many people begin to develop this issue later in life and are unaware of how to reduce problems with it- that is where this article comes in with useful tips! If you suffer from sleep apnea, you should use a Continuous Positive Airway Pressure machine while sleeping. This will help you treat your sleep apnea and get you on the path to having a full nights sleep. This machine uses either a face or nasal mask to pump air while you sleep. If you have sleep apnea, try sleeping on your side. If you are a back or stomach sleeper, gravity is working against you all night. Your airway is much more likely to collapse if you are facing straight up or down. Sleeping on your side instead makes it much easier for your body to maintain your airway as you sleep. On easy way to help limit your sleep apnea is to stick to regular sleeping hours. When you stick to a sleep schedule that is steady and consistent, you will be more relaxed and sleep much better. Apnea episode frequency will be greatly reduced if you can get plenty of sleep every night. People who do not have a partner sleeping with them may not know they suffer from sleep apnea. If you wake up with a dry or sore mouth, wake up out of breath, have morning headaches, insomnia, and\/or go to the bathroom frequently during the night, you may have sleep apnea and should talk to a doctor. Drink one cup of caffeinated coffee a few hours before you go to sleep. It may seem silly to drink a caffeine drink at night, but this can actually help keep your throat open while you sleep. You may have to play around with what time you drink the coffee to avoid restlessness. The first thing to do when you think you are dealing with sleep apnea is to discover if it is really apnea or just advanced snoring. If you have a loved one sleeping with you, this can be done alone at home, but if not you may need to visit a sleep clinic. The most important aspect of dealing with sleep apnea is understanding exactly what it is. Unlike simple snoring, it is when a sleeper stop\'s breathing for a short period of time while he is sleeping. If your sleep partner tells you that sometimes you stop breathing, there is a good chance you have apnea. If simple changes in your lifestyle, such as regular sleep hours and losing weight, have not eliminated your sleep apnea episodes, it is time to consult with a sleep specialist. The specific causes of your sleep apnea can be evaluated, and an individual treatment plan can be designed for you. There are several things that can trigger sleep apnea and there are many treatments. Since you have read this article, you have increased your knowledge about dealing with your sleep apnea. Pass this knowledge on to others whose lives may be affected by this condition. A great night of sleep is still very possible for you. <a href=https:\/\/www.viagrasansordonnancefr.com\/>viagrasansordonnancefr.com<\/a>

Ecrit par JamesWipseBB, mardi 4 avril 2017

Sleep apnea has long disrupted the lives of untold number of sufferers as well as their loved ones. To stand a good chance of effectively manage this difficult condition, solid knowledge and understanding of its causes is necessary. Apply the information in this piece, and you will possess the information needed to mitigate the impact sleep apnea has on your life. If you are unsure whether or not you have sleep apnea, consider setting up an audio or video recorder next to your bed. When you review the recording, watch or listen for choking, gasping or other signs that you are not getting enough air as you sleep. Present your findings to your doctor if you suspect that you do have apnea. If you are over weight, going on a diet can reduce your sleep apnea, or in rare cases, eliminate it completely. Maintaining a healthy weight can help you breathe easier, so losing weight and maintaining a healthy weight when you have trouble breathing is an obvious step in treating your sleep apnea. Do not take sleeping pills if you suffer from sleep apnea. These pills are not recommended if you suffer from this condition because they relax the muscles of your throat. Skipping them can actually help you get a better night of sleep because your apnea symptoms are not aggravated. If you tend to snore a lot and have difficulties staying asleep, you should go see your doctor right away. You might have a condition known as sleep apnea: find an effective treatment so you can get enough sleep and go through your daily activities without being held back by your health problem. Clear up your nasal passage before heading to bed. If you suffer from sleep apnea and have problems with a "stuffed up" nose, using a nasal spray or device can help clear your nasal airway. This is not a permanent solution, but one you can use when your apnea symptoms are the worst. An excellent way to help lessen the effects of sleep apnea is by losing weight. Sometimes, losing weight is all it takes to get rid of sleep apnea. Even a nominal amount of weight loss will go a long way in improving your breathing at night. Avoid any type of drugs or alcohol if you are experiencing any type of sleep apnea. Drugs and alcohol will slow down your respiratory system, and that is known to be one of the causes of sleep apnea. If you are struggling with this issue, try to get some professional help to overcome these addictions. If you are a trucker who has sleep apnea, take precautions to stay safe on the road. First of all, get yourself properly diagnosed and treated. If your doctor prescribes a CPAP, use it. They are small and easily portable and can run on battery power if necessary. Try to stay fit and get regular sleep to keep your condition under control. Sleep apnea can cause many problems beyond just the inability to get a good night\'s sleep. If you let your condition go untreated, it may get worse over time. Getting enough sleep is crucial to your overall level of health, so start using the tips you have read in this article right away to find relief. <a href=https:\/\/www.viagrasansordonnancefr.com\/>viagrasansordonnancefr.com<\/a>