From b119c4674b9440a7b97020ecf1cdc0273f01ec92 Mon Sep 17 00:00:00 2001 From: Marcel Hoppe Date: Mon, 27 Aug 2018 09:16:13 +0200 Subject: [PATCH] Add documentation for hangouts and notify.hangouts components (#6044) * Add documentation for hangouts and notify.hangouts components * use {% configuration %} * name is not required * Update hangouts.markdown remove email and password from config add integrations description * Update hangouts.markdown Add notice for 2fa * Typo * More fixes * Update notify.hangouts.markdown * Update notify.hangouts.markdown add hint to hangouts.conversations * cleaner doc removing name option from conversations entries --- source/_components/hangouts.markdown | 126 ++++++++++++++++++++ source/_components/notify.hangouts.markdown | 52 ++++++++ source/images/supported_brands/hangouts.png | Bin 0 -> 28244 bytes 3 files changed, 178 insertions(+) create mode 100644 source/_components/hangouts.markdown create mode 100644 source/_components/notify.hangouts.markdown create mode 100644 source/images/supported_brands/hangouts.png diff --git a/source/_components/hangouts.markdown b/source/_components/hangouts.markdown new file mode 100644 index 00000000000..ba290e276f1 --- /dev/null +++ b/source/_components/hangouts.markdown @@ -0,0 +1,126 @@ +--- +layout: page +title: "Google Hangouts" +description: "Hangouts chatbot support" +date: 2018-08-18 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: hangouts.png +ha_category: Hub +ha_release: 0.77 +--- + +This component allows you to send messages to [Google Hangouts](http://hangouts.google.com) 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. + +## {% linkable_title Setup the component via the frontend %} + +Menu: *Configuration* -> *Integrations* + +Fill the form: +* Your **Google Mail Address** and **Password** +* If needed, you will be asked for a 2-factor authorization token + +**IMPORTANT:** If you secured your account with 2 factor authorization: Only verification by app or SMS are supported. There is no support for verification by prompt on your phone. + +The authentication token will be generated and stored internally. + +```yaml +# Example configuration.yaml entry +hangouts: + commands: + - word: testword + conversations: + - id: CONVERSATION_ID1 + - id: CONVERSATION_ID2 + - expression: "My name is (?P.*)" + name: introduction +``` +{% configuration %} +commands: + description: "A list of commands that the bot should listen for. If a command is triggered (via its *word* or *expression*, see below), an event is fired that you can handle using automations. Every command consists of these possible configuration options:" + required: false + type: map + default: empty + keys: + word: + description: "Specifies a word that the bot should listen for. If you specify 'my_command' here, the bot will react to any message starting with 'my_command'." + required: false + type: string + expression: + description: "Specifies a regular expression (in python regexp syntax) that the bot should listen to. The bot will react to any message that matches the regular expression." + required: false + type: string + name: + description: "The name of the command. This will be an attribute of the event that is fired when this command triggers." + required: true + type: string + conversations: + description: "A list of conversations that the bot should listen for this command in. If this is not given, all conversations are used." + required: false + type: [map] + default: empty + keys: + id: + description: "Specifies the id of the conversation. *The conversation id can be obtained from the `hangouts.conversations` entity.*" + required: true + type: string +{% endconfiguration %} + +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. + +### {% linkable_title Event Data %} + +If a command is triggered, a `hangouts_command` event is fired. The event contains the name of the command in the `command` field. + +If the command is a word command, the `data` field contains a list of the command's arguments, i.e., everything that stood behind the word, split at spaces. If the command is an expression command, the `data` field contains the [group dictionary](https://docs.python.org/3.6/library/re.html?highlight=re#re.match.groupdict) of the regular expression that matched the message. + +There are these additional fields: `conversation_id`, `user_id` and `user_name`. + +### {% linkable_title Comprehensive Configuration Example %} + +```yaml +# The Hangouts component +hangouts: + commands: + - word: testword + conversations: + - name: "someothertest" + - expression: "My name is (?P.*)" + name: introduction + +automation: + - alias: 'React to !testword' + trigger: + platform: event + event_type: hangouts_command + event_data: + command: testword + action: + service: hangouts.send_message + data_template: + target: + - name: "hasstest" + message: + - text: 'It looks like you wrote testword' + - alias: 'React to an introduction' + trigger: + platform: event + event_type: hangouts_command + event_data: + command: introduction + action: + service: hangouts.send_message + data_template: + target: + - id: '{{ trigger.event.data.conversation_id}}' + message: + - text: "Hello {{ trigger.event.data.data.name }}" + +``` + +This configuration will: +- Listen for "testword" in the room "someothertest" (and only) there. + If such a message is encountered, it will answer with "It looks like you wrote testword" into the "hasstest" conversation. +- Listen in all conversations for any message matching "My name is (any name)" and answer with "Hello (the given name)" into the same conversation. diff --git a/source/_components/notify.hangouts.markdown b/source/_components/notify.hangouts.markdown new file mode 100644 index 00000000000..e1dcdf83e54 --- /dev/null +++ b/source/_components/notify.hangouts.markdown @@ -0,0 +1,52 @@ +--- +layout: page +title: "Google Hangouts" +description: "Instructions on how to add Google Hangouts notifications to Home Assistant." +date: 2018-08-18 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: hangouts.png +ha_category: Notifications +ha_release: 0.77 +--- + + +The `hangouts` platform allows you to deliver notifications from Home Assistant to [Google Hangouts](http://hangouts.google.com) conversations. Conversations can be both direct as well as group chats. + +## {% linkable_title Configuration %} + +To enable Hangouts notifications in your installation, you first need to configure +the [Hangouts component](/components/hangouts/). Then, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +notify: + - name: NOTIFIER_NAME + platform: hangouts + default_conversations: + - id: CONVERSATION_ID1 + - id: CONVERSATION_ID2 +``` + +{% configuration %} +name: + description: "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`." + required: false + type: string +default_conversations: + description: "The conversations all messages will be sent to, when no other target is given." + required: true + type: [map] + keys: + id: + description: "Specifies the id of the conversation. *The conversation id can be obtained from the `hangouts.conversations` entity.*" + required: true + type: string +{% endconfiguration %} + +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. + +To use notifications, please see the [getting started with automation page](/getting-started/automation/). + diff --git a/source/images/supported_brands/hangouts.png b/source/images/supported_brands/hangouts.png new file mode 100644 index 0000000000000000000000000000000000000000..30df744826caa772ffa31b474c00d4157ef87bec GIT binary patch literal 28244 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 e1Q>zyhrs{)!kw1$S$