Google Chat
This integration allows you to send messages to Google Chat conversations, as well as to react to messages in conversations. Reacting to commands is accomplished by firing an event when one of the configured commands is triggered. Home Assistant will impersonate a Smartisan YQ603 phone which will then show up in your Google devices.
There is currently support for the following device types within Home Assistant:
Configuration
Adding Google Chat to your Home Assistant instance can be done via the user interface, by using this My button:
If the above My button doesn’t work, you can also perform the following steps manually:
-
Browse to your Home Assistant instance.
-
In the sidebar click on Settings.
-
From the configuration menu select: Devices & Services.
-
In the bottom right, click on the Add Integration button.
-
From the list, search and select “Google Chat”.
-
Follow the instruction on screen to complete the set up.
Manual Authentication
If you are sure your email and password are correct, but the integration says the login is invalid then you would need to use the manual authentication method.
To use the manual method, first you would need to obtain an authorization code (see instructions below for details).
Once the code is obtained fill in the form with your email, password and the authorization code to complete authentication.
Steps to obtain Authorization Code:
- To obtain your authorization code, open this URL in your browser.
- Log into your Google account normally.
- You should be redirected to a loading screen. Copy the
oauth_code
cookie value set by this page and paste it here.
To obtain the oauth_code
cookie value, follow the steps below:
Note: If the oauth_code
cookie is not showing in Chrome, try Firefox.
- Press F12 to open developer tools.
- Select the “Application” (Chrome) or “Storage” (Firefox) tab.
- In the sidebar, expand “Cookies” and select
https://accounts.google.com
- In the cookie list, double click on the value for the
oauth_code
cookie to select it, and copy the value. This is the authorization code
If you secured your account with 2-factor authentication: Only verification by app or SMS are supported. There is no support for verification by prompt on your phone.
The manual authentication work-around is a result of unofficial support for using bots in Chat from Google.
The authentication token will be generated and stored internally.
# Example configuration.yaml entry
hangouts:
intents:
HangoutsHelp:
sentences:
- Help
LivingRoomTemperature:
sentences:
- What is the temperature in the living room
conversations:
- id: CONVERSATION_ID1
- id: CONVERSATION_ID2
default_conversations:
- id: CONVERSATION_ID1
error_suppressed_conversations:
- id: CONVERSATION_ID2
Configuration Variables
Intents that the chat integration should understand.
Single intent entry.
A list of conversations that are used for intents if no conversations
entry for an intent is given.
The conversations has to be precreated, the conversation id can be obtained from the hangouts.conversations
entity. Make sure to use quotes around the conversation id or alias to escape special characters (!
, and #
) in YAML.
The intent HangoutsHelp
is part of the integration and return a list of all sentences the integration understands in this conversation.
Adding sentences
# The Hangouts component
hangouts:
intents:
HassLightSet:
sentences:
- Toggle {name}.
conversations:
- id: CONVERSATION_ID1
Ping:
sentences:
- How many Conversation do you know
error_suppressed_conversations:
- id: CONVERSATION_ID2
intent_script:
Ping:
speech:
text: I know {{ states('hangouts.conversations') }} conversations
This configuration will:
- Toggle the light in the given location in a specific conversation.
- Return the conversations the bot know.
Adding advanced custom sentences
Sentences can contain slots (marked with curly braces: {name}
) and optional words (marked with square brackets: [the]
). The values of slots will be passed on to the intent and are available inside the templates.
The following configuration can handle the following sentences:
- Change the lights to red
- Change the lights to green
- Change the lights to blue
- Change the lights to the color red
- Change the lights to the color green
- Change the lights to the color blue
# Example configuration.yaml entry
hangouts:
intents:
ColorLight:
sentences:
- Change the lights to [the color] {color}
intent_script:
ColorLight:
speech:
text: Changed the lights to {{ color }}.
action:
service: light.turn_on
data:
rgb_color:
- "{% if color == 'red' %}255{% else %}0{% endif %}"
- "{% if color == 'green' %}255{% else %}0{% endif %}"
- "{% if color == 'blue' %}255{% else %}0{% endif %}"
Services
Service hangouts.update
Updates the list of conversations.
Service data attribute | Optional | Description |
---|---|---|
Service hangouts.send_message
Sends a message to the given conversations.
Service data attribute | Optional | Description |
---|---|---|
target | No | List of targets with id or name. |
message | No | List of message segments, only the “text” field is required in every segment. |
data | Yes | Either a path to an image file or a URL to an image. |
Service hangouts.reconnect
Reconnects the Google Chat bot.
Service data attribute | Optional | Description |
---|---|---|
Advanced
Automatic reconnect after IP change
The Google Chat integration can’t detect if your IP address changes, so it can’t automatically reconnect to the Google servers. This is a workaround for this problem.
sensor:
- platform: rest
resource: https://api.ipify.org/?format=json
name: External IP
value_template: "{{ value_json.ip }}"
scan_interval: 10
automation:
- alias: "Reconnect Chat"
trigger:
- entity_id: sensor.external_ip
platform: state
condition:
- condition: template
value_template: "{{ trigger.from_state.state != trigger.to_state.state }}"
- condition: template
value_template: '{{ not is_state("sensor.external_ip", "unavailable") }}'
action:
- service: hangouts.reconnect
Notifications
The hangouts
platform allows you to deliver notifications from Home Assistant to Google Chat conversations. Conversations can be both direct as well as group chats.
To enable Google Chat notifications in your installation, you first need to configure the Hangouts component. Then, add the following to your configuration.yaml
file:
# Example configuration.yaml entry
notify:
- name: NOTIFIER_NAME
platform: hangouts
default_conversations:
- id: CONVERSATION_ID1
- id: CONVERSATION_ID2
Configuration Variables
Setting the optional parameter name
allows multiple notifiers to be created. The default value is notify
. The notifier will bind to the service notify.NOTIFIER_NAME
.
Finding the conversation ID
The conversations has to be precreated, the conversation id can be obtained from the hangouts.conversations
entity, this can be found in Developer Tools -> States. Using your web browsers search tool to find the hangouts.conversations
entity. You will find something like below.
0: {
"id": "<Hangout ID>",
"name": "A simple hangout",
"users": [
"Steve",
"Jo"
]
}
This may have more if the account is in multiple hangout conversations, for configuring the bot to be in a conversation you will need the ID that would be where <Hangout ID>
is in that example. Make sure to use quotes around the conversation id or alias to escape special characters (!
, and #
) in YAML.
To use notifications, please see the getting started with automation page.