Skip to content

Commit

Permalink
Merge 039a5bc into 3abf8a4
Browse files Browse the repository at this point in the history
  • Loading branch information
arthurTemporim committed Jul 17, 2019
2 parents 3abf8a4 + 039a5bc commit 5532bbc
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 4 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.rst
Expand Up @@ -25,6 +25,7 @@ Removed
Fixed
-----
- validation no longer throws an error during interactive learning
- updated the server endpoint ``/model/parse`` to handle also messages with the intent prefix

[1.1.6] - 2019-07-12
^^^^^^^^^^^^^^^^^^^^
Expand Down
30 changes: 30 additions & 0 deletions rasa/core/agent.py
Expand Up @@ -400,6 +400,36 @@ def is_ready(self):
and self.interpreter is not None
)

async def parse_message_using_nlu_interpreter(
self, message_data: Text
) -> Dict[Text, Any]:
"""Handles message text and intent payload input messages.
The return value of this function is parsed_data.
Args:
message_data (Text): Contain the received message in text or\
intent payload format.
Returns:
The parsed message.
Example:
{\
"text": '/greet{"name":"Rasa"}',\
"intent": {"name": "greet", "confidence": 1.0},\
"intent_ranking": [{"name": "greet", "confidence": 1.0}],\
"entities": [{"entity": "name", "start": 6,\
"end": 21, "value": "Rasa"}],\
}
"""

processor = self.create_processor()
message = UserMessage(message_data)
return await processor._parse_message(message)

async def handle_message(
self,
message: UserMessage,
Expand Down
16 changes: 12 additions & 4 deletions rasa/server.py
Expand Up @@ -804,10 +804,18 @@ async def parse(request: Request):

try:
data = emulator.normalise_request_json(request.json)
parse_data = await app.agent.interpreter.parse(
data.get("text"), data.get("message_id")
)
response_data = emulator.normalise_response_json(parse_data)
try:
parsed_data = await app.agent.parse_message_using_nlu_interpreter(
data.get("text")
)
except Exception as e:
logger.debug(traceback.format_exc())
raise ErrorResponse(
400,
"ParsingError",
"An unexpected error occurred. Error: {}".format(e),
)
response_data = emulator.normalise_response_json(parsed_data)

return response.json(response_data)

Expand Down
32 changes: 32 additions & 0 deletions tests/core/test_agent.py
Expand Up @@ -83,6 +83,38 @@ async def test_agent_train(tmpdir, default_domain):
]


@pytest.mark.parametrize(
"text_message_data, expected",
[
(
'/greet{"name":"Rasa"}',
{
"text": '/greet{"name":"Rasa"}',
"intent": {"name": "greet", "confidence": 1.0},
"intent_ranking": [{"name": "greet", "confidence": 1.0}],
"entities": [
{"entity": "name", "start": 6, "end": 21, "value": "Rasa"}
],
},
),
(
"text",
{
"text": "/text",
"intent": {"name": "text", "confidence": 1.0},
"intent_ranking": [{"name": "text", "confidence": 1.0}],
"entities": [],
},
),
],
)
async def test_agent_parse_message_using_nlu_interpreter(
default_agent, text_message_data, expected
):
result = await default_agent.parse_message_using_nlu_interpreter(text_message_data)
assert result == expected


async def test_agent_handle_text(default_agent):
text = INTENT_MESSAGE_PREFIX + 'greet{"name":"Rasa"}'
result = await default_agent.handle_text(text, sender_id="test_agent_handle_text")
Expand Down

0 comments on commit 5532bbc

Please sign in to comment.