Ajoutez des fonctionnalités conversationnelles au bot slack. bot est fait avec la série python3 Si vous créez un bot normalement, vous ne renvoyez qu'un mot fixe pour un mot fixe, mais c'est plutôt ennuyeux. Rendez possible de parler comme suit chaque fois que vous faites un mignon
Veuillez vous référer à ce qui suit pour savoir comment émettre l'API et vous inscrire à slack. Créer un bot Slack avec la bibliothèque slackbot de Python
Si vous poursuivez la procédure après l'installation de pip slackbot, vous constaterez qu'un groupe de fichiers sera créé avec la structure de répertoires suivante.
slackbot #Un annuaire qui organise les programmes. N'importe quel nom va bien
├─ run.py #Démarrez le bot en exécutant ce programme
├─ slackbot_settings.py #Fichier pour écrire les paramètres liés au bot
└─ plugins #Ajouter une fonctionnalité de bot à ce répertoire
├─ __init__.py #Un fichier pour indiquer le module. Vider c'est bien
└─ my_mention.py #Un fichier qui ajoute chaque fonction de bot. Modifiez ce fichier cette fois
Commencez par supprimer la partie DEFAULT_REPLY du fichier slackbot_settings.py
[root@localhost slackbot]# more slackbot_settings.py
# coding: utf-8
#Spécifier le jeton pour le compte de bot
API_TOKEN = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
#Chaîne de réponse lorsqu'un message adressé à ce bot ne s'applique à aucune réponse
#Liste des noms de sous-répertoires où se trouve le script de plug-in
PLUGINS = ['plugins']
#Supprime ça!
DEFAULT_REPLY = "Je ne sais pas de quoi tu parles"
Ensuite, modifiez my_mention.py
Je pense que l'état initial est le suivant. Je vais modifier cela
# coding: utf-8
from slackbot.bot import respond_to # @botname:Décodeur qui réagit avec
from slackbot.bot import listen_to #Décodeur qui répond aux remarques dans le canal
from slackbot.bot import default_reply #Décodeur qui réagit lorsqu'il n'y a pas de réponse correspondante
# @respond_to('string')Message au bot
#la chaîne peut être une expression régulière "r'string'」
# @listen_to('string')Messages autres que pour bot dans la chaîne
# @botname:Notez qu'il ne réagit pas
#Réagissez lorsque vous en parlez aux autres
#Peut être exprimé normalement
# @default_reply() DEFAULT_Même fonction que REPLY
#Si vous spécifiez une expression régulière, elle n'atteindra pas les autres décodeurs
#Réagir lors de la mise en correspondance d'une expression régulière
#... Mais est-ce une erreur si je spécifie une expression régulière?
# message.reply('string') @Nom du haut-parleur:Envoyer un message avec une chaîne
# message.send('string')Envoyer la chaîne
# message.react('icon_emoji')Réaction au message de l'orateur(timbre)Faire
#Dans la chaîne':'Je n'ai pas besoin
@respond_to('Mention')
def mention_func(message):
message.reply('Que faites-vous quand vous dites me mentionner') #Mention
@listen_to('Ecoutez')
def listen_func(message):
message.send('Quelqu'un semble avoir posté avec écoute') #Juste un post
message.reply('Tu?') #Mention
Pour la mise en œuvre, nous utiliserons l'API Talk fournie par Recruit. Je l'ai comparé en regardant ce qui suit, mais il semble que la précision du message renvoyé soit élevée gratuitement. Résumé des API, bibliothèques et services de conversation pouvant être utilisés avec BOT
■Talk API Talk API est une API permettant de créer un chatbot. Il fournit une fonction de réponse de conversation quotidienne en générant une phrase de réponse à partir d'une phrase d'entrée à l'aide du réseau neuronal récurrent (LSTM). Chatbot, qui utilise l'API Talk, automatise l'interaction des utilisateurs sur diverses applications et peut répondre aux demandes des utilisateurs immédiatement à tout moment.
Inscrivez-vous en tant que membre et obtenez une clé API. Après l'enregistrement, essayez d'appuyer sur l'API avec curl comme indiqué ci-dessous et vous devriez obtenir une réponse
root@localhost slackbot]# curl -X POST https://api.a3rt.recruit-tech.co.jp/talk/v1/smalltalk -F "apikey=XXXXXXXXXXXXXXXXXXXX" -F "query=Bonjour"
{"status": 0, "message": "ok", "results": [{"perplexity": 0.07743213382788067, "reply": "\u304a\u306f\u3088\u3046\u3054\u3056\u3044\u307e\u3059"}]}
C'est très simple à mettre en œuvre. Il semble que python fournit une bibliothèque appelée pya3rt, alors utilisons-la Obtenez ** pip install pya3rt **.
Le code lui-même ajoute simplement la partie suivante à my_mention.py
import pya3rt
@default_reply()
def send_message(message):
apikey = "XXXXXXXXXXXXXXXXXXXXXXX"
client = pya3rt.TalkClient(apikey)
reply_message = client.talk(message.body['text'])
#Puisque json est retourné au format suivant, retirez la partie réponse
# {'status': 0, 'message': 'ok', 'results': [{'perplexity': 1.2802554542585969, 'reply': 'je ne suis pas sûr'}]}
message.reply(reply_message['results'][0]['reply'] + "Pome" )
@default_reply () est un collator qui est appelé lorsque vous sautez une mention à un bot et il ne correspond à aucun mot dans my_mention.py. Utilisez pya3rt.TalkClient (apikey) pour publier sur l'API Talk fournie par Recruit. Vous pouvez obtenir le contenu suivant avec json par défaut.
# {'status': 0, 'message': 'ok', 'results': [{'perplexity': 1.2802554542585969, 'reply': 'je ne suis pas sûr'}]}
Puisque la seule partie requise ci-dessus est la valeur de la réponse, cela donne l'impression de la retirer avec ['results'] [0] ['reply'] et de la stocker dans le message de réponse du bot.
Si vous le faites avec curl, vous pouvez également l'implémenter comme suit à l'aide de la méthode subprocess. Cependant, le résultat de check_output n'est pas retourné par json, il est donc nécessaire d'obtenir une réponse avec split ou quelque chose.
import subprocess
@default_reply()
def send_message(message):
curl_cmd = 'curl -X POST https://api.a3rt.recruit-tech.co.jp/talk/v1/smalltalk -F "apikey=XXXXXXXXXXXXXXXXXXXXXX" -F "query=message.body['text']"'
message = subprocess.check_output(curl_cmd, shell=True)
Après l'implémentation, si vous démarrez slack bot avec python run.py, je pense que le bot peut parler comme au début
Recommended Posts