def save_cache(cls, question: str, session_id: str, context_id: str, std_question_id: int, collection: str, partition: str, qa: QA, qa_manager: QAManager, **kwargs): """ 直接保存信息至session的cache中 @param {str} question - 客户反馈的信息文本(提问回答) @param {str} session_id - 客户的session id @param {str} context_id - 上下文临时id @param {int} std_question_id - 上下文中对应的提问问题id @param {str} collection - 提问答案参数指定的问题分类 @param {str} partition - 提问答案参数指定的场景标签 @param {QA} qa - 服务器的问答处理模块实例对象 @param {QAManager} qa_manager - 服务器的问答数据管理实例对象 @param {kwargs} - 扩展传入参数 info {dict} - 需要存入cache中的字典(按key存入) to {int} - 处理完成后跳转到要处理的问题id,如果有该值则tips参数无效 tips {str} - 处理完成的提示信息 @returns {str, object} - 按照不同的处理要求返回内容 'answer', [str, ...] - 直接返回回复内容,第二个参数为回复内容 'to', int - 跳转到指定问题处理,第二个参数为std_question_id 'again', [str, ...] - 再获取一次答案,第二个参数为提示内容,如果第2个参数为None代表使用原来的参数再提问一次 'break', [collection, partition] - 跳出问题(让问题继续走匹配流程),可以返回[collection, partition]变更分类和场景 默认为'again' """ _info = kwargs.get('info', {}) _tips = kwargs.get('tips', 'save cache success!') _to = kwargs.get('to', None) qa.update_cache_dict(session_id, _info, context_id=context_id) if _to is None: return 'answer', [ _tips, ] else: return 'to', _to
def test_pay_fun(cls, question: str, session_id: str, context_id: str, std_question_id: int, collection: str, partition: str, qa: QA, qa_manager: QAManager, **kwargs): """ 多轮转账的示例 @param {str} question - 客户反馈的信息文本(提问回答) @param {str} session_id - 客户的session id @param {str} context_id - 上下文临时id @param {int} std_question_id - 上下文中对应的提问问题id @param {str} collection - 提问答案参数指定的问题分类 @param {str} partition - 提问答案参数指定的场景标签 @param {QA} qa - 服务器的问答处理模块实例对象 @param {QAManager} qa_manager - 服务器的问答数据管理实例对象 @param {kwargs} - 扩展传入参数 @returns {str, object} - 按照不同的处理要求返回内容 'answer', [str, ...] - 直接返回回复内容,第二个参数为回复内容 'to', int - 跳转到指定问题处理,第二个参数为std_question_id 'again', [str, ...] - 再获取一次答案,第二个参数为提示内容,如果第2个参数为None代表使用原来的参数再提问一次 默认为'again' """ _cache = qa.get_cache_dict(session_id, default={}, context_id=context_id) # 存入转账信息 if 'step' not in _cache.keys(): # 通过nlp意图发起的处理 qa.update_cache_dict(session_id, kwargs, context_id=context_id) _cache = qa.get_cache_dict(session_id, default={}, context_id=context_id) elif _cache['step'] == 'in_name': _cache['in_name'] = question qa.add_cache(session_id, 'in_name', question, context_id=context_id) elif _cache['step'] == 'amount': _cache['amount'] = question qa.add_cache(session_id, 'amount', question, context_id=context_id) elif _cache['step'] == 'confirm': if question == '是的': return 'answer', ['执行向 {$cache=in_name$} 转账 {$cache=amount$}'] else: return 'answer', ['取消转账操作'] # 判断要问的问题 if 'in_name' not in _cache.keys(): qa.add_cache(session_id, 'step', 'in_name', context_id=context_id) return 'again', ['请输入收款人名称'] elif 'amount' not in _cache.keys(): qa.add_cache(session_id, 'step', 'amount', context_id=context_id) return 'again', ['请输入转账金额'] else: # 最后一次确认 qa.add_cache(session_id, 'step', 'confirm', context_id=context_id) return 'again', [ '您确定要向 {$cache=in_name$} 转账 {$cache=amount$} 吗?输入 是的 执行转账操作,输入其他将取消操作' ]