Google Hangouts


This component allows you to send messages to Google Hangouts 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.

Setup the component via the frontend

Menu: Configuration -> Integrations

Configure the integration:

  • Enter your Google Mail Address and Password
  • If you secured your account with 2-factor authentication you will be asked for a 2-factor authentication token.

BEST PRACTICE: You can’t write messages to yourself or get notifications in a group, if “you” write the message. The best way is to create a new Google Hangouts account for this integration.

IMPORTANT: 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.

IMPORTANT 2: If you are sure your email and password is correct, but the component says the login is invalid. Wait a few hours and try it again, it might be, that google asks for a captcha which we can’t support. Google does not provide official support for using bots with Google Hangouts, that’s why we have to work around this.

The authentication token will be generated and stored internally.

# Example configuration.yaml entry
hangouts:
  intents:
    LivingRoomTemperature:
      sentences:
        - What is the temperature in the living room
      conversations:
        - id: CONVERSATION_ID1
        - id: CONVERSATION_ID2
  error_suppressed_conversations:
    - id: CONVERSATION_ID2

Configuration Variables

intents

(map)(Optional)Intents that the hangouts component should understand.

Default value: empty

<INTENT NAME>

(map)(Required)Single intent entry.

sentences

(list)(Required)Sentences that should trigger this intent.

conversations

(map)(Optional)A list of conversations that triggers this intent. If no conversation are given, every conversations triggers the intent.

Default value: empty

id

(string)(Required)Specifies the id of the conversation. The conversation id can be obtained from the hangouts.conversations entity.

error_suppressed_conversations

(map)(Optional)A list of conversations that won’t get a message if the intent is not known.

Default value: empty

id

(string)(Required)Specifies the id of the conversation. The conversation id can be obtained from the hangouts.conversations entity.

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.

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.state }} 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_template:
        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 List of targets with id or name. [Required] [{“id”: “UgxrXzVrARmjx_C6AZx4AaABAagBo-6UCw”}, {“name”: “Test Conversation”}]
message List of message segments, only the “text” field is required in every segment. [Required] [{“text”:”test”, “is_bold”: false, “is_italic”: false, “is_strikethrough”: false, “is_underline”: false, “parse_str”: false, “link_target”: “http://google.com”}, …]