mirror of
https://github.com/home-assistant/core.git
synced 2025-12-24 21:06:19 +00:00
Add HTTP view to conversation to handle intents via JSON POST (#28818)
This commit is contained in:
committed by
Paulus Schoutsen
parent
cd8c281cb6
commit
c2161b1f5a
@@ -124,6 +124,51 @@ async def test_http_processing_intent(hass, hass_client):
|
||||
}
|
||||
|
||||
|
||||
async def test_http_handle_intent(hass, hass_client):
|
||||
"""Test handle intent via HTTP API."""
|
||||
|
||||
class TestIntentHandler(intent.IntentHandler):
|
||||
"""Test Intent Handler."""
|
||||
|
||||
intent_type = "OrderBeer"
|
||||
|
||||
async def async_handle(self, intent):
|
||||
"""Handle the intent."""
|
||||
response = intent.create_response()
|
||||
response.async_set_speech(
|
||||
"I've ordered a {}!".format(intent.slots["type"]["value"])
|
||||
)
|
||||
response.async_set_card(
|
||||
"Beer ordered", "You chose a {}.".format(intent.slots["type"]["value"])
|
||||
)
|
||||
return response
|
||||
|
||||
intent.async_register(hass, TestIntentHandler())
|
||||
|
||||
result = await async_setup_component(
|
||||
hass,
|
||||
"conversation",
|
||||
{"conversation": {"intents": {"OrderBeer": ["I would like the {type} beer"]}}},
|
||||
)
|
||||
assert result
|
||||
|
||||
client = await hass_client()
|
||||
resp = await client.post(
|
||||
"/api/conversation/handle",
|
||||
json={"name": "OrderBeer", "data": {"type": "Belgian"}},
|
||||
)
|
||||
|
||||
assert resp.status == 200
|
||||
data = await resp.json()
|
||||
|
||||
assert data == {
|
||||
"card": {
|
||||
"simple": {"content": "You chose a Belgian.", "title": "Beer ordered"}
|
||||
},
|
||||
"speech": {"plain": {"extra_data": None, "speech": "I've ordered a Belgian!"}},
|
||||
}
|
||||
|
||||
|
||||
@pytest.mark.parametrize("sentence", ("turn on kitchen", "turn kitchen on"))
|
||||
async def test_turn_on_intent(hass, sentence):
|
||||
"""Test calling the turn on intent."""
|
||||
|
||||
Reference in New Issue
Block a user