Add TT WS API (#28599)
* Add TT WS API * Add a test * Correctly convert TT errrors
This commit is contained in:
parent
b2071b81c1
commit
bd54ff3c02
7 changed files with 93 additions and 20 deletions
|
@ -6,7 +6,7 @@ import logging
|
|||
import aiohttp
|
||||
import async_timeout
|
||||
import attr
|
||||
from hass_nabucasa import Cloud, auth
|
||||
from hass_nabucasa import Cloud, auth, thingtalk
|
||||
from hass_nabucasa.const import STATE_DISCONNECTED
|
||||
import voluptuous as vol
|
||||
|
||||
|
@ -75,28 +75,29 @@ _CLOUD_ERRORS = {
|
|||
|
||||
async def async_setup(hass):
|
||||
"""Initialize the HTTP API."""
|
||||
hass.components.websocket_api.async_register_command(
|
||||
WS_TYPE_STATUS, websocket_cloud_status, SCHEMA_WS_STATUS
|
||||
)
|
||||
hass.components.websocket_api.async_register_command(
|
||||
async_register_command = hass.components.websocket_api.async_register_command
|
||||
async_register_command(WS_TYPE_STATUS, websocket_cloud_status, SCHEMA_WS_STATUS)
|
||||
async_register_command(
|
||||
WS_TYPE_SUBSCRIPTION, websocket_subscription, SCHEMA_WS_SUBSCRIPTION
|
||||
)
|
||||
hass.components.websocket_api.async_register_command(websocket_update_prefs)
|
||||
hass.components.websocket_api.async_register_command(
|
||||
async_register_command(websocket_update_prefs)
|
||||
async_register_command(
|
||||
WS_TYPE_HOOK_CREATE, websocket_hook_create, SCHEMA_WS_HOOK_CREATE
|
||||
)
|
||||
hass.components.websocket_api.async_register_command(
|
||||
async_register_command(
|
||||
WS_TYPE_HOOK_DELETE, websocket_hook_delete, SCHEMA_WS_HOOK_DELETE
|
||||
)
|
||||
hass.components.websocket_api.async_register_command(websocket_remote_connect)
|
||||
hass.components.websocket_api.async_register_command(websocket_remote_disconnect)
|
||||
async_register_command(websocket_remote_connect)
|
||||
async_register_command(websocket_remote_disconnect)
|
||||
|
||||
hass.components.websocket_api.async_register_command(google_assistant_list)
|
||||
hass.components.websocket_api.async_register_command(google_assistant_update)
|
||||
async_register_command(google_assistant_list)
|
||||
async_register_command(google_assistant_update)
|
||||
|
||||
hass.components.websocket_api.async_register_command(alexa_list)
|
||||
hass.components.websocket_api.async_register_command(alexa_update)
|
||||
hass.components.websocket_api.async_register_command(alexa_sync)
|
||||
async_register_command(alexa_list)
|
||||
async_register_command(alexa_update)
|
||||
async_register_command(alexa_sync)
|
||||
|
||||
async_register_command(thingtalk_convert)
|
||||
|
||||
hass.http.register_view(GoogleActionsSyncView)
|
||||
hass.http.register_view(CloudLoginView)
|
||||
|
@ -592,3 +593,18 @@ async def alexa_sync(hass, connection, msg):
|
|||
connection.send_result(msg["id"])
|
||||
else:
|
||||
connection.send_error(msg["id"], ws_const.ERR_UNKNOWN_ERROR, "Unknown error")
|
||||
|
||||
|
||||
@websocket_api.async_response
|
||||
@websocket_api.websocket_command({"type": "cloud/thingtalk/convert", "query": str})
|
||||
async def thingtalk_convert(hass, connection, msg):
|
||||
"""Convert a query."""
|
||||
cloud = hass.data[DOMAIN]
|
||||
|
||||
with async_timeout.timeout(10):
|
||||
try:
|
||||
connection.send_result(
|
||||
msg["id"], await thingtalk.async_convert(cloud, msg["query"])
|
||||
)
|
||||
except thingtalk.ThingTalkConversionError as err:
|
||||
connection.send_error(msg["id"], ws_const.ERR_UNKNOWN_ERROR, str(err))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue