Как прослушивать данные в определенном порту?

Я бы хотел создать чат-бота из этот учебник, но кажется, что версия Rasa слишком старая, и внезапно команды не работают.

Я знаю, как восстанавливать сообщения и отвечать на них через Slack, но я не знаю, как это сделать из веб-приложения, которое я разрабатываю с интерфейсом чата.

В Slack я запустил следующий скрипт:

from rasa_core.channels import HttpInputChannel
from rasa_core.agent import Agent
from rasa_core.interpreter import RasaNLUInterpreter
#from rasa_slack_connector import SlackInput

nlu_interpreter = RasaNLUInterpreter('./models/nlu/default/moodnlu')
agent = Agent.load('./models/dialogue',interpreter = nlu_interpreter)


# With Slack
# https://api.slack.com/apps/AASPDV196/oauth?
#input_channel = SlackInput('OAuth Access Token','Bot User OAuth Access Token', 'Verification Token',True)

#agent.handle_channel(HttpInputChannel(5004,'/',input_channel))

# With inner app
input_channel = SlackInput('OAuth Access Token','Bot User OAuth Access Token', 'Verification Token',True)
agent.handle_channel(HttpInputChannel(5000,'/',input_channel))

Я знаю, что мне нужно изменить input_channel, чтобы он слышал в правильном порту, но я действительно не знаю, как это сделать.

Здесь находится HttpInputChannel.


person Chat Bot    schedule 05.06.2018    source источник


Ответы (1)


Если у вас есть готовая модель диалога и модель nlu, вы можете запустить ядро ​​Rasa следующим образом

$python -m rasa_core.server -d <DIALOGUE_MODEL_PATH> -u <NLU_MODEL_PATH> --debug -o out.log --cors *

а затем в другом терминале сделайте это ниже, и вы получите ответ

$curl -XPOST localhost:5005/conversations/default/respond -d '{"query":"Hello"}'

Если идентификатор отправителя важен для вас, то используйте команду ниже, если вы хотите передать nad в качестве идентификатора отправителя.

$curl -XPOST localhost:5005/conversations/nad/respond -d '{"query":"Hello"}'

Работает для версии NLU 0.12.3 и версии Core 0.9.0a6

ОБНОВЛЕНИЕ: если вы пытаетесь создать на его основе пользовательский интерфейс

Запустите ниже в терминале

$python -m rasa_core.server -d <DIALOGUE_MODEL_PATH> -u <NLU_MODEL_PATH> --debug -o out.log --cors *

На вашем сервере

import requests
import json

data = '{"query":"hello"}'
response = requests.post('http://localhost:5005/conversations/default/respond', data=data)
json_response = response.json()
print (json_response[0]['text'])

Это должно вывести ответ hello в ваш терминал.

person nad    schedule 05.06.2018
comment
Большое спасибо! На терминале работает неплохо. Вы знаете, как с этим справиться, когда я отправляю эти запросы из пользовательского интерфейса? В основном я делал app.py, который отправляет запросы POST, но для сейчас у меня только HTTPConnectionPool(host='localhost', port=5000): Max retries exceeded with url: /parse?q=Hello (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f117cf677f0>: Failed to establish a new connection: [Errno 111] Connection refused',)) - person Chat Bot; 06.06.2018
comment
Ничего страшного, это просто ошибка настройки порта. Тем не менее, у меня есть исключение, когда я отправляю сообщение через графический интерфейс: Expecting value: line 1 column 1 (char 0), тогда как сервер Rasa дает следующий ответ: 2018-06-06 09:12:22+0100 [-] "127.0.0.1" - - [06/Jun/2018:08:12:21 +0000] "GET /parse?q=I+am+sad HTTP/1.1" 404 233 "-" "python-requests/2.18.4" - person Chat Bot; 06.06.2018
comment
@ChatBot покажите мне код, который вы используете для отправки из пользовательского интерфейса - person nad; 06.06.2018
comment
Да ! Идеально !! - person Chat Bot; 06.06.2018