Aller au contenu

Déployer une plateforme avec Docker

Dans les sections précédentes pour découvrir et tester Tock, vous avez utilisé la plateforme de démonstration. Cela vous a permis de découvrir la construction et la configuration des bots Tock sans avoir à installer la plateforme au préalable.

Dans ce guide, vous allez apprendre à déployer une plateforme complète Tock en quelques minutes, grâce aux exemples d'implémentations Docker / Docker Compose fournies.

Notez qu'il est tout à fait possible de déployer Tock sans utiliser Docker. Une section spécifique du manuel utilisateur vous en apprendra plus sur l'architecture, les possibilités et les recommandations pour le déploiement et l'utilisation de Tock en production.

Ce que vous allez créer

  • Une plateforme Tock complète en local : Tock Studio, Bot API, etc.

  • Un bot et une configuration minimale pour tester la plateforme

  • (Optionnel) Un programme Kotlin se connectant à la plateforme locale en WebSocket

Pré-requis

  • Environ 20 minutes

  • Pour déployer la plateforme en local, un environnement de développement avec des versions récentes de Docker et Docker Compose installées

Si vous ne souhaitez pas utiliser Docker, pas de problème. Il y a d'autres manières de déployer la base MongoDB et les services Kotlin sur JVM. Vous pouvez toutefois parcourir les Dockerfile et docker-compose.yml à titre d'exemples pour instancier ces services.

  • (Optionnel) Pour le programme en WebSocket, un environnement de développement (ou IDE) supportant Kotlin, par exemple IntelliJ avec des versions récentes du JDK et de Maven

Sans IDE ou sans Maven, pas de problème. Il est tout à fait possible de compiler et exécuter le programme avec d'autres outils.

D'autres modes que Kotlin et WebSocket sont présentés dans le manuel utilisateur Tock.

Déployer une plateforme Tock - sans les sources

Il est possible de récupérer seulement quelques fichiers du dépôt GitHub, sans télécharger toutes les sources Tock. En quelques lignes de commande, la plateforme est opérationnelle.

Il est cependant indispensable d'avoir des versions récentes de Docker et Docker Compose.

Pour démarrer depuis les sources du dépôt Tock Docker, passez plutôt au paragraphe suivant.

# Get the lastest docker-compose from GitHub (including Bot API)
$ curl -o docker-compose.yml https://raw.githubusercontent.com/theopenconversationkit/tock-docker/master/docker-compose-bot.yml
# Get the lastest database-init script from GitHub
$ mkdir -p scripts && curl -o scripts/setup.sh https://raw.githubusercontent.com/theopenconversationkit/tock-docker/master/scripts/setup.sh && chmod +x scripts/setup.sh
# Get the lastest Tock version/tag from GitHub
$ curl -o .env https://raw.githubusercontent.com/theopenconversationkit/tock-docker/master/.env

# Run the stack
$ docker-compose up

Déployer une plateforme Tock - depuis les sources

Ceci est une manière alternative de démarrer Tock, à partir du dépôt Tock Docker.

Il vous faut, en plus de Docker et Docker Compose, soit un client Git pour récupérer les sources (commande git clone) soit avoir déjà copié les sources de GitHub en local.

Pour démarrer sans Git ni les sources du dépôt en local, suivez le paragraphe précédent.

# Get the lastest sources from GitHub
$ git clone https://github.com/theopenconversationkit/tock-docker.git && cd tock-docker
# Make the database-init script executable
$ chmod +x scripts/setup.sh

# Run the stack (including Bot API)
$ docker-compose -f docker-compose-bot.yml up

Accéder à Tock Studio

Une fois la plateforme prête, les interfaces Tock Studio sont sur le port 80 par défaut :

Après le déploiement de la plateforme, celle-ci s'initialise, et il peut falloir attendre quelques secondes avant que les interfaces Tock Studio soient accessibles.

  • Connectez-vous avec les identifiants admin@app.com / password par défaut

Il est évidemment recommandé de changer ces valeurs à l'installation d'une plateforme destinée à une utilisation pérenne (production, plateforme partagée entre équipes, etc.).

Créer une application, un connecteur et une intention

Comme dans le guide premier bot utilisant la plateforme de démonstration, vous allez créer une application Tock et un connecteur pour commencer à utiliser la plateforme locale. N'hésitez pas à retourner voir les précédents guides pour plus de commentaires.

Au premier accès à la plateforme locale :

  • Saisissez un nom pour l'application

  • Sélectionnez une langue - vous pourrez en ajouter d'autres par la suite

  • Validez pour créer l'application

  • Allez dans Settings > Configurations

  • Create a new Configuration

  • Sélectionnez le type de connecteur Slack

  • Create

Notez l'API Key automatiquement générée pour votre application. Elle vous servira si vous essayez le mode WebSocket dans la suite de ce guide (optionnel).

  • Allez dans Stories & Answers > New Story

  • Saisissez une phrase utilisateur par exemple "bonjour"

  • Dans le champs Add new Answer, saisissez une réponse par exemple "quelle belle journée!"

  • Terminez avec Create Story

  • Allez dans Test > Test the Bot

  • Dites "bonjour" 🙋, le bot vous répond 🤖

Connecter un parcours en Kotlin (optionnel)

Comme dans le guide programmer des parcours utilisant la plateforme de démonstration, vous allez créer une application Kotlin se connectant en WebSocket à la plateforme Tock locale. N'hésitez pas à retourner voir les précédents guides pour plus de détails.

Le classpath doit inclure tock-bot-api-websocket pour utiliser le mode WebSocket.

  • Créez un fichier Kotlin (par exemple dans `src/main/kotlin/StartWebSocket.kt)

  • Editez-le avec le code suivant :

import ai.tock.bot.api.client.newBot
import ai.tock.bot.api.client.newStory
import ai.tock.bot.api.websocket.start

fun main() {
    start( // Do not use #startWithDemo when integrating with a local platform 
        newBot(
            "PUT-YOUR-TOCK-APP-API-KEY-HERE", // Get your app API key from Bot Configurations in Tock Studio
            newStory("qui-es-tu") { // Answer for the 'qui-es-tu' story
                send("Je suis un assistant conversationnel construit avec Tock")
                end("Comment puis-je aider ?")
            }
        ),
        "http://localhost:8080" // Local platform URL (default host/port)
    ) 
}

Vous pouvez retrouver ce code (et d'autres exemples) dans le dépôt tock-bot-samples.

  • Remplacez la clef d'API par celle de votre propre application Tock. Pour cela, dans Tock Studio, allez dans Settings > Configurations et reportez la valeur API Key dans le code.

  • Exécutez la fonction (main) dans votre environnement de développement.

  • Retournez dans Tock dans Test > Test the Bot et dites "qui es-tu ?" : le bot ne répond pas encore.

  • Allez dans Language Understanding > Inbox, pour la phrase que vous venez de saisir :

    • Changez l'intention pour New intent

    • Nommez-la "qui-es-tu" comme dans le code (pour que le lien se fasse)

    • Créez l'intention avec Create

    • Terminez la qualification de la phrase avec Validate

  • Retournez dans Test > Test the Bot. Dites "qui es-tu ?" : le bot répond !

Félicitations!

Vous venez de déployer votre propre plateforme conversationnelle Tock en local.

Cela peut servir à mieux appréhender l'architecture et vérifier la portabilité de la solution, mais aussi lors de développements, pour les contributeurs Tock ou encore si vous devez travailler sans accès à Internet (en mobilité, sur un réseau restreint, etc.).

Attention, l'implémentation Docker fournie ne suffit pas à garantir résilience et montée en charge de la plateforme quelles que soient les conditions en production. Pour cela, quelques recommandations sont proposées dans la section haute disponibilité du manuel Tock.

Continuer...

Vous venez de terminer les guides de démarrage rapide Tock.

A partir de là, vous pouvez vous lancer directement sur une plateforme Tock, ou parcourir le manuel utilisateur pour en savoir plus sur Tock Studio, Bot API et Bot Flow par exemple.

D'autres pages présentent aussi des études de cas clients, des exemples de code, comment contacter la communauté Tock, etc.


Dernière mise à jour: 15 juillet 2020