Jusqu'à présent, Slack et Pepper étaient liés à l'aide du crochet Web entrant de Slack. Je postais en utilisant le module de demande de l'application de travail, Je voulais pouvoir recevoir des notifications du côté Slack, alors j'ai pensé à installer SlackBot dans Pepper.
Ce que je voulais faire avec SlackBot.
--Créez une chaîne qui collecte le Bot de Pepper.
De plus, je voulais l'utiliser dans tous les domaines quelle que soit l'application de travail, je l'ai donc implémenté en tant que service en me référant à cet article. http://qiita.com/yacchin1205/items/11301d79380d08d2dbf6
Mac OS Sierra Python 2.7.10
pip install qibuild
Veuillez supprimer la version suivante au lieu de la dernière version. La dernière version (2.5.5 au moment de la rédaction) semble avoir de nombreux changements, et il y avait peu d'informations qui pouvaient être utilisées comme référence, j'ai donc téléchargé 2.4.3.
pynaoqi-python2.7-2.4.3.28-mac64
Laissez-le à travers le chemin. Ajoutez-le également à .bash_profile.
$ export PYTHONPATH=${PYTHONPATH}:/path/to/pynaoqi-python2.7-2.4.3.28-mac64
$ export DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH}:/path/to/pynaoqi-python2.7-2.4.3.28-mac64
Les commandes suivantes peuvent être utilisées si le chemin est correct.
$ python
>> import qi
>> import naoqi
L'environnement final requis est le suivant.
SlackBotService
qiproject.xml
manifest.xml
slackbotservice.py
slackbotservice.pml
bot_settings.py
lib
backports
slackbot
slacker
websocket
six.py
plugins
__init__.py
mention.py
proxy.py
Exécutez la commande suivante dans la même hiérarchie que le répertoire du projet. Diverses constructions et emballages seront possibles dans la hiérarchie inférieure.
$ pwd
/path/to/SlackBotService
$ qibuild init
$ qipy bootstrap
$ pip install slackbot
Les modules requis seront installés ensemble. Copiez les modules installés suivants sous SlackBotService / lib.
$ pwd
/path/to/SlackBotService/lib
$ ls
backports/
slackbot/
slacker/
websocket/
six.py
Copiez websocket / cacert.pem sous SlackBotService / lib.
$ pwd
/path/to/SlackBotService/lib
$ ls
backports/
slackbot/
slacker/
websocket/
six.py
cacert.pem
Décrivez les paramètres de SlackBot.
SlackBotService/bot_settings.py
# -*- coding: utf-8 -*-
import os
from slackbot import settings
settings.API_TOKEN = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
settings.DEFAULT_REPLY = u"Ce n'est pas bien compris."
settings.PLUGINS = [
'plugins',
]
os.environ['WEBSOCKET_CLIENT_CA_BUNDLE'] = os.path.join('./bin', 'cacert.pem')
La partie suivante charge le fichier de clé ci-dessus qui n'est pas fourni au moment de l'emballage. Bien sûr, je reçois un avertissement, mais je ne voulais pas polluer l'environnement de Pepper lui-même, alors je l'ai fait une fois.
os.environ['WEBSOCKET_CLIENT_CA_BUNDLE'] = os.path.join('./bin', 'cacert.pem')
Exécutez SlackBot lors de l'exécution du script.
SlackBotService/slackbotservice.py
# -*- coding: utf-8 -*-
from slackbot.bot import Bot
from bot_settings import *
class SlackBotService:
def __init__(self):
self.bot = Bot()
self.bot.run()
def main():
slackbotservice = SlackBotService()
if __name__ == "__main__":
main()
Si quelque chose est dit, essayez Pepper de parler.
SlackBotService/lib/plugins/mention.py
# -*- coding: utf-8 -*-
from slackbot.bot import respond_to, listen_to
from slacker import Slacker
from plugins import proxy
from bot_settings import settings
slack = Slacker(settings.API_TOKEN)
@respond_to(u'')
def respond_any_word(message):
"""
Recevez n'importe quel personnage.
:param message:Objet de message reçu
"""
_text = message.body.get('text', '')
_ts = message.body.get('ts', '')
_user = message.body.get('user', '')
_team = message.body.get('team', '')
_type = message.body.get('type', '')
_channel = message.body.get('channel', '')
proxy.animated_speech(_text)
message.reply("done")
SlackBotService/lib/plugins/proxy.py
# -*- coding: utf-8 -*-
from naoqi import ALProxy
animatedSpeechProxy = ALProxy("ALAnimatedSpeech", "127.0.0.1", 9559)
def animated_speech(text):
_text = text if isinstance(text, str) else text.encode("utf-8")
configuration = {"bodyLanguageMode": "contextual"}
animatedSpeechProxy.say(_text, configuration)
qiproject.xml Définissez le module à regrouper. Tous les modules nécessaires tels que les bibliothèques et les scripts sont définis.
<project version="3">
<qipython name="slackbotservice">
<package name="backports" src="lib" />
<package name="slackbot" src="lib" />
<package name="slacker" src="lib" />
<package name="websocket" src="lib" />
<package name="plugins" src="lib" />
<script src="lib/six.py" />
<script src="lib/cacert.pem" />
<script src="slackbotservice.py" />
<script src="bot_settings.py" />
</qipython>
</project>
manifest.xml
Définissez le service.
La balise \
<package uuid="slackbotservice" version="0.1.0">
<services>
<service name="SlackBotService" autorun="true"
execStart="/bin/bash ./python bin/slackbotservice.py" />
<executableFiles>
<file path="python" />
</executableFiles>
</services>
<requirements>
<naoqiRequirement minVersion="2.3"/>
<robotRequirement model="JULIETTE"/>
</requirements>
</package>
Définissez le package.
<?xml version="1.0" encoding="UTF-8" ?>
<Package name="slackbotservice" format_version="4">
<Manifest src="manifest.xml" />
<qipython name="slackbotservice" />
</Package>
$ qipy install slackbotservice
$ qipkg make-package slackbotservice.pml
$ qipkg deploy-package slackbotservice-0.1.0.pkg --url nao@<IP de Pepper>
Vous pouvez maintenant faire parler Pepper via Slack!
C'était très pratique car il devenait possible d'appeler différents modules AL via Slack. Pour le moment, il n'est pas enregistré en tant que service, vous ne pouvez donc pas utiliser SlackBot à partir de diverses applications professionnelles. En vous inscrivant en tant que service, vous pourrez démarrer et arrêter le SlackBot lui-même, échanger des messages avec des applications professionnelles, etc.
Je pense que si vous utilisez bien SlackBot, vous pouvez l'utiliser pour la coopération entre les applications professionnelles et la communication entre Peppers.