在动作服务器中使用问题CLI应用程序

时间:2018-12-22 23:25:16

标签: rasa-core

我正在使用来自Tom_Bocklisch的问题模块,该模块是在我的动作服务器中作为一个动作的一部分而建立的,该模块是基于hint_toolkit构建的。我的环境受到了docker化,即我正在为NLU,Core和core_sdk使用单独的容器。

当我将基本代码作为来自rasa_core的独立脚本运行时,以下代码可以完美地工作。但是,当我将它作为运行在运行core_sdk的动作服务器中的动作时,它会失败。

def运行(自身,调度程序,跟踪程序,域):     acc = tracker.get_slot('account')

dev_key = requests.get('https://xxxx', timeout=5.0) 

questions = []

api_url = 'https://xxxx/token/' + dev_key 
api_key = requests.get(api_url, timeout=5.0)

field_data_url = 'https://xxxx/fields/' + api_key + '/' + 'Account'

fields = requests.get(field_data_url).json()
field_list = fields['Object']

for flds in field_list:
    if flds['IsRequired']:
        q_item = {'type': 'text', 'name': flds['FieldName'], 'message': flds['LabelText']}
        questions.append(q_item)

answers = qs.prompt(questions)


#SlotSet('account_fields', answers)


return answers

我想这与通过http与CLI应用进行交互有关,但是我不确定如何处理。任何帮助将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:0)

您尝试执行的操作无效。 由于动作服务器是单独的服务器,因此它无法访问用于与Rasa Core进行交互的命令行界面。动作服务器使用HTTP请求与Rasa Core进行通信。因此,如果您的动作服务器执行qs.prompt(questions),则它无法附加到命令行,因为它完全独立于Rasa Core命令行界面。

如果您想问用户一个问题,我宁愿使用dispatcher.utter_messageutter_template向用户发送消息。 如果您希望在Core命令行界面上有不错的交互式提示,以提示在操作服务器上执行的操作,则可能必须实现custom channel,它可以相应地处理和格式化漫游器答案。