[PYTHON] Pour le moment, essayez d'utiliser l'API de dialogue de discussion docomo

* Actuellement (01/01/2019), le service de l'API de dialogue de discussion docomo est terminé, [API de dialogue naturel](https://dev.smt.docomo.ne.jp/? Il semble être fourni dans le cadre de p = docs.api.page & api_name = natural_dialogue & p_name = api_usage_scenario). Veuillez vous référer à la référence officielle. </ font>

La deuxième décoction est également bonne, mais pour le moment, je voulais déplacer le dialogue de chat de docomo. Finalement, j'aimerais l'utiliser avec l'API Twitter pour créer un BOT qui permet le dialogue.

Les choses nécessaires

  • Environnement d'exécution Python
  • Compte de support développeur docomo --docomo API Key pour l'API de dialogue de discussion

Créez un compte depuis cette page, saisissez les informations nécessaires, cochez la case "Dialogue de discussion" et postulez. Peut être obtenu. Je pensais que c'était après la réussite de l'examen, mais il sera délivré immédiatement après la demande.

Essayez-le sur le Web pour le moment

Vous pouvez essayer la fonction API depuis cette page.

Communiquez au format json. Ligne "Utt" 2 du corps de la requête HTTP: La partie Hello` est l'échange d'une partie de la conversation. Réécrivez-le à votre guise et appuyez sur le bouton d'exécution pour renvoyer le résultat.

python


{
  "utt": "Je veux manger de la viande grillée",
  "context": "",
  "nickname": "lumière",
  "nickname_y": "Hikari",
  "sex": "femme",
  "bloodtype": "B",
  "birthdateY": "1997",
  "birthdateM": "5",
  "birthdateD": "30",
  "age": "16",
  "constellations": "Gémeaux",
  "place": "Tokyo",
  "mode": "dialog"
}

python


{
  "utt": "Voulez-vous manger de la viande grillée? envie de manger",
  "yomi": "Voulez-vous manger de la viande grillée? envie de manger",
  "mode": "dialog",
  "da": "22",
  "context": "W54mlG80QNb-o95J9c7SVA"
}

À propos des paramètres

Les paramètres sont cités à partir du bouton "Voir l'explication" en haut à droite.

Paramètres La description
utt Saisissez le discours de l'utilisateur. 255 caractères ou moins
context Poursuivez la conversation en entrant la sortie de contexte du système. 255 caractères ou moins
nickname Définissez le surnom de l'utilisateur. 10 caractères ou moins
nickname_y Définit la lecture du surnom de l'utilisateur. 20 caractères pleine largeur ou moins(Katakana uniquement)
sex Définissez le sexe de l'utilisateur. Homme ou femme
bloodtype Définissez le groupe sanguin de l'utilisateur. L'un des A, B, AB, O
birthdateY Définissez l'anniversaire de l'utilisateur (année). Tout entier compris entre 1 et le présent(4 caractères ou moins)
birthdateM Définissez l'anniversaire de l'utilisateur (mois). Tout entier de 1 à 12
birthdateD Définissez l'anniversaire de l'utilisateur (jour). Tout entier de 1 à 31
age Définit l'âge de l'utilisateur. Entier positif(3 caractères ou moins)
constellations Définissez la constellation de l'utilisateur. Bélier, taureaux, jumeaux, crabes, lions, jeunes filles, soldes, samouraï, tireurs, chèvres, bouteilles d'eau, poisson
place Définissez les informations régionales de l'utilisateur. Spécifications 2.4 Un des éléments inclus dans la "Liste des emplacements"
mode Le mode d'interaction actuel. Continuez à presser en entrant la sortie de mode du système
dialog ou srtr Par défaut: dialogue

Tout ce qui est essentiel, c'est le schéma du «pas». Les attributs utilisateur peuvent être omis ou seulement partiellement. En définissant un nom, il semble que le contenu de la réponse inclura le nom.

le contexte semble être important

La partie de " context ":" W54mlG80QNb-o95J9c7SVA " dans la conversation sur la viande grillée ci-dessus. Si vous envoyez ce contexte avec la prochaine transmission de données de dialogue, la conversation sera connectée. De toute évidence, il n'y a pas de première fois, il est donc vide dans l'exemple ci-dessus.

Je me demandais si le contexte serait différent pour chaque dialogue, mais il sera publié pour chaque session (?).

Exécuter sur Python

J'ai fait référence à uepon Daily Memorandum - Try using Chat Dialogue API.

docomo_dialogue.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests
import json
import types

KEY = 'Entrez la clé API obtenue ici'

#Paramètres du point de terminaison
endpoint = 'https://api.apigw.smt.docomo.ne.jp/dialogue/v1/dialogue?APIKEY=REGISTER_KEY'
url = endpoint.replace('REGISTER_KEY', KEY)

#Entrer dans la première conversation
utt_content = raw_input('>>')

payload = {'utt' : utt_content, 'context': ''}
headers = {'Content-type': 'application/json'}

#Envoyer
r = requests.post(url, data=json.dumps(payload), headers=headers)
data = r.json()

#analyse json
response = data['utt']
context = data['context']

#afficher
print "response: %s" %(response)

#Deuxième conversation et suivantes(Ctrl+Terminer par 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)

Voici le résultat de l'exécution.

python


>>Je veux manger du poisson! !!
response:Au fait, saviez-vous que le 1er décembre est la journée du cinéma?
>>Ne l'ignorez pas. .. .. Je ne sais pas.
response:Semble être ignoré
>>du froid
response:Aucun problème. fait-il froid?
>>C'est chaud
response:Patapata
>>Je vous remercie
response:Nadenade
>>

J'obtiens une erreur lors de l'exécution

J'étais un peu accro au fait que je reçois requests.exceptions.SSLError au moment de l'exécution. Pour le moment, je l'ai résolu par la méthode suivante.

python


$ sudo pip install requests[security]

finalement

Si vous l'utilisez avec l'API Twitter, vous pouvez créer Twitter BOT. Pour LINE, LINE BOT est également disponible. Cependant, comme nous devons avoir chaque conversation pour chaque utilisateur qui a sauté des mentions, il semble difficile de gérer le traitement là-bas.

Recommended Posts

Pour le moment, essayez d'utiliser l'API de dialogue de discussion docomo
Essayez d'utiliser LINE Notify pour le moment
Essayez d'utiliser FireBase Cloud Firestore avec Python pour le moment
Essayez d'utiliser l'API Twitter
Essayez d'utiliser l'API Twitter
Essayez d'utiliser l'API PeeringDB 2.0
[Apprentissage de renforcement d'introduction] Renforcement de l'apprentissage pour bouger pour le moment
Touchons l'API Vision de Google de Python pour le moment
Essayez d'utiliser l'API Kraken avec Python
Essayons Linux pour la première fois
J'ai recherché dans la bibliothèque l'utilisation de l'API Gracenote
Essayez d'utiliser l'API BitFlyer Ligntning en Python
Pour le moment, importez-les dans jupyter
Utilisez Logger avec Python pour le moment
Exécutez yolov4 "pour le moment" dans Windows
J'ai joué avec Floydhub pour le moment
virtualenv Pour le moment, c'est tout!
Essayez d'utiliser l'API DropBox Core avec Python
Essayez de publier sur Qiita pour la première fois
Essayez d'ajouter un module externe au poivre. Pour le moment, en demandes.
Mémo de flux pour déplacer LOCUST pour le moment
Exécutez avec CentOS7 + Apache2.4 + Python3.6 pour le moment
Essayez d'installer Arch Linux pour le moment.
À côté d'Excel, le notebook Jupyter pour le moment
J'essaierai de résumer les liens qui me semblent utiles pour le moment
Je veux déplacer le sélénium pour le moment [pour mac]
J'ai essayé d'exécuter PIFuHD sur Windows pour le moment
Essayez une recherche similaire de recherche d'images à l'aide du SDK Python [Recherche]
J'ai essayé l'API Google Cloud Vision pour la première fois
Je veux créer un Dockerfile pour le moment.
[Pour les débutants] J'ai essayé d'utiliser l'API Tensorflow Object Detection
Le programmeur Java a essayé de toucher le langage Go (pour le moment)
Comprendre la classe python Struggle (1) Déplaçons-la pour le moment
Challenge classification des images par TensorFlow2 + Keras 1-Move pour le moment-
Pour le moment, je veux convertir n'importe quel fichier avec ffmpeg !!
Essayez d'utiliser l'API Admin de la passerelle Janus
Essayez d'utiliser l'API de Pleasant (python / FastAPI)
Essayez d'utiliser l'API d'action de Python argparse
Voir python pour la première fois
Essayez d'utiliser le module Python Cmd
Démarrez Django pour la première fois
J'ai essayé d'utiliser l'API checkio
Défiez la classification des images avec TensorFlow2 + Keras CNN 1 ~ Bougez pour le moment ~
Essayez d'envoyer un e-mail avec la bibliothèque cliente de l'API Gmail pour Java
Une note utile lors de l'utilisation de Python après une longue période
Essayez d'utiliser le framework d'application Web Flask
J'ai essayé tensorflow pour la première fois
Essayez d'utiliser la bande HL dans l'ordre
Essayez d'utiliser l'appareil photo avec OpenCV de Python
Essayez l'API de visage de Microsoft Cognitive Services
Tweet à l'aide de l'API Twitter en Python
Essayez l'analyse de cluster par K-means
MongoDB avec Python pour la première fois
Créer une application à l'aide de l'API Spotify
Jouez avec Dajare en utilisant l'API COTOHA
Essayez d'accéder à l'API Spotify dans Django.