[PYTHON] Versuchen Sie vorerst, die Docomo-Chat-Dialog-API zu verwenden

* 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.

Dinge notwendig

  • Python-Ausführungsumgebung --docomo Developer Support-Konto --docomo API Schlüssel für die Chat-Dialog-API

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.

Probieren Sie es vorerst im Web aus

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"
}

Über Parameter

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.

Kontext scheint wichtig zu sein

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 (?).

Auf Python ausführen

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 bekomme zur Laufzeit einen Fehler

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]

Schließlich

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

Versuchen Sie vorerst, die Docomo-Chat-Dialog-API zu verwenden
Versuchen Sie es vorerst mit LINE Notify
Versuchen Sie vorerst, FireBase Cloud Firestore mit Python zu verwenden
Versuchen Sie es mit der Twitter-API
Versuchen Sie es mit der Twitter-API
Versuchen Sie es mit der PeeringDB 2.0-API
[Einführung in die Stärkung des Lernens] Stärkung des Lernens, um sich vorerst zu bewegen
Lassen Sie uns vorerst Googles Vision API von Python berühren
Versuchen Sie, die Kraken-API mit Python zu verwenden
Versuchen wir zum ersten Mal Linux
Ich habe in der Bibliothek nach der Verwendung der Gracenote-API gesucht
Versuchen Sie es mit der BitFlyer Ligntning API in Python
Importieren Sie sie vorerst in jupyter
Verwenden Sie vorerst Logger mit Python
Führen Sie yolov4 "vorerst" in Windows aus
Ich habe vorerst mit Floydhub gespielt
virtualenv Das ist vorerst alles!
Versuchen Sie, die DropBox Core-API mit Python zu verwenden
Versuchen Sie zum ersten Mal, in Qiita zu posten
Versuchen Sie, Pfeffer ein externes Modul hinzuzufügen. Vorerst in Anfragen.
Flow Memo, um LOCUST vorerst zu verschieben
Führen Sie es vorerst mit CentOS7 + Apache2.4 + Python3.6 aus
Versuchen Sie vorerst, Arch Linux zu installieren.
Neben Excel jupyter Notebook vorerst
Ich werde versuchen, die Links zusammenzufassen, die vorerst nützlich erscheinen
Ich möchte vorerst Selen bewegen [für Mac]
Ich habe vorerst versucht, PIFuHD unter Windows auszuführen
Probieren Sie die ähnliche Suche von Image Search mit Python SDK [Search] aus.
Ich habe die Google Cloud Vision-API zum ersten Mal ausprobiert
Ich möchte vorerst eine Docker-Datei erstellen.
[Für Anfänger] Ich habe versucht, die Tensorflow-Objekterkennungs-API zu verwenden
Der Java-Programmierer versuchte (vorerst), die Sprache Go zu berühren.
Grundlegendes zur Python-Klasse Kampf (1) Verschieben wir sie vorerst
Fordern Sie die Bildklassifizierung durch TensorFlow2 + Keras 1-Move vorerst heraus.
Vorerst möchte ich jede Datei mit ffmpeg konvertieren !!
Versuchen Sie es mit der Admin-API von Janus Gateway
Versuchen Sie es mit der Pleasant-API (Python / FastAPI).
Versuchen Sie es mit der Aktions-API von Python argparse
Siehe Python zum ersten Mal
Versuchen Sie es mit dem Python Cmd-Modul
Starten Sie Django zum ersten Mal
Ich habe versucht, die checkio-API zu verwenden
Fordern Sie die Bildklassifizierung mit TensorFlow2 + Keras CNN 1 heraus ~ Bewegen Sie sich vorerst ~
Versuchen Sie, eine E-Mail mit der Google Mail API-Clientbibliothek für Java zu senden
Ein nützlicher Hinweis, wenn Sie Python nach langer Zeit verwenden
Versuchen Sie es mit dem Webanwendungsframework Flask
Ich habe zum ersten Mal Tensorflow ausprobiert
Versuchen Sie, das HL-Band der Reihe nach zu verwenden
Versuchen Sie, die Kamera mit Pythons OpenCV zu verwenden
Probieren Sie die Microsoft Cognitive Services Face-API aus
Tweet mit der Twitter-API in Python
Versuchen Sie die Clusteranalyse mit K-Mitteln
MongoDB mit Python zum ersten Mal
Erstellen Sie eine Anwendung mit der Spotify-API
Spielen Sie mit Dajare mithilfe der COTOHA-API
Versuchen Sie, die Spotify-API in Django zu aktivieren.