WatsonAPI之Conversation(使用Flask调用Conversation)

使用Flask和Conversation 做一个小的对话程序

使用Flask做一个对话程序

事前准备
  • 做成一个conversation的workspace
示例代码
  • 1 初始化conversation对象

username和password是api的用户名密码,version是api的版本号

    def __init__(self):
        self.cvsn = ConversationV1(
          username=CVSN.USERNAME,
          password=CVSN.PASSWORD,
          version='2017-05-26'
        )
  • 2 封装一个对话方法

text是对话文本,context是上下文。返回值是conversation的回答文本
注意如果想进行连续的对话,则需要把前次对话取得的response中的context作为参数传入本次对话中,如果context为空,则视为一个新的对话开始。

    def message(self,text,context):
        response = self.cvsn.message(workspace_id=CVSN.WORKSPACE, message_input={
            'text': text},context=context)
        self.infos = json.dumps(response,ensure_ascii=False, indent=2)
        self.context = response['context']
        return response['output']['text'][0]
  • 3 画面入口方法

作为入口,在用户使用之前先调用一次conversation取得context
将context放入session中。
这里需要注意一点,想使用session 需要在flask对象中注册secret_key

app = Flask(__name__)
app.config['SECRET_KEY'] = 'atp_secret_key'

@app.route('/', methods=['GET'])
def conversation():
    #初始页面
    question = ''
    answer = cvsn.message(question, None)
    debugInfo = cvsn.debugInfo()
    session['cvsn_context'] = cvsn.context
    return render_template('cvsn.html',question = question, answer = answer, debugInfo = debugInfo)
WatsonAPI之Conversation(使用Flask调用Conversation)_第1张图片
效果图
  • 4 对话方法

将画面上输入的问题发送给conversation

@app.route('/question', methods=['GET'])
def question():
    #从画面获取文本信息
    question = request.args.get('qTxt', '')
    context = session['cvsn_context']
    answer = cvsn.message(question, context)
    
    session['cvsn_context'] = cvsn.context
    debugInfo = cvsn.debugInfo()
    
    question = ''
    return render_template('cvsn.html',question = question, answer = answer, debugInfo = debugInfo)
WatsonAPI之Conversation(使用Flask调用Conversation)_第2张图片
效果图

你可能感兴趣的:(WatsonAPI之Conversation(使用Flask调用Conversation))