86 lines
2.4 KiB
Python
86 lines
2.4 KiB
Python
"""Constants for Google Hangouts Component."""
|
|
import logging
|
|
|
|
import voluptuous as vol
|
|
|
|
from homeassistant.components.notify import ATTR_DATA, ATTR_MESSAGE, ATTR_TARGET
|
|
import homeassistant.helpers.config_validation as cv
|
|
|
|
_LOGGER = logging.getLogger(".")
|
|
|
|
|
|
DOMAIN = "hangouts"
|
|
|
|
CONF_2FA = "2fa"
|
|
CONF_AUTH_CODE = "authorization_code"
|
|
CONF_REFRESH_TOKEN = "refresh_token"
|
|
CONF_BOT = "bot"
|
|
|
|
CONF_CONVERSATIONS = "conversations"
|
|
CONF_DEFAULT_CONVERSATIONS = "default_conversations"
|
|
CONF_ERROR_SUPPRESSED_CONVERSATIONS = "error_suppressed_conversations"
|
|
|
|
CONF_INTENTS = "intents"
|
|
CONF_INTENT_TYPE = "intent_type"
|
|
CONF_SENTENCES = "sentences"
|
|
CONF_MATCHERS = "matchers"
|
|
|
|
INTENT_HELP = "HangoutsHelp"
|
|
|
|
EVENT_HANGOUTS_CONNECTED = "hangouts_connected"
|
|
EVENT_HANGOUTS_DISCONNECTED = "hangouts_disconnected"
|
|
EVENT_HANGOUTS_USERS_CHANGED = "hangouts_users_changed"
|
|
EVENT_HANGOUTS_CONVERSATIONS_CHANGED = "hangouts_conversations_changed"
|
|
EVENT_HANGOUTS_CONVERSATIONS_RESOLVED = "hangouts_conversations_resolved"
|
|
EVENT_HANGOUTS_MESSAGE_RECEIVED = "hangouts_message_received"
|
|
|
|
CONF_CONVERSATION_ID = "id"
|
|
CONF_CONVERSATION_NAME = "name"
|
|
|
|
SERVICE_SEND_MESSAGE = "send_message"
|
|
SERVICE_UPDATE = "update"
|
|
SERVICE_RECONNECT = "reconnect"
|
|
|
|
|
|
TARGETS_SCHEMA = vol.All(
|
|
vol.Schema(
|
|
{
|
|
vol.Exclusive(CONF_CONVERSATION_ID, "id or name"): cv.string,
|
|
vol.Exclusive(CONF_CONVERSATION_NAME, "id or name"): cv.string,
|
|
}
|
|
),
|
|
cv.has_at_least_one_key(CONF_CONVERSATION_ID, CONF_CONVERSATION_NAME),
|
|
)
|
|
MESSAGE_SEGMENT_SCHEMA = vol.Schema(
|
|
{
|
|
vol.Required("text"): cv.string,
|
|
vol.Optional("is_bold"): cv.boolean,
|
|
vol.Optional("is_italic"): cv.boolean,
|
|
vol.Optional("is_strikethrough"): cv.boolean,
|
|
vol.Optional("is_underline"): cv.boolean,
|
|
vol.Optional("parse_str"): cv.boolean,
|
|
vol.Optional("link_target"): cv.string,
|
|
}
|
|
)
|
|
MESSAGE_DATA_SCHEMA = vol.Schema(
|
|
{vol.Optional("image_file"): cv.string, vol.Optional("image_url"): cv.string}
|
|
)
|
|
|
|
MESSAGE_SCHEMA = vol.Schema(
|
|
{
|
|
vol.Required(ATTR_TARGET): [TARGETS_SCHEMA],
|
|
vol.Required(ATTR_MESSAGE): [MESSAGE_SEGMENT_SCHEMA],
|
|
vol.Optional(ATTR_DATA): MESSAGE_DATA_SCHEMA,
|
|
}
|
|
)
|
|
|
|
INTENT_SCHEMA = vol.All(
|
|
# Basic Schema
|
|
vol.Schema(
|
|
{
|
|
vol.Required(CONF_SENTENCES): vol.All(cv.ensure_list, [cv.string]),
|
|
vol.Optional(CONF_CONVERSATIONS): [TARGETS_SCHEMA],
|
|
}
|
|
)
|
|
)
|