* Derzeit (01.01.2019) wurde der API-Chat-Dialog-API-Dienst beendet. [API für natürliche Dialoge](https://dev.smt.docomo.ne.jp/? Es scheint als Teil von p = docs.api.page & api_name = natural_dialogue & p_name = api_usage_scenario) bereitgestellt zu werden. Bitte beachten Sie die offizielle Referenz. </ font>
Das zweite Abkochen ist auch gut, aber vorerst wollte ich den Chat-Dialog von Docomo verschieben. Schließlich möchte ich es zusammen mit der Twitter-API verwenden, um einen BOT zu erstellen, der den Dialog ermöglicht.
Registrieren Sie ein Konto auf dieser Seite, geben Sie die erforderlichen Informationen ein, aktivieren Sie den "Chat-Dialog" und bewerben Sie sich. Kann erhalten werden. Ich dachte, es war nach bestandener Prüfung, aber es wird sofort nach der Bewerbung ausgestellt.
Sie können die API-Funktion von [dieser Seite] aus ausprobieren (https://dev.smt.docomo.ne.jp/?p=api_console.index&api=dialogue&scope=dialogue&ref=trybutton).
Kommunizieren Sie im JSON-Format.
" Utt "2 Zeile des HTTP-Anforderungshauptteils: Hallo
Teil ist der Austausch eines Teils der Konversation.
Schreiben Sie es nach Ihren Wünschen um und drücken Sie die Ausführen-Taste, um das Ergebnis zurückzugeben.
python
{
"utt": "Ich möchte gegrilltes Fleisch essen",
"context": "",
"nickname": "Licht",
"nickname_y": "Hikari",
"sex": "Frau",
"bloodtype": "B",
"birthdateY": "1997",
"birthdateM": "5",
"birthdateD": "30",
"age": "16",
"constellations": "Zwillinge",
"place": "Tokio",
"mode": "dialog"
}
python
{
"utt": "Möchten Sie gegrilltes Fleisch essen? will essen",
"yomi": "Möchten Sie gegrilltes Fleisch essen? will essen",
"mode": "dialog",
"da": "22",
"context": "W54mlG80QNb-o95J9c7SVA"
}
Die Parameter werden über die Schaltfläche "Siehe Erklärung" oben rechts angegeben.
Parameter | Erläuterung |
---|---|
utt | Geben Sie die Sprache des Benutzers ein. 255 Zeichen oder weniger |
context | Setzen Sie die Konversation fort, indem Sie die vom System ausgegebene Kontextausgabe eingeben. 255 Zeichen oder weniger |
nickname | Legen Sie den Spitznamen des Benutzers fest. 10 Zeichen oder weniger |
nickname_y | Legt das Lesen des Spitznamens des Benutzers fest. 20 Zeichen in voller Breite oder weniger(Nur Katakana) |
sex | Stellen Sie das Geschlecht des Benutzers ein. Mann oder Frau |
bloodtype | Stellen Sie die Blutgruppe des Benutzers ein. Einer von A, B, AB, O. |
birthdateY | Stellen Sie den Geburtstag (Jahr) des Benutzers ein. Beliebige Ganzzahl von 1 bis zur Gegenwart(4 Zeichen oder weniger) |
birthdateM | Stellen Sie den Geburtstag (Monat) des Benutzers ein. Beliebige Ganzzahl von 1 bis 12 |
birthdateD | Stellen Sie den Geburtstag (Tag) des Benutzers ein. Beliebige Ganzzahl von 1 bis 31 |
age | Legt das Alter des Benutzers fest. Positive ganze Zahl(3 Zeichen oder weniger) |
constellations | Stellen Sie die Konstellation des Benutzers ein. Widder, Bullen, Zwillinge, Krabben, Löwen, Jungfrauen, Waagen, Samurai, Schützen, Ziegen, Wasserflaschen, Fisch |
place | Stellen Sie die regionalen Informationen des Benutzers ein. Technische Daten 2.4 Eines der Elemente in der "Standortliste" |
mode | Die aktuelle Art der Interaktion. Drücken Sie weiter, indem Sie den vom System ausgegebenen Modus eingeben dialog oder srtr Standard: dialog |
Alles, was wichtig ist, ist das "utt" -Muster. Benutzerattribute können weggelassen oder nur teilweise. Wenn Sie einen Namen festlegen, scheint der Antwortinhalt den Namen zu enthalten.
Der Teil von "Kontext": "W54mlG80QNb-o95J9c7SVA" im obigen Gespräch über gegrilltes Fleisch. Wenn Sie diesen Kontext zusammen mit der nächsten Dialogdatenübertragung senden, wird die Konversation verbunden. Offensichtlich gibt es kein erstes Mal, daher ist es im obigen Beispiel leer.
Ich habe mich gefragt, ob der Kontext für jeden Dialog anders sein würde, aber er wird für jede Sitzung ausgegeben (?).
Ich verwies auf uepon Daily Memorandum - Versuch mit Chat-Dialog-API.
docomo_dialogue.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import json
import types
KEY = 'Geben Sie hier den erhaltenen API-Schlüssel ein'
#Endpunkteinstellungen
endpoint = 'https://api.apigw.smt.docomo.ne.jp/dialogue/v1/dialogue?APIKEY=REGISTER_KEY'
url = endpoint.replace('REGISTER_KEY', KEY)
#Das erste Gespräch beginnen
utt_content = raw_input('>>')
payload = {'utt' : utt_content, 'context': ''}
headers = {'Content-type': 'application/json'}
#Senden
r = requests.post(url, data=json.dumps(payload), headers=headers)
data = r.json()
#JSON-Analyse
response = data['utt']
context = data['context']
#Anzeige
print "response: %s" %(response)
#Zweites und nachfolgendes Gespräch(Ctrl+Beenden Sie mit C.)
while True:
utt_content = raw_input('>>')
payload['utt'] = utt_content
payload['context'] = data['context']
r = requests.post(url, data=json.dumps(payload), headers=headers)
data = r.json()
response = data['utt']
context = data['context']
print "response: %s" %(response)
Unten ist das Ausführungsergebnis.
python
>>Ich möchte Fisch essen! !!
response:Wussten Sie übrigens, dass der 1. Dezember der Filmtag ist?
>>Ignoriere es nicht. .. .. Ich weiß es nicht.
response:Scheint ignoriert zu werden
>>kalt
response:Kein Problem. es ist kalt?
>>Es ist heiß
response:Patapata
>>Vielen Dank
response:Nadenade
>>
Ich war ein wenig süchtig nach der Tatsache, dass ich zur Laufzeit request.exceptions.SSLError
bekomme.
Vorerst habe ich es mit der folgenden Methode gelöst.
python
$ sudo pip install requests[security]
Wenn Sie dies zusammen mit der Twitter-API verwenden, können Sie Twitter BOT erstellen. Für LINE ist auch LINE BOT verfügbar. Da wir jedoch jedes Gespräch für jeden Benutzer führen müssen, der Erwähnungen übersprungen hat, scheint es schwierig zu sein, mit der Verarbeitung dort umzugehen.
Recommended Posts