Fügen Sie dem Slack Bot Konversationsfunktionen hinzu. Bot ist mit Python3-Serie gemacht Wenn Sie einen Bot normal machen, geben Sie nur ein bestimmtes Wort für ein bestimmtes Wort zurück, aber das ist irgendwie langweilig. Machen Sie es möglich, jedes Mal wie folgt zu sprechen, wenn Sie eine süße machen
Im Folgenden erfahren Sie, wie Sie die API ausgeben und sich für Slack registrieren. Erstellen Sie einen Slack-Bot mit Pythons Slackbot-Bibliothek
Wenn Sie nach der Installation von pip slackbot mit der Prozedur fortfahren, finden Sie eine Gruppe von Dateien mit der folgenden Verzeichnisstruktur.
slackbot #Ein Verzeichnis, das Programme organisiert. Jeder Name ist in Ordnung
├─ run.py #Starten Sie den Bot, indem Sie dieses Programm ausführen
├─ slackbot_settings.py #Datei zum Schreiben von Einstellungen für Bot
└─ plugins #Fügen Sie diesem Verzeichnis Bot-Funktionen hinzu
├─ __init__.py #Eine Datei zur Angabe des Moduls. Leer ist in Ordnung
└─ my_mention.py #Eine Datei, die jede Funktion des Bots hinzufügt. Bearbeiten Sie diese Datei dieses Mal
Löschen Sie zunächst den DEFAULT_REPLY-Teil der Datei slackbot_settings.py
[root@localhost slackbot]# more slackbot_settings.py
# coding: utf-8
#Geben Sie das Token für das Bot-Konto an
API_TOKEN = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
#Antwortzeichenfolge, wenn eine an diesen Bot adressierte Nachricht für keine Antwort gilt
#Liste der Unterverzeichnisnamen, in denen sich das Plug-In-Skript befindet
PLUGINS = ['plugins']
#Lösch das!
DEFAULT_REPLY = "Ich weiß nicht, wovon du sprichst"
Bearbeiten Sie als Nächstes my_mention.py
Ich denke, der Ausgangszustand ist wie folgt. Ich werde dies ändern
# coding: utf-8
from slackbot.bot import respond_to # @botname:Decoder, der mit reagiert
from slackbot.bot import listen_to #Decoder, der auf kanalinterne Bemerkungen reagiert
from slackbot.bot import default_reply #Decoder, der reagiert, wenn keine entsprechende Antwort erfolgt
# @respond_to('string')Nachricht an den Bot
#Zeichenfolge kann ein regulärer Ausdruck sein "r'string'」
# @listen_to('string')Andere Beiträge als Bot im Kanal
# @botname:Beachten Sie, dass es nicht reagiert
#Reagieren Sie, wenn Sie anderen gegenüber erwähnen
#Kann normal ausgedrückt werden
# @default_reply() DEFAULT_Gleiche Funktion wie ANTWORT
#Wenn Sie einen regulären Ausdruck angeben, werden andere Decoder nicht getroffen
#Reagieren Sie, wenn Sie einem regulären Ausdruck entsprechen
#... Aber ist es ein Fehler, wenn ich einen regulären Ausdruck angebe?
# message.reply('string') @Name des Sprechers:Nachricht mit String senden
# message.send('string')Zeichenfolge senden
# message.react('icon_emoji')Reaktion auf die Nachricht des Sprechers(Stempel)Machen
#In der Zeichenfolge':'Ich brauche nicht
@respond_to('Erwähnen')
def mention_func(message):
message.reply('Was machst du, wenn du mir Erwähnung sagst?') #Erwähnen
@listen_to('Hör mal zu')
def listen_func(message):
message.send('Jemand scheint mit listen gepostet zu haben') #Nur ein Beitrag
message.reply('Du?') #Erwähnen
Für die Implementierung verwenden wir die von Recruit bereitgestellte Talk-API. Ich habe es anhand der folgenden Punkte verglichen, aber es scheint, dass die Genauigkeit der zurückgegebenen Nachricht kostenlos hoch ist. Zusammenfassung der Konversations-APIs, -Bibliotheken und -Dienste, die mit BOT verwendet werden können
■Talk API Die Talk-API ist eine API zum Erstellen von Chatbot. Es bietet eine tägliche Konversationsantwortfunktion, indem ein Antwortsatz aus einem Eingabesatz unter Verwendung des Recurrent Neural Network (LSTM) generiert wird. Chatbot, der die Talk-API verwendet, automatisiert die Benutzerinteraktion in verschiedenen Anwendungen und kann jederzeit sofort auf Benutzeranfragen reagieren.
Registrieren Sie sich als Mitglied und erhalten Sie einen API-Schlüssel. Versuchen Sie nach der Registrierung, die API mit Curl wie unten gezeigt zu drücken, und Sie sollten eine Antwort erhalten
root@localhost slackbot]# curl -X POST https://api.a3rt.recruit-tech.co.jp/talk/v1/smalltalk -F "apikey=XXXXXXXXXXXXXXXXXXXX" -F "query=Guten Morgen"
{"status": 0, "message": "ok", "results": [{"perplexity": 0.07743213382788067, "reply": "\u304a\u306f\u3088\u3046\u3054\u3056\u3044\u307e\u3059"}]}
Es ist sehr einfach zu implementieren. Es scheint, dass Python eine Bibliothek namens pya3rt bereitstellt. Verwenden wir sie also Holen Sie sich ** pip install pya3rt **.
Der Code selbst fügt my_mention.py nur den folgenden Teil hinzu
import pya3rt
@default_reply()
def send_message(message):
apikey = "XXXXXXXXXXXXXXXXXXXXXXX"
client = pya3rt.TalkClient(apikey)
reply_message = client.talk(message.body['text'])
#Da json im folgenden Format zurückgegeben wird, nehmen Sie den Antwortteil heraus
# {'status': 0, 'message': 'ok', 'results': [{'perplexity': 1.2802554542585969, 'reply': 'ich bin mir nicht sicher'}]}
message.reply(reply_message['results'][0]['reply'] + "Pome" )
@default_reply () ist ein Collator, der aufgerufen wird, wenn Sie eine Erwähnung eines Bots überspringen, und der keinem Wort in my_mention.py entspricht. Verwenden Sie pya3rt.TalkClient (apikey), um auf der von Recruit bereitgestellten Talk-API zu posten. Sie können die folgenden Inhalte standardmäßig mit json abrufen.
# {'status': 0, 'message': 'ok', 'results': [{'perplexity': 1.2802554542585969, 'reply': 'ich bin mir nicht sicher'}]}
Da der einzige oben erforderliche Teil der Wert der Antwort ist, scheint es, als würde man ihn mit ['results'] [0] ['reply'] herausnehmen und in der Antwortnachricht des Bots speichern.
Wenn Sie es mit Curl tun, können Sie es auch wie folgt mithilfe der Unterprozessmethode implementieren. Das Ergebnis von check_output wird jedoch nicht von json zurückgegeben, daher ist es erforderlich, eine Antwort mit split oder etwas anderem zu erhalten.
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)
Wenn Sie nach der Implementierung einen Slack-Bot mit Python run.py starten, kann der Bot wie am Anfang sprechen
Recommended Posts