{"id":74966,"date":"2023-12-08T14:55:48","date_gmt":"2023-12-08T13:55:48","guid":{"rendered":"https:\/\/kinsta.com\/fr\/?p=74966&#038;preview=true&#038;preview_id=74966"},"modified":"2023-12-15T18:15:12","modified_gmt":"2023-12-15T17:15:12","slug":"notifications-slack-vers-application","status":"publish","type":"post","link":"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/","title":{"rendered":"Communication Slack en temps r\u00e9el avec votre application Python h\u00e9berg\u00e9e par Kinsta"},"content":{"rendered":"<p>Dans le domaine de l&rsquo;h\u00e9bergement de haute performance et des outils de d\u00e9veloppement polyvalents, Kinsta se distingue comme une plateforme de premier plan pour <a href=\"https:\/\/kinsta.com\/fr\/hebergement-wordpress\/\">WordPress<\/a>, les <a href=\"https:\/\/sevalla.com\/application-hosting\/\">applications<\/a>, les <a href=\"https:\/\/sevalla.com\/database-hosting\/\">bases de donn\u00e9es<\/a> et m\u00eame l&rsquo;<a href=\"https:\/\/sevalla.com\/static-site-hosting\/\">h\u00e9bergement gratuit de sites statiques<\/a>.<\/p>\n<p><a href=\"https:\/\/kinsta.com\/fr\/blog\/comment-utiliser-slack\/\">Slack<\/a>, r\u00e9put\u00e9 pour ses commandes Slash, s&rsquo;int\u00e8gre parfaitement aux applications et services h\u00e9berg\u00e9s par Kinsta, ce qui permet aux utilisateurs d&rsquo;automatiser des t\u00e2ches et d&rsquo;am\u00e9liorer consid\u00e9rablement leur efficacit\u00e9.<\/p>\n<p>Ce guide explique comment \u00e9tablir une communication en temps r\u00e9el entre Slack et une application Python h\u00e9berg\u00e9e sur Kinsta. En exploitant mes commandes Slash, les utilisateurs de l&rsquo;application ont la possibilit\u00e9 de cr\u00e9er, interroger et supprimer rapidement des produits.<\/p>\n<p>Cette int\u00e9gration leur permet de mettre \u00e0 jour dynamiquement leur inventaire de produits, garantissant ainsi des r\u00e9ponses rapides aux besoins des clients.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Comprendre les commandes Slack<\/h2>\n<p>Les commandes Slack sont des raccourcis textuels. Elles commencent par une barre oblique (<code>\/<\/code>) suivie d&rsquo;un mot-cl\u00e9 sp\u00e9cifique et d&rsquo;un param\u00e8tre facultatif.<\/p>\n<p>Les commandes Slash d\u00e9clenchent des actions ou interagissent directement avec des int\u00e9grations dans l&rsquo;interface Slack. Par exemple, <code>\/remind<\/code> permet de d\u00e9finir des rappels directement par le biais des notifications Slack.<\/p>\n<p>Gr\u00e2ce aux <a href=\"https:\/\/kinsta.com\/fr\/blog\/integrations-slack\/\">int\u00e9grations Slack<\/a>, vous pouvez configurer des commandes personnalis\u00e9es pour vos applications. Dans ce tutoriel, votre \u00e9quipe peut interroger sans effort l&rsquo;inventaire de notre application produit \u00e0 l&rsquo;aide de la commande Slash <code>\/check_inventory<\/code> et d&rsquo;autres commandes.<\/p>\n<p>L&rsquo;int\u00e9gration de Slack \u00e0 vos applications favorise une interaction transparente et des flux de travail rationalis\u00e9s dans un environnement de travail moderne. Elle am\u00e9liore la communication et la productivit\u00e9 via :<\/p>\n<ul>\n<li><strong>Un centre de communication centralis\u00e9<\/strong> &#8211; Slack sert d&rsquo;espace unifi\u00e9 pour les \u00e9quipes. L&rsquo;int\u00e9gration d&rsquo;applications dans Slack permet de consolider les canaux, de conserver les conversations et les informations en un seul endroit et de renforcer l&rsquo;efficacit\u00e9.<\/li>\n<li><strong>Mises \u00e0 jour en temps r\u00e9el<\/strong> &#8211; Les applications int\u00e9gr\u00e9es fournissent des alertes instantan\u00e9es sur les \u00e9v\u00e8nements cl\u00e9s, ce qui permet \u00e0 chacun de rester inform\u00e9 et de r\u00e9agir rapidement aux changements ou aux mises \u00e0 jour.<\/li>\n<li><strong>Rationalisation des flux de travail<\/strong> &#8211; Les int\u00e9grations automatisent les t\u00e2ches telles que les notifications des outils de gestion de projet ou le d\u00e9clenchement d&rsquo;actions dans les logiciels de gestion de la relation client, r\u00e9duisant ainsi le travail manuel.<\/li>\n<li><strong>Collaboration am\u00e9lior\u00e9e<\/strong> &#8211; Les membres de l&rsquo;\u00e9quipe qui acc\u00e8dent aux applications directement depuis Slack favorisent une collaboration transparente. Ils peuvent facilement partager, modifier des fichiers et discuter de projets, ce qui favorise le travail d&rsquo;\u00e9quipe entre les diff\u00e9rentes fonctions.<\/li>\n<\/ul>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Vous pouvez utiliser l&rsquo;<a href=\"https:\/\/kinsta.com\/fr\/docs\/api-kinsta\/\">API Kinsta<\/a> et les commandes Slash de Slack pour <a href=\"https:\/\/kinsta.com\/fr\/blog\/construire-slackbot-nodejs-api-kinsta-gesion-site\/\">g\u00e9rer vos applications, bases de donn\u00e9es et sites<\/a> h\u00e9berg\u00e9s sur Kinsta.<\/p>\n<\/aside>\n\n<h2>Comment cr\u00e9er une application Python sur Kinsta<\/h2>\n<p>Construisons et d\u00e9ployons une application de gestion de produits sur Kinsta. Ensuite, int\u00e9grez-la \u00e0 Slack pour explorer les commandes Slash. Les utilisateurs peuvent ajouter, supprimer et interroger les produits de l&rsquo;inventaire via les commandes Slash dans Slack.<\/p>\n<h3>Pr\u00e9-requis<\/h3>\n<p>Pour suivre ce guide, nous supposons que vous avez :<\/p>\n<ul>\n<li>Des connaissances de base en <a href=\"https:\/\/kinsta.com\/fr\/sujets\/python\/\">Python<\/a><\/li>\n<li>Un <a href=\"https:\/\/slack.com\/workspace-signin\" target=\"_blank\" rel=\"noopener noreferrer\">compte Slack<\/a><\/li>\n<\/ul>\n<p>Tout d&rsquo;abord, configurons un projet Python sur Kinsta. Pour cema, suivez les \u00e9tapes ci-dessous :<\/p>\n<ol start=\"1\">\n<li>Visitez le <a href=\"https:\/\/github.com\/kinsta\/hello-world-python\" target=\"_blank\" rel=\"noopener noreferrer\">mod\u00e8le Python de Kinsta<\/a> sur GitHub.<\/li>\n<li>S\u00e9lectionnez <strong>Utiliser ce mod\u00e8le<\/strong> &gt; <strong>Cr\u00e9er un nouveau d\u00e9p\u00f4t<\/strong> pour copier le code de d\u00e9marrage dans un d\u00e9p\u00f4t au sein de votre compte <a href=\"https:\/\/kinsta.com\/fr\/blog\/base-de-connaissances-github\/\">GitHub<\/a>.<\/li>\n<li>Une fois que votre d\u00e9p\u00f4t est pr\u00eat, connectez-vous ou cr\u00e9ez un compte pour afficher votre tableau de bord <a href=\"https:\/\/my.kinsta.com\/?lang=fr\" target=\"_blank\" rel=\"noopener noreferrer\">MyKinsta<\/a>.<\/li>\n<li>Autorisez Kinsta avec votre fournisseur Git <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/bitbucket#grant-access-to-the-kinsta-bitbucket-application\">(Bitbucket<\/a>, <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/github#authenticate-and-authorize\">GitHub<\/a> ou <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/gitlab#authorize-the-kinsta-gitlab-application\">GitLab<\/a>).<\/li>\n<li>Cliquez sur <strong>Applications<\/strong> dans la colonne lat\u00e9rale de gauche, puis sur <strong>Ajouter une application<\/strong>.<\/li>\n<li>S\u00e9lectionnez le d\u00e9p\u00f4t et la branche \u00e0 partir desquels vous souhaitez d\u00e9ployer.<\/li>\n<li>Attribuez un nom unique \u00e0 votre application et choisissez l&#8217;emplacement du centre de donn\u00e9es.<\/li>\n<li>Configurez ensuite votre environnement de construction. S\u00e9lectionnez la configuration <strong>Machine de construction standard<\/strong> avec l&rsquo;option <a href=\"https:\/\/docs.sevalla.com\/applications\/build-options\/nixpacks\">Nixpacks<\/a> recommand\u00e9e pour cette d\u00e9mo.<\/li>\n<li>Utilisez toutes les configurations par d\u00e9faut, puis cliquez sur <strong>Cr\u00e9er une application<\/strong>.<\/li>\n<\/ol>\n<p>Le d\u00e9ploiement prend g\u00e9n\u00e9ralement quelques minutes et, en cas de succ\u00e8s, vous recevrez un lien vers votre application ainsi qu&rsquo;un tableau de bord contenant des informations sur le d\u00e9ploiement.<\/p>\n<h2>Comment configurer l&rsquo;int\u00e9gration de Slack dans une application Python<\/h2>\n<p>Commen\u00e7ons par cr\u00e9er une application Slack, puis configurons les commandes Slash qui seront connect\u00e9es \u00e0 votre application Python via des jetons. Configurons une application Slack :<\/p>\n<ol start=\"1\">\n<li>Acc\u00e9dez au tableau de bord de l&rsquo;<a href=\"https:\/\/api.slack.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">API Slack<\/a>.<\/li>\n<li>Cliquez sur <strong>Cr\u00e9er une nouvelle application<\/strong> et choisissez <strong>\u00c0 partir de z\u00e9ro<\/strong>.<\/li>\n<li>Nommez votre application Slack (par exemple, <strong>product-inventory<\/strong>).<\/li>\n<li>S\u00e9lectionnez l&rsquo;espace de travail et cliquez sur <strong>Cr\u00e9er une application<\/strong>.<\/li>\n<\/ol>\n<p>Maintenant, pour l&rsquo;authentification :<\/p>\n<ol start=\"1\">\n<li>Activez le <strong>mode Socket<\/strong> dans la colonne lat\u00e9rale de votre tableau de bord Slack.<\/li>\n<li>G\u00e9n\u00e9rez un jeton au niveau de l&rsquo;application en saisissant un nom de jeton et en cliquant sur <strong>G\u00e9n\u00e9rer<\/strong>.<\/li>\n<li>Enregistrez ce jeton au niveau de l&rsquo;application pour configurer les variables environnementales ult\u00e9rieurement.<\/li>\n<\/ol>\n<h3>Comment configurer les commandes Slash<\/h3>\n<p>Pour configurer les commandes Slash de votre application :<\/p>\n<ol start=\"1\">\n<li>Acc\u00e9dez \u00e0 la section <strong>Fonctionnalit\u00e9s<\/strong> sous <strong>Informations de base<\/strong> dans le tableau de bord de l&rsquo;API Slack. Choisissez <strong>Commandes Slash<\/strong>.\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/slack-api-features.png\" alt=\"Le tableau de bord de l'API Slack propose des options pour ajouter des caract\u00e9ristiques et des fonctions.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Le tableau de bord de l&rsquo;API Slack propose des options pour ajouter des caract\u00e9ristiques et des fonctions.<\/figcaption><\/figure><\/li>\n<li>Cliquez sur <strong>Cr\u00e9er une nouvelle commande<\/strong> pour configurer une nouvelle commande.\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/create-slash-command.jpg\" alt=\"Page Cr\u00e9er une nouvelle commande sur Slack.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Page Cr\u00e9er une nouvelle commande sur Slack.<\/figcaption><\/figure><\/li>\n<li>Sur la page Cr\u00e9er une <strong>nouvelle commande<\/strong>, renseignez les d\u00e9tails de votre nouvelle commande Slack. Par exemple, tapez <code>\/hi<\/code> dans le champ Commande. Si vous le souhaitez, ajoutez une br\u00e8ve description telle que \u00ab\u00a0Says hello !\u00a0\u00bb et fournissez un indice d&rsquo;utilisation. Cliquez sur <strong>Enregistrer<\/strong>.<\/li>\n<li>Dans la section Installer l&rsquo;application de la colonne lat\u00e9rale, cliquez sur <strong>Installer dans l&rsquo;espace de travail<\/strong>.<\/li>\n<li>Acc\u00e9dez au jeton OAuth de l&rsquo;utilisateur du robot en acc\u00e9dant \u00e0 <strong>OAuth &#038; Permissions<\/strong> dans la colonne lat\u00e9rale. Enregistrez ce jeton pour r\u00e9f\u00e9rence ult\u00e9rieure.<\/li>\n<\/ol>\n<h3>Comment ajouter des jetons au d\u00e9ploiement de l&rsquo;application Kinsta<\/h3>\n<ol start=\"1\">\n<li>Allez dans la section <strong>Variables d&rsquo;environnement <\/strong>sous <strong>R\u00e9galges<\/strong> du d\u00e9ploiement de votre application dans MyKinsta.<\/li>\n<li>Cliquez sur <strong>Ajouter une variable d&rsquo;environnement<\/strong>.\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/environment-variables-kinsta.png\" alt=\"La fen\u00eatre contextuelle Ajouter une variable d'environnement Slack s'affiche.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">La fen\u00eatre contextuelle Ajouter une variable d&rsquo;environnement Slack s&rsquo;affiche.<\/figcaption><\/figure><\/li>\n<li>Pour la <strong>cl\u00e9 1<\/strong>, SLACK_BOT_TOKEN, collez le jeton OAuth de l&rsquo;utilisateur du bot dans la <strong>valeur 1<\/strong>. Pour la <strong>cl\u00e9 2<\/strong>, SLACK_APP_TOKEN, collez le jeton de niveau application dans la <strong>valeur 2<\/strong>.<\/li>\n<li>Assurez-vous que les deux options sont coch\u00e9es et cliquez sur <strong>D\u00e9ployer maintenant<\/strong> pour que Kinsta puisse red\u00e9ployer votre application avec les variables d&rsquo;environnement.<\/li>\n<\/ol>\n<h2>Comment impl\u00e9menter la communication en temps r\u00e9el<\/h2>\n<p>Pour cette d\u00e9mo, vous utilisez le <a href=\"https:\/\/github.com\/kinsta\/hello-world-python\" target=\"_blank\" rel=\"noopener noreferrer\">mod\u00e8le Python de Kinsta<\/a>, qui contient les fichiers suivants :<\/p>\n<ul>\n<li><strong>Procfile<\/strong> &#8211; Sp\u00e9cifie les commandes pour ex\u00e9cuter votre application.<\/li>\n<li><strong>requirements.txt<\/strong> &#8211; Liste les d\u00e9pendances n\u00e9cessaires \u00e0 l&rsquo;application Python.<\/li>\n<li><strong>server.py<\/strong> &#8211; Le fichier principal de l&rsquo;application Python, qui g\u00e8re les fonctionnalit\u00e9s ou les op\u00e9rations c\u00f4t\u00e9 serveur.<\/li>\n<\/ul>\n<p>Kinsta cr\u00e9e automatiquement un <a href=\"https:\/\/docs.sevalla.com\/applications\/processes\">processus<\/a> bas\u00e9 sur le <strong>Procfile <\/strong>dans la racine du r\u00e9f\u00e9rentiel lors du d\u00e9ploiement d&rsquo;une application. Le <strong>Procfile<\/strong> contient le code suivant.<\/p>\n<pre><code class=\"language-python\">web: python server.py<\/code><\/pre>\n<p>Cette commande ex\u00e9cute le code que <strong>server.py<\/strong> contient. Kinsta installe \u00e9galement les d\u00e9pendances Python dans <strong>requirements.txt<\/strong> lors du d\u00e9ploiement et du red\u00e9ploiement.<\/p>\n<p>Maintenant, utilisons le <a href=\"https:\/\/slack.dev\/bolt-python\/concepts\" target=\"_blank\" rel=\"noopener noreferrer\">framework Bolt<\/a> pour mettre en place une communication en temps r\u00e9el avec votre application. Ajoutez les lignes suivantes \u00e0 votre fichier <strong>requirements.txt<\/strong> pour installer automatiquement Bolt sur votre application Python lorsque vous mettez \u00e0 jour le r\u00e9f\u00e9rentiel.<\/p>\n<pre><code class=\"language-markdown\">slack-bolt==1.18.0\nslack-sdk==3.23.0<\/code><\/pre>\n<p>Ajoutez \u00e9galement la biblioth\u00e8que <code>psycopg2<\/code> au fichier <strong>requirements.txt<\/strong>. Elle sera utilis\u00e9e pour se connecter \u00e0 une base de donn\u00e9es Postgres.<\/p>\n<pre><code class=\"language-markdown\">psycopg2-binary==2.9.9<\/code><\/pre>\n<h3>Comment impl\u00e9menter une base de donn\u00e9es Postgres avec Kinsta<\/h3>\n<p>L&rsquo;application d&rsquo;inventaire des produits a besoin d&rsquo;un moyen de conserver les donn\u00e9es sur les produits que les commandes Slash ajoutent \u00e0 la <a href=\"https:\/\/kinsta.com\/database\/\">base de donn\u00e9es<\/a>. Pour cr\u00e9er un stockage de donn\u00e9es persistant, vous pouvez utiliser la base de donn\u00e9es h\u00e9berg\u00e9e de Kinsta.<\/p>\n<ol start=\"1\">\n<li>Tout d&rsquo;abord, d\u00e9ployez une <a href=\"https:\/\/sevalla.com\/database-hosting\/\">base de donn\u00e9es Postgres<\/a> sur votre tableau de bord Kinsta en acc\u00e9dant \u00e0 la section <strong>Bases de donn\u00e9es<\/strong> dans la barre lat\u00e9rale du tableau de bord MyKinsta.<\/li>\n<li>Cliquez sur <strong>Cr\u00e9er une base de donn\u00e9es<\/strong>. Configurez les d\u00e9tails de votre base de donn\u00e9es en entrant un nom et en s\u00e9lectionnant le type de base de donn\u00e9es. S\u00e9lectionnez l&rsquo;option <strong>PostgreSQL<\/strong> et configurez la taille souhait\u00e9e. Un <strong>nom d&rsquo;utilisateur<\/strong> et un <strong>mot de passe<\/strong> pour <strong>la base de donn\u00e9es<\/strong> sont automatiquement g\u00e9n\u00e9r\u00e9s :\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/create-database-app.png\" alt=\"Formulaire de cr\u00e9ation d'une base de donn\u00e9es.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Formulaire de cr\u00e9ation d&rsquo;une base de donn\u00e9es.<\/figcaption><\/figure><\/li>\n<li>Cliquez sur <strong>Continuer<\/strong> pour terminer la configuration de votre base de donn\u00e9es. Attendez que la base de donn\u00e9es PostgreSQL soit cr\u00e9\u00e9e.<br \/>\nUne fois la cr\u00e9ation r\u00e9ussie, pour obtenir votre cha\u00eene de connexion pour l&rsquo;acc\u00e8s externe \u00e0 votre base de donn\u00e9es, naviguez jusqu&rsquo;\u00e0 la section <strong>Connexions externes<\/strong> du tableau de bord de votre base de donn\u00e9es d\u00e9ploy\u00e9e et copiez la cha\u00eene de connexion externe.<\/p>\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/basic-info-database.png\" alt=\"Informations sur la connexion externe de la base de donn\u00e9es.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Informations sur la connexion externe de la base de donn\u00e9es.<\/figcaption><\/figure>\n<p>Vous pouvez maintenant utiliser cette cha\u00eene de connexion pour vous connecter \u00e0 la base de donn\u00e9es depuis votre application Python.<\/p>\n<p><aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Depuis le tableau de bord de votre application Python, enregistrez la cha\u00eene de connexion en tant que variable d&rsquo;environnement sous <code>DATABASE_CONNECTION_STRING<\/code>, comme vous l&rsquo;avez fait pr\u00e9c\u00e9demment avec vos jetons Slack.<\/p>\n<\/aside>\n<\/li>\n<li>Dans votre projet Python, cr\u00e9ez un fichier <strong>db.py<\/strong> dans votre r\u00e9pertoire de projet pour les fonctions d&rsquo;initialisation de la base de donn\u00e9es. Ajoutez le code suivant :\n<pre><code class=\"language-python\">import psycopg2\nimport os\n\n# get connection string from environment variable\nconnection_string = os.environ.get(\"DATABASE_CONNECTION_STRING\")\n \ndef get_conn():\n   # create connection\n   conn = psycopg2.connect(connection_string)\n\n   # Return connection to the database\n   return conn\n     \ndef init_db():\n   # get connection\n   conn = get_conn()\n\n   # get cursor\n   cur = conn.cursor()\n\n   cur.execute(\"\"\"\n       DROP TABLE IF EXISTS products;\n                   \n       CREATE TABLE products (\n           id INTEGER PRIMARY KEY,\n           name TEXT UNIQUE NOT NULL,\n           quantity INTEGER NOT NULL\n       );\n   \"\"\")\n\n   cur.close()\n   conn.commit()\n   conn.close()<\/code><\/pre>\n<p>Lorsque la fonction <code>get_conn()<\/code> est appel\u00e9e, elle cr\u00e9e et renvoie une connexion \u00e0 la base de donn\u00e9es Kinsta d\u00e9ploy\u00e9e en utilisant votre cha\u00eene de connexion externe.<\/p>\n<p>La fonction <code>init_db()<\/code> obtient une connexion \u00e0 la base de donn\u00e9es, d\u00e9finit le sch\u00e9ma de la base de donn\u00e9es et cr\u00e9e la table tout en validant les modifications. Vous ne devez appeler la fonction <code>init_db()<\/code> qu&rsquo;une seule fois lors de la configuration initiale du serveur d&rsquo;application. Utilisez la fonction <code>get_conn()<\/code> dans les appels suivants pour obtenir une connexion \u00e0 la base de donn\u00e9es.<\/li>\n<\/ol>\n<h3>Comment impl\u00e9menter les gestionnaires de commandes Slash<\/h3>\n<p>Maintenant, construisez le code du serveur d&rsquo;application.<\/p>\n<ol start=\"1\">\n<li>Supprimez le contenu du fichier <strong>server.py<\/strong> et importez les biblioth\u00e8ques suivantes :\n<pre><code class=\"language-python\">import os\nfrom slack_bolt import App\nfrom slack_bolt.adapter.socket_mode import SocketModeHandler\nfrom db import get_conn, init_db\nfrom psycopg2 import DatabaseError<\/code><\/pre>\n<p>Celles-ci sont n\u00e9cessaires pour les fonctionnalit\u00e9s de l&rsquo;application Slack, les connexions \u00e0 la base de donn\u00e9es et la gestion des erreurs.<\/li>\n<li>Ajoutez le code suivant au fichier <strong>server.py<\/strong> apr\u00e8s les d\u00e9clarations d&rsquo;importation :\n<pre><code class=\"language-python\"># Initialize your app with your bot token\napp = App(\n  token=os.environ.get(\"SLACK_BOT_TOKEN\"),\n)<\/code><\/pre>\n<p>La classe <code>App<\/code> de <code>slack_bolt<\/code> est utilis\u00e9e pour cr\u00e9er une instance de l&rsquo;application Slack. Elle initialise l&rsquo;application avec le jeton OAuth de l&rsquo;utilisateur du robot r\u00e9cup\u00e9r\u00e9 dans la variable d&rsquo;environnement <code>SLACK_BOT_TOKEN<\/code>.<\/li>\n<li>Ensuite, d\u00e9ployez un gestionnaire pour la commande Slash <code>\/hi<\/code> que vous avez ajout\u00e9e \u00e0 votre application Slack plus t\u00f4t. Ajoutez les lignes suivantes au fichier <strong>server.py<\/strong>.\n<pre><code class=\"language-python\"># The hi command simply sends back a greeting\n@app.command(\"\/hi\")\ndef send_hello(ack, respond, command):\n  # Acknowledge command request\n  ack()\n  respond(f\"Hello!\")<\/code><\/pre>\n<p>Le fichier <code>@app.command()<\/code> cr\u00e9e un r\u00e9cepteur pour la cha\u00eene de commande transmise en tant qu&rsquo;argument et met en correspondance la fonction suivante avec les requ\u00eates de cette commande Slash. La fonction <code>send_hello()<\/code> g\u00e8re la logique de la requ\u00eate.<\/p>\n<p>Le code transmet \u00e9galement les variables de requ\u00eate <code>ack<\/code>, <code>respond<\/code> et <code>command<\/code> \u00e0 la fonction. Appelez <code>ack<\/code> pour accuser r\u00e9ception de la requ\u00eate de la commande Slash, car il s&rsquo;agit de la premi\u00e8re \u00e9tape avant la poursuite du traitement, et appelez <code>respond<\/code> pour renvoyer une r\u00e9ponse textuelle.<\/p>\n<p>Lorsque l&rsquo;utilisateur tape la commande Slash <code>\/hi<\/code> dans votre espace de travail Slack, il obtient la r\u00e9ponse \u00ab Hello ! \u00bb<\/li>\n<li>Retournez au tableau de bord de votre application Slack et ajoutez les commandes suivantes.<br \/>\n<table>\n<tbody>\n<tr>\n<td colspan=\"1\" rowspan=\"1\"><strong>Commande<\/strong><\/td>\n<td colspan=\"1\" rowspan=\"1\"><strong>Br\u00e8ve description<\/strong><\/td>\n<td colspan=\"1\" rowspan=\"1\"><strong>Conseil d&rsquo;utilisation<\/strong><\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\"><code>\/add_product<\/code><\/td>\n<td colspan=\"1\" rowspan=\"1\">Ajouter un produit \u00e0 l&rsquo;inventaire.<\/td>\n<td colspan=\"1\" rowspan=\"1\">product_id, product_name, product_quantity<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\"><code>\/check_inventory<\/code><\/td>\n<td colspan=\"1\" rowspan=\"1\">Rechercher dans l&rsquo;inventaire un produit dont l&rsquo;ID correspond.<\/td>\n<td colspan=\"1\" rowspan=\"1\">product_id<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\"><code>\/delete_product<\/code><\/td>\n<td colspan=\"1\" rowspan=\"1\">Supprimer de l&rsquo;inventaire le produit dont l&rsquo;ID correspond.<\/td>\n<td colspan=\"1\" rowspan=\"1\">product_id<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Votre page de <strong>commandes Slash<\/strong> devrait ressembler \u00e0 la capture d&rsquo;\u00e9cran suivante, qui contient une liste de commandes et leurs d\u00e9tails.<\/p>\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/all-slash-commands.png\" alt=\"Page d'API de commandes Slack.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Page d&rsquo;API de commandes Slack.<\/figcaption><\/figure><\/li>\n<li>Ajoutez le gestionnaire <code>\/add_product<\/code> au fichier <strong>server.py<\/strong>.\n<pre><code class=\"language-python\"># command to add products\n@app.command(\"\/add_product\")\ndef add_product(ack, respond, command, request):\n #Acknowledge command request\n ack()\n\n # Extract payload from request\n payload = request.body['text']\n id, name, quantity = [i.strip() for i in payload.split(\",\")]\n  \n # conn object\n conn = None\n\n try:\n   # get conn\n   conn = get_conn()\n\n   # get cursor\n   cur = conn.cursor()\n\n   # Insert product into the database\n   cur.execute(\n     \"INSERT INTO products (id, name, quantity) VALUES (%s, %s, %s)\",\n       (int(id), name, int(quantity))\n   )\n   \n   # close communication with postgresql\n   cur.close()\n   \n   # commit changes\n   conn.commit()\n   \n   # Response\n   respond(f\"\"\"Added product to inventory:\n     id - {id},\n     name - {name},\n     quantity - {quantity}\n   \"\"\")\n\n except DatabaseError:\n   # Send a response\n   respond(f\"Product with ID {id} exists in inventory!\")\n  \n finally:\n   # close connection\n   if conn is not None:\n     conn.close()<\/code><\/pre>\n<p><code>request.body<\/code> acc\u00e8de \u00e0 la charge utile compl\u00e8te de la requ\u00eate que Slack envoie pendant le processus de traitement.<\/p>\n<p>Lorsqu&rsquo;un utilisateur tape la commande <code>\/add_product<\/code> Slash, l&rsquo;application envoie l&rsquo;exemple suivant de charge utile JSON sous la forme d&rsquo;une requ\u00eate POST.<\/p>\n<pre><code class=\"language-python\">{\n    'token': , \n    'team_id': , \n    'team_domain': , \n    'channel_id': , \n    'channel_name': , \n    'user_id': , \n    'user_name': , \n    'command': '\/add_product', \n    'text': '1, notebook, 5', \n    'api_app_id': , \n    'is_enterprise_install': , \n    'response_url': , \n    'trigger_id': \n}<\/code><\/pre>\n<p>Les champs <code>command<\/code> et <code>text<\/code> sont inclus. <code>command<\/code> contient la commande Slash d\u00e9clench\u00e9e tandis que <code>text<\/code> contient son texte additionnel. Par exemple, si l&rsquo;utilisateur tape la commande <code>\/add_product 1, notebook, 5<\/code>, <code>text<\/code> contient \u00ab\u00a01, notebook, 5\u00a0\u00bb.<\/p>\n<p>Le gestionnaire <code>add_product<\/code> extrait l&rsquo;ID, le nom et la quantit\u00e9 du produit de la demande de l&rsquo;utilisateur et se connecte \u00e0 la base de donn\u00e9es \u00e0 l&rsquo;aide de la fonction d&rsquo;aide <code>get_conn()<\/code>. Il ex\u00e9cute \u00e9galement une op\u00e9ration SQL d&rsquo;insertion pour ajouter le produit \u00e0 la base de donn\u00e9es. Si l&rsquo;identifiant du produit existe d\u00e9j\u00e0 dans la base de donn\u00e9es, le code traite l&rsquo;erreur et r\u00e9pond que l&rsquo;identifiant existe d\u00e9j\u00e0.<\/li>\n<li>Ajoutez maintenant le reste des gestionnaires de commandes au fichier <strong>server.py<\/strong>.\n<pre><code class=\"language-python\"># command to check inventory for a product_id\n@app.command(\"\/check_inventory\")\ndef check_inventory(ack, respond, command, request):\n   # Acknowledge command request\n   ack()\n\n   # Extract payload from request\n   id = request.body['text'].strip()\n\n   # Get a database connection\n   conn = None\n   try:\n       # get conn\n       conn = get_conn()\n\n       # get cursor\n       cur = conn.cursor()\n \n       # Fetch matching product with ID from database\n       cur.execute(\n           \"SELECT * FROM products WHERE id=%s\",\n           (int(id),)\n       )\n\n       product = cur.fetchone()\n\n       # close comms\n       cur.close()\n\n       if product is None:\n           respond(f\"No product with matching ID {id} found.\")\n       else:\n           # Deconstruct tuple if the product exists\n           _, name, quantity = product\n          \n           respond(f\"\"\"Product with ID {id} found:\n                      name - {name},\n                      quantity - {quantity}\n                  \"\"\")\n         \n   except Exception as e:\n       print(\"Connection error: %s\", e)\n         \n   finally:\n       # close connection\n       if conn is not None:\n           conn.close()\n\n# command to delete the matching product_id from inventory\n@app.command(\"\/delete_product\")\ndef delete_product(ack, respond, command, request):\n    #Acknowledge command request\n    ack()\n\n    # Extract payload from request\n    id = request.body['text'].strip()\n    \n    # Get connection\n    conn = None\n    try:\n        # Get connection\n        conn = get_conn()\n   \t \n        # get cursor\n        cur = conn.cursor()\n   \t \n        # Insert the product into the database\n        cur.execute(\n        \t\"DELETE FROM products WHERE id = %s\",\n        \t(int(id),)\n        )\n        cur.close()\n        conn.commit()\n   \t \n        # Response\n        respond(f\"Product with ID {id} deleted from inventory!\")\n    except Exception as e:\n        print(\"Connection error: %s\", e)\n    finally:\n        # close connection\n        if conn is not None:\n            conn.close()\n<\/code><\/pre>\n<p>Ces deux gestionnaires de commandes interrogent et suppriment respectivement l&rsquo;ID de produit correspondant dans l&rsquo;inventaire.<\/li>\n<\/ol>\n<h3>Comment mancer le serveur<\/h3>\n<ol start=\"1\">\n<li>Pour r\u00e9unir l&rsquo;initialisation de la base de donn\u00e9es et la connexion \u00e0 la socket, ajoutez les lignes suivantes \u00e0 votre fichier <strong>server.py<\/strong>.\n<pre><code class=\"language-python\"># Start your app\nif __name__ == \"__main__\":\n    # Initialize database on start\n    init_db()\n\n    # Connect socket\n    handler = SocketModeHandler(app, os.environ[\"SLACK_APP_TOKEN\"])\n    handler.start()<\/code><\/pre>\n<p>Vous devez initialiser <code>SocketModeHandler<\/code> avec votre jeton au niveau de l&rsquo;application. Utilisez <code>SLACK_APP_TOKEN<\/code> pour acc\u00e9der \u00e0 la variable d&rsquo;environnement d\u00e9ploy\u00e9e dans l&rsquo;application Kinsta.<\/li>\n<li>Livrez les changements \u00e0 votre d\u00e9p\u00f4t distant pour les d\u00e9ployer automatiquement dans Kinsta. Maintenant, <strong>server.py<\/strong> initialise la base de donn\u00e9es et \u00e9tablit la connexion socket. Kinsta va d\u00e9clencher un red\u00e9ploiement automatique de votre application Python.<\/li>\n<\/ol>\n<h2>Tester et d\u00e9panner votre application<\/h2>\n<p>Vous pouvez tester votre application sur Slack en utilisant les commandes Slash configur\u00e9es.<\/p>\n<ol start=\"1\">\n<li style=\"list-style-type: none\">\n<ol start=\"1\">\n<li>Allez dans l&rsquo;espace de travail associ\u00e9 \u00e0 votre application. Saisissez la barre oblique (&lsquo;\/&rsquo;) pour afficher les commandes de l&rsquo;application :\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/testing-slack-slash-commands.png\" alt=\"Le canal kinsta-demo.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Le canal kinsta-demo.<\/figcaption><\/figure><\/li>\n<li>Testez chaque commande Slash. Par exemple, saisissez <code>\/hi<\/code>. Vous obtenez la r\u00e9ponse \u00ab Hello ! \u00bb\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/returns-hello.png\" alt=\"R\u00e9ponse \u00e0 la commande Hi.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">R\u00e9ponse \u00e0 la commande Hi.<\/figcaption><\/figure><\/li>\n<li>Testez ce qui se passe lorsque vous ajoutez deux fois le m\u00eame produit. Ex\u00e9cutez deux fois la commande slash <code>\/add_product 1, notepad, 2<\/code>.\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/adding-product.png\" alt=\"Ajout d'un produit deux fois.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Ajout d&rsquo;un produit deux fois.<\/figcaption><\/figure>\n<p>Comme le montre la capture d&rsquo;\u00e9cran ci-dessus, la premi\u00e8re commande a fonctionn\u00e9. Elle a ajout\u00e9 un nouveau produit. La seconde commande a entra\u00een\u00e9 une r\u00e9ponse indiquant que l&rsquo;identifiant existait d\u00e9j\u00e0.<\/li>\n<li>Essayez de rechercher l&rsquo;identifiant du produit que nous venons d&rsquo;ajouter. Saisissez <code>\/check_inventory 1<\/code>.\n<figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/getting-a-product.png\" alt=\"V\u00e9rification de l'inventaire.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">V\u00e9rification de l&rsquo;inventaire.<\/figcaption><\/figure>\n<p>La requ\u00eate a renvoy\u00e9 le produit avec l&rsquo;ID correspondant.<\/li>\n<li>Enfin, essayez de supprimer le produit que vous avez ajout\u00e9. Tapez <code>\/delete_product 1<\/code>.\n<p><figure style=\"width: 1001px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/11\/deleting-inventory.png\" alt=\"Suppression d'un produit.\" width=\"1001\" height=\"471\"><figcaption class=\"wp-caption-text\">Suppression d&rsquo;un produit.<\/figcaption><\/figure><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h3>Comment r\u00e9soudre les probl\u00e8mes<\/h3>\n<p>Lors de la configuration et du d\u00e9ploiement de votre application, vous pouvez rencontrer des erreurs \u00e0 r\u00e9soudre pour que votre application fonctionne correctement. Essayez les m\u00e9thodes suivantes pour d\u00e9tecter et corriger les erreurs typiques.<\/p>\n<ol start=\"1\">\n<li style=\"list-style-type: none\">\n<ol start=\"1\">\n<li style=\"list-style-type: none\">\n<ul>\n<li><strong>V\u00e9rifiez vos jetons <\/strong>: Assurez-vous que vous configurez correctement votre jeton au niveau de l&rsquo;application avec la port\u00e9e <code>connections:write<\/code> pour permettre l&rsquo;acc\u00e8s en mode Socket. Utilisez \u00e9galement les bons jetons pour la classe de l&rsquo;application. Le jeton d&rsquo;utilisateur du robot commence par <code>xoxb-&lt;...&gt;<\/code>. Utilisez le jeton de niveau application (<code>xapp-&lt;...&gt;<\/code>) pour la classe <code>SocketModeHandler<\/code>.<\/li>\n<li><strong>V\u00e9rifiez vos commandes slash <\/strong>: Assurez-vous d&rsquo;avoir configur\u00e9 les commandes Slash sur le tableau de bord de votre application Slack et d&rsquo;avoir configur\u00e9 les bons gestionnaires dans le code de votre serveur d&rsquo;application.<\/li>\n<li><strong>Am\u00e9liorez la gestion des erreurs <\/strong>: Assurez-vous que votre logique d&rsquo;application g\u00e8re correctement les erreurs, par exemple, lors de l&rsquo;ex\u00e9cution d&rsquo;op\u00e9rations de base de donn\u00e9es.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h2>R\u00e9sum\u00e9<\/h2>\n<p>Dans ce guide, vous avez appris \u00e0 construire une application Python avec une communication en temps r\u00e9el via les commandes Slash de Slack. Vous avez \u00e9galement appris \u00e0 d\u00e9ployer l&rsquo;application sur Kinsta.<\/p>\n<p>L&rsquo;int\u00e9gration d&rsquo;une application h\u00e9berg\u00e9e par Kinsta avec Slack permet aux utilisateurs d&rsquo;apporter rapidement des modifications \u00e0 l&rsquo;aide des commandes Slash, ce qui am\u00e9liore l&rsquo;interactivit\u00e9 et l&rsquo;efficacit\u00e9 du flux de travail tout en offrant un acc\u00e8s imm\u00e9diat aux donn\u00e9es en temps r\u00e9el. Le personnel peut d\u00e9sormais ajouter, supprimer ou v\u00e9rifier l&rsquo;inventaire des produits en toute transparence sans quitter leur plateforme de communication, ce qui stimule la productivit\u00e9 au cours d&rsquo;une journ\u00e9e de travail bien remplie.<\/p>\n<p>Le <a href=\"https:\/\/kinsta.com\/fr\/blog\/qu-est-ce-que-paas\/\">PaaS<\/a> de Kinsta offre encore plus de possibilit\u00e9s : vous pouvez connecter des applications et des bases de donn\u00e9es, d\u00e9ployer des solutions compl\u00e8tes pour les soci\u00e9t\u00e9s et les entreprises. Et le meilleur ? <a href=\"https:\/\/kinsta.com\/fr\/inscription\/\">Nous prenons en charge vos 20 premiers euros<\/a> !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans le domaine de l&rsquo;h\u00e9bergement de haute performance et des outils de d\u00e9veloppement polyvalents, Kinsta se distingue comme une plateforme de premier plan pour WordPress, les &#8230;<\/p>\n","protected":false},"author":199,"featured_media":74967,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[1003],"class_list":["post-74966","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-python"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Communication Slack en temps r\u00e9el (avec application Python)<\/title>\n<meta name=\"description\" content=\"Apprenez \u00e0 cr\u00e9er une int\u00e9gration transparente de la communication Slack en temps r\u00e9el pour votre application Python h\u00e9berg\u00e9e sur Kinsta dans ce guide !\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Communication Slack en temps r\u00e9el avec votre application Python h\u00e9berg\u00e9e par Kinsta\" \/>\n<meta property=\"og:description\" content=\"Apprenez \u00e0 cr\u00e9er une int\u00e9gration transparente de la communication Slack en temps r\u00e9el pour votre application Python h\u00e9berg\u00e9e sur Kinsta dans ce guide !\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstafrance\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-12-08T13:55:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-15T17:15:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/slack-notifications-to-app.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Jeremy Holcombe\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Apprenez \u00e0 cr\u00e9er une int\u00e9gration transparente de la communication Slack en temps r\u00e9el pour votre application Python h\u00e9berg\u00e9e sur Kinsta dans ce guide !\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/slack-notifications-to-app.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_fr\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Holcombe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"Communication Slack en temps r\u00e9el avec votre application Python h\u00e9berg\u00e9e par Kinsta\",\"datePublished\":\"2023-12-08T13:55:48+00:00\",\"dateModified\":\"2023-12-15T17:15:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/\"},\"wordCount\":3018,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/slack-notifications-to-app.jpg\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/\",\"url\":\"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/\",\"name\":\"Communication Slack en temps r\u00e9el (avec application Python)\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/slack-notifications-to-app.jpg\",\"datePublished\":\"2023-12-08T13:55:48+00:00\",\"dateModified\":\"2023-12-15T17:15:12+00:00\",\"description\":\"Apprenez \u00e0 cr\u00e9er une int\u00e9gration transparente de la communication Slack en temps r\u00e9el pour votre application Python h\u00e9berg\u00e9e sur Kinsta dans ce guide !\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/slack-notifications-to-app.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/slack-notifications-to-app.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python\",\"item\":\"https:\/\/kinsta.com\/fr\/sujets\/python\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Communication Slack en temps r\u00e9el avec votre application Python h\u00e9berg\u00e9e par Kinsta\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/fr\/#website\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/fr\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstafrance\/\",\"https:\/\/x.com\/kinsta_fr\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\",\"name\":\"Jeremy Holcombe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"caption\":\"Jeremy Holcombe\"},\"description\":\"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/jeremyholcombe\/\"],\"url\":\"https:\/\/kinsta.com\/fr\/blog\/author\/jeremyholcombe\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Communication Slack en temps r\u00e9el (avec application Python)","description":"Apprenez \u00e0 cr\u00e9er une int\u00e9gration transparente de la communication Slack en temps r\u00e9el pour votre application Python h\u00e9berg\u00e9e sur Kinsta dans ce guide !","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/","og_locale":"fr_FR","og_type":"article","og_title":"Communication Slack en temps r\u00e9el avec votre application Python h\u00e9berg\u00e9e par Kinsta","og_description":"Apprenez \u00e0 cr\u00e9er une int\u00e9gration transparente de la communication Slack en temps r\u00e9el pour votre application Python h\u00e9berg\u00e9e sur Kinsta dans ce guide !","og_url":"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstafrance\/","article_published_time":"2023-12-08T13:55:48+00:00","article_modified_time":"2023-12-15T17:15:12+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/slack-notifications-to-app.jpg","type":"image\/jpeg"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"Apprenez \u00e0 cr\u00e9er une int\u00e9gration transparente de la communication Slack en temps r\u00e9el pour votre application Python h\u00e9berg\u00e9e sur Kinsta dans ce guide !","twitter_image":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/slack-notifications-to-app.jpg","twitter_creator":"@kinsta_fr","twitter_site":"@kinsta_fr","twitter_misc":{"\u00c9crit par":"Jeremy Holcombe","Dur\u00e9e de lecture estim\u00e9e":"16 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"Communication Slack en temps r\u00e9el avec votre application Python h\u00e9berg\u00e9e par Kinsta","datePublished":"2023-12-08T13:55:48+00:00","dateModified":"2023-12-15T17:15:12+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/"},"wordCount":3018,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/slack-notifications-to-app.jpg","inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/","url":"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/","name":"Communication Slack en temps r\u00e9el (avec application Python)","isPartOf":{"@id":"https:\/\/kinsta.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/slack-notifications-to-app.jpg","datePublished":"2023-12-08T13:55:48+00:00","dateModified":"2023-12-15T17:15:12+00:00","description":"Apprenez \u00e0 cr\u00e9er une int\u00e9gration transparente de la communication Slack en temps r\u00e9el pour votre application Python h\u00e9berg\u00e9e sur Kinsta dans ce guide !","breadcrumb":{"@id":"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/#primaryimage","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/slack-notifications-to-app.jpg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/slack-notifications-to-app.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/fr\/blog\/notifications-slack-vers-application\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Python","item":"https:\/\/kinsta.com\/fr\/sujets\/python\/"},{"@type":"ListItem","position":3,"name":"Communication Slack en temps r\u00e9el avec votre application Python h\u00e9berg\u00e9e par Kinsta"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/fr\/#website","url":"https:\/\/kinsta.com\/fr\/","name":"Kinsta\u00ae","description":"Solutions d&#039;h\u00e9bergement premium, rapides et s\u00e9curis\u00e9es","publisher":{"@id":"https:\/\/kinsta.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/fr\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/fr\/wp-content\/uploads\/sites\/4\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstafrance\/","https:\/\/x.com\/kinsta_fr","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21","name":"Jeremy Holcombe","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/kinsta.com\/fr\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","caption":"Jeremy Holcombe"},"description":"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.","sameAs":["https:\/\/www.linkedin.com\/in\/jeremyholcombe\/"],"url":"https:\/\/kinsta.com\/fr\/blog\/author\/jeremyholcombe\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/74966","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/users\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/comments?post=74966"}],"version-history":[{"count":5,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/74966\/revisions"}],"predecessor-version":[{"id":75132,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/posts\/74966\/revisions\/75132"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74966\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74966\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74966\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74966\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74966\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74966\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74966\/translations\/es"},{"href":"https:\/\/kinsta.com\/fr\/wp-json\/kinsta\/v1\/posts\/74966\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media\/74967"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/media?parent=74966"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/tags?post=74966"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/fr\/wp-json\/wp\/v2\/topic?post=74966"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}