[PYTHON] Easy Slackbot avec Docker et Errbot

Aperçu

Exécutez un chatbot avec Docker dans un environnement local J'ai essayé d'interagir avec Slack.

J'étais inquiet pour [Hubot] de GitHub (https://github.com/github/hubot) et Ruby Lita. Il était difficile de lire CoffeeScript et de se préparer à Redis. J'ai choisi Errbot, qui est écrit en Python et semble être le plus simple. Je ne pense pas qu'il y ait une grande différence dans le sentiment d'une enquête rapide.

Préparation

Il n'y a aucun problème dans tout environnement où le conteneur Docker fonctionne. Je le construis sur mon PC local à l'aide de Docker pour Mac.

Une préparation d'équipe est nécessaire avant de créer un Slackbot.

procédure

Créer un conteneur Docker

Construisez un conteneur qui exécute Python version 3.3 et supérieure. Pour économiser du travail, j'ai utilisé Alpine Linux avec Python.

FROM python:3.5.2-alpine

#mise à jour apk
RUN apk update

#Installation des packages requis pour installer Errbot
RUN apk add gcc g++ libffi-dev openssl-dev

#Installez les packages nécessaires au développement comme vous le souhaitez
RUN apk add vim bash

Entrez ce qui suit dans le répertoire contenant le Dockerfile pour démarrer le conteneur.

Démarrer le conteneur


#Générer une image à partir d'un Dockerfile avec le nom bot
$ docker build -t bot .

#Lancez l'image du bot et/bin/courir sh
$ docker run -it bot /bin/sh

Introduction d'Errbot

Utilisez pip pour installer les packages requis. ʻSlack client est requis pour la communication entre le corps principal de ʻerrbot et Slack.

Installation du package


$ pip install errbot slackclient

Lorsque vous avez terminé, vérifiez si vous l'avez installé avec succès. Cela dépend d'un bon nombre de colis ...

Vérifiez le package


$ pip freeze
ansi==0.1.3
beautifulsoup4==4.5.1
bottle==0.12.9
cffi==1.8.3
colorlog==2.7.0
cryptography==1.5.2
daemonize==2.4.7
dnspython==1.14.0
dnspython3==1.14.0
errbot==4.3.3
idna==2.1
Jinja2==2.8
Markdown==2.6.7
MarkupSafe==0.23
pyasn1==0.1.9
pycparser==2.14
Pygments==2.1.3
pygments-markdown-lexer==0.1.0.dev39
pyOpenSSL==16.1.0
requests==2.11.1
rocket-errbot==1.2.5
six==1.10.0
slackclient==1.0.2
threadpool==1.3.2
waitress==1.0.0
WebOb==1.6.1
websocket-client==0.37.0
WebTest==2.0.23
Yapsy==1.11.223

Une fois l'installation réussie, essayez d'exécuter First run. Initialisez le répertoire du projet avec la commande suivante.

Initialisation du projet


$ mkdir ~/errbot-root
$ cd ~/errbot-root
$ errbot --init

Plusieurs fichiers ont été créés pour configurer et exécuter le bot. Commençons immédiatement ʻerrbotsur la console. Lorsque vous voyez>>>, essayez de taper ! Tryme`. Vous devriez obtenir une réponse du bot.

Exécuter sur console


$ errbot
>>> !tryme
It works !

Apparemment, Errbot préfixe les instructions au bot avec !.

préparation de compte bot

Ouvrez la page here et sélectionnez «Créer une intégration personnalisée».

1.png

Sélectionnez Créer des bots.

2.png

Entrez un nom pour votre compte de bot et cliquez sur "Ajouter une intégration de bot".

3.png

Le jeton API sera affiché sur l'écran de destination de la transition, alors notez-le.

4.png

Ceci termine la création du compte de bot. Vous devriez pouvoir trouver le compte que vous avez créé dans le champ "MESSAGES DIRECTS".

5.png

Réécriture du fichier de paramètres

Réécrivez config.py créé par ʻerrbot --init`. Il y a trois changements principaux. Il n'y a aucun problème avec les autres articles tels quels.

config.py


#Correction du BACKEND du texte à Slack
BACKEND = 'Slack'

#Entrez le jeton API ci-dessus
BOT_IDENTITY = {
    'token': 'xxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
}

#Entrez le nom de compte de l'utilisateur que vous souhaitez être administrateur sous la forme d'un ou plusieurs tap (s)
BOT_ADMINS = ('@nanakenashi')

Le jeton est écrit sous forme solide pour l'explication. Lors de la gestion de la source avec GitHub, etc., intégrez-la dans la variable d'environnement Je pense qu'il est souhaitable de le lire avec ʻos.getenv ('HOGE') `.

Après l'enregistrement, redémarrez Errbot. Cette fois, je vais ajouter une option de démon.

Lancez Errbot


$ errbot --daemon

Contrôle de fonctionnement

Parlez à ! Tryme,! Help, ! About, etc. sur Slack. Cela devrait fonctionner comme sur la console. Nous vous recommandons de changer l'icône du compte bot en quelque chose que vous pouvez aimer.

6.png

Résumé

Même s'il s'agissait d'un contenu d'essai Vous pouvez maintenant parler au bot de Slack.

Parce que la vraie valeur du chatbot est un mouvement flexible vers les instructions Ensuite, je voudrais aborder cette partie (plug-in).

Recommended Posts

Easy Slackbot avec Docker et Errbot
Introduisez errBot et travaillez avec Slack
Essayons gRPC avec Go et Docker
Facile! Utilisez gensim et word2vec avec MAMP.
Scraping Web facile avec Python et Ruby
Easy X-Ray avec Lambda Layer et CloudFormation / sam-cli
Serveur TFTP avec Docker
Easy Grad-CAM avec pytorch-gradcam
IoT facile pour démarrer avec Raspeye et MESH
paramètres goland et Docker
De Kafka à KSQL - Construction d'environnement facile avec docker
Apprentissage automatique facile avec scikit-learn et flask ✕ Application Web
Téléchargez facilement et partiellement mp4 avec python et youtube-dl!
Comment partager des dossiers avec Docker et Windows avec tensorflow
Utiliser python avec docker
Serveur proxy avec Docker
Lire et écrire des fichiers avec Slackbot ~ Développement de bot avec Python ~
Bonjour le monde avec Docker
Construction facile de code C ++ avec CMake sur Docker
Essai de reconnaissance faciale facile avec Jetson Nano et caméra Web
Débogage facile avec ipdb
Avec et sans WSGI
TopView facile avec OpenCV
[Linux] Créez un auto-certificat avec Docker et apache
Introduction facile au piratage domestique avec Raspberry Pi et discord.py
API Nifty Cloud facile à utiliser avec botocore et python
J'ai essayé la gestion du suivi avec l'API Twitter et Python (facile)
Package d'exécution Python et bibliothèque pypi avec chef / omnibus et Docker
Créez un environnement GPU avec GCP et l'image officielle de Kaggle (docker)
Programmation avec Python et Tkinter
Chiffrement et déchiffrement avec Python
Environnement toxique facile avec Jenkins
Travailler avec le tkinter et la souris
Minuterie Pomodoro faite avec Errbot
Python et matériel - Utilisation de RS232C avec Python -
[Analyse de co-occurrence] Analyse de co-occurrence facile avec Python! [Python]
Synchronisation facile des dossiers avec Python
Rendre avec la syntaxe facile
Implémenter le GPU PyTorch + avec Docker
La vie PySpark à partir de Docker
Préparer l'environnement python3 avec Docker
Grattage Web facile avec Scrapy
Compilation facile de Python avec NUITKA-Utilities
Serveur HTTP facile avec Python
Connexion proxy facile avec django-hijack
Super résolution avec SRGAN et ESRGAN
Group_by avec sqlalchemy et sum
python avec pyenv et venv
Essayez Selenium Grid avec Docker
Essayez de créer Jupyter Hub avec Docker
Avec moi, NER et Flair
Créer une application Rails avec Docker
Créer un chatbot Slack avec Errbot
Fonctionne avec Python et R
Azure Monitor détermine à la fois la surveillance du cloud et la surveillance sur site! Facile avec GUI!
De l'installation ubuntu à l'exécution de kinect avec docker et ros (présentation)