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

Chat Bot спросил: 12 мая 2018 в 03:42 в: python

Мне хотелось бы создать чатбот из этого учебника, но кажется, что версия 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 SlackInputnlu_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 происходит из

1 ответ

Есть решение
nad ответил: 13 мая 2018 в 11:28

Если у вас есть модель диалога и модель 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 version 0.9.0a6

UPDATE: Если вы пытаетесь создать пользовательский интерфейс вокруг it

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

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

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

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

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

Chat Bot ответил: 13 мая 2018 в 06:10
Большое спасибо! Он отлично работает на терминале. Вы знаете, как обращаться с ним, когда я отправляю эти запросы из пользовательского интерфейса? В основном я сделал 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',))
Chat Bot ответил: 13 мая 2018 в 06:35
Ho Это нормально, это была ошибка настройки порта. Тем не менее у меня есть исключение, когда я отправляю сообщение через графический интерфейс: 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"
nad ответил: 13 мая 2018 в 11:23
@ChatBot покажите мне код, который вы используете для отправки из пользовательского интерфейса
nad ответил: 13 мая 2018 в 11:24
@ChatBot Я добавил некоторое обновление в исходное сообщение
Chat Bot ответил: 13 мая 2018 в 03:11
Да ! Отлично !!