Использование приложения опросного интерфейса командной строки на сервере действий

Я использую модуль вопросов от Тома Боклиша, созданный на основе prompt_toolkit, как часть действия на моем сервере действий. Моя среда dockerized, т.е. я использую отдельные контейнеры для NLU, Core и core_sdk.

Следующий код отлично работает, когда я запускаю базовый код как отдельный скрипт из rasa_core. Однако, когда я помещаю его как действие на сервере действий, на котором запущен core_sdk, он терпит неудачу.

def run (сам, диспетчер, трекер, домен): 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

Я предполагаю, что это как-то связано с взаимодействием с приложением CLI через http, но я не уверен, как с этим бороться. Любая помощь будет высоко ценится.

Спасибо


person Sanjoy    schedule 22.12.2018    source источник


Ответы (1)


То, что вы пытаетесь сделать, не сработает. Сервер действий не имеет доступа к вашему интерфейсу командной строки, который вы используете для взаимодействия с Rasa Core, поскольку это отдельный сервер. Сервер действий взаимодействует с Rasa Core с помощью HTTP-запросов. Таким образом, если ваш сервер действий выполняет qs.prompt(questions), нет командной строки, к которой он может подключиться, поскольку он полностью независим от интерфейса командной строки Rasa Core.

Если вы хотите задать пользователям вопрос, я бы предпочел использовать dispatcher.utter_message или utter_template для отправки сообщений пользователю. Если вы хотите иметь красивые интерактивные подсказки в интерфейсе командной строки Core для действий, которые выполняются на сервере действий, вам, вероятно, придется реализовать клиентский канал, который может соответствующим образом обрабатывать и форматировать ответ бота.

person Tobias    schedule 23.12.2018