我希望与watson chatbot进行持续对话。
现状: 聊天框不记得您之前发送的对话的状态。
我在服务器上安装了Django框架并创建了一个watson.py文件来加载工作区并使用韩文聊天应用程序KakaoTalk。
我想要的聊天机器人的对话流程如下。
用户:我想预约
Chatbot:会议日期是什么时候?
用户:明天
Chatbot:您的会议时间如何?
用户:14:00
我们非常需要你的帮助。
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
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',
},
})
答案 0 :(得分:2)
正如您所看到的,Watson Developer Cloud中有很多examples用于使用来自IBM Developers的每个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 :(得分: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)