2017-09-14 3 views
1

Ich möchte eine kontinuierliche Konversation mit Watson Chatbot haben.Was muss ich für die kontinuierliche Konversation von Watson Chatbot tun?

aktuelle Situation: Die Chatbox erinnert sich nicht an den Status der Konversation, die Sie zuvor gesendet haben.

Ich habe das Django-Framework auf dem Server installiert und eine watson.py-Datei erstellt, um den Arbeitsbereich zu laden und mit KakaoTalk, einer koreanischen Chat-Anwendung, zu arbeiten.

Der Konversationsfluss des Chatbot, den ich möchte, ist wie folgt.

Benutzer: Ich möchte eine Reservierung

Chatbot machen: Wann ist das Treffen Datum?

Benutzer: morgen

Chatbot: Wie ist Ihre Besprechungszeit?

Benutzer: 14.00

Wir brauchen Ihre Hilfe sehr.


watson.py

import json 
from watson_developer_cloud import ConversationV1 
from .models import Test 
from . import views 
import simplejson 

conversation = ConversationV1(
     username = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 
     password = "xxxxxxxxxxxxxxxxxxxxxx", 
     version = '2017-05-26') 


workspace_id = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'   #workspace 


def test(return_str): 

     result = '' 

     except Exception as err: 
       pass 

     response = conversation.message(
      workspace_id = workspace_id, 
      message_input = {'text': return_str}, 
     ) 

     for i in range(len(response['output']['text'])): 
       result += response['output']['text'][i] +'\n' 

     return result 

views.py

import json 
from django.shortcuts import render 
from django.http import JsonResponse 
from django.views.decorators.csrf import csrf_exempt 
from .models import Jidum, Test 
from . import watson 


# Create your views here. 

def keyboard(request): 
     return JsonResponse({ 
       'type':'text', 
       }) 

@csrf_exempt 
def message(request): 
     message = ((request.body).decode('utf-8')) 
     return_json_str = json.loads(message) 
     return_str = return_json_str['content']  

     return JsonResponse({ 
         'message': { 

           'text': watson.test(return_str), 
         }, 
         'keyboard': { 
           'type':'text', 
         }, 
       }) 

Antwort

3

Wie Sie sehen können, hat eine Menge examples innerhalb Watson Entwickler Cloud für den Einsatz jedes API von IBM Entwickler . Schauen Sie sich in einem Beispiel Watson Conversation an.

Wenn Sie dieselbe Konversation für mehrere Anfragen (Nachricht) verwenden möchten, müssen Sie das Kontextobjekt aus der vorherigen Antwort einfügen.

Denken Sie jedoch daran, dass Sie den Konversationsfluss in Ihrem Arbeitsbereich erstellen müssen.

Zum Beispiel:

import json 
from watson_developer_cloud import ConversationV1 

######################### 
# message 
######################### 

conversation = ConversationV1(
    username='YOUR SERVICE USERNAME', 
    password='YOUR SERVICE PASSWORD', 
    version='2017-04-21') 

# replace with your own workspace_id 
workspace_id = '0a0c06c1-8e31-4655-9067-58fcac5134fc' 
# this example don't include 
response = conversation.message(workspace_id=workspace_id, message_input={ 
    'text': 'What\'s the weather like?'}) 
print(json.dumps(response, indent=2)) 

# This example include the context object from the previous response. 
# response = conversation.message(workspace_id=workspace_id, message_input={ 
# 'text': 'turn the wipers on'}, 
#        context=response['context']) //example 
# print(json.dumps(response, indent=2)) 
+1

mich um 2 Sekunden zu schlagen!: -O: –

+0

Hi @ SimonO'Doherty, bitte, wenn Sie mehr Informationen akkumulieren möchten, beantworten Sie diese Frage auch. Ich werde upvote, wie immer ich, haha! Sorry, ich bin Watson Developer leidenschaftlich. –

1

Wie @SayuriMizuguchi erwähnt ist das Hauptproblem mit nicht context Objekt beibehalten wird.

Basierend auf Ihrer Probe oben, würden Sie so etwas wie tun:

context = {} 
def test(input_string): 

    except Exception as err: 
      pass 

    response = conversation.message(
     workspace_id = workspace_id, 
     message_input = {'text': return_str}, 
     context = context 
    ) 

    result = '\n'.join(response['output']['text']) 
    context = response['context'] 

    return result 

Dann die als Beispiel auszuführen:

response = test('I want to make a reservation') 
print(response) 
response = test('tomorrow') 
print(response) 
+0

Ich habe versucht, die Quelle so zu ändern, wie Sie es mir beigebracht haben, aber KaKaotalk erhielt eine Meldung [falsche Tastaturinitialisierung] und ein Fehler trat auf. –

Verwandte Themen