* 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.
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.
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"
}
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.
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 (?).
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'é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]
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