2017-09-14 46 views
1

我想与watson聊天机器人进行持续对话。关于watson chatbot的连续对话,我需要做些什么?

当前情况: 聊天箱不记得您之前发送的对话的状态。

我在服务器上安装了Django框架,并创建了一个watson.py文件来加载工作区,并使用韩国聊天应用程序KakaoTalk。

我想要的chatbot的会话流程如下。

用户:我想预约

聊天机器人:什么时候开会日期?

用户:明天

聊天机器人:你的会议时间?

用户:14:00

我们需要您的帮助很大。


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', 
         }, 
       }) 

回答

3

正如你可以看到,有很多examples沃森开发云内使用IBM的开发者每个API 。看看使用Watson Conversation的一个示例。

当您想要为多个请求(消息)使用相同的对话时,您需要包含上一个响应中的上下文对象。

但请记住,您需要在工作区内创建对话流程。

例如:

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

2秒打我!:-O :) –

+0

嗨@ SimonO'Doherty,如果您想要增加更多信息,请回答这个问题。我会喜欢,就像我一样,哈哈!对不起,我是Watson Developer激情。 –

1

作为@SayuriMizuguchi提到的主要问题是与不维护context对象。

基于以上的样品,你会做这样的事情:

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 

然后运行为例:

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

我试图按照您教给我的方式修改源代码,但KaKaotalk得到了[错误的键盘初始化]消息,并且发生了错误。 –

相关问题