Facebook Messenger
The facebook
notification integrationIntegrations connect and integrate Home Assistant with your devices, services, and more. [Learn more] enables sending notifications via Facebook Messenger, powered by Facebook
To use this notification integrationIntegrations connect and integrate Home Assistant with your devices, services, and more. [Learn more] in your installation, add the following to your configuration.yaml
The configuration.yaml file is the main configuration file for Home Assistant. It lists the integrations to be loaded and their specific configurations. In some cases, the configuration needs to be edited manually directly in the configuration.yaml file. Most integrations can be configured in the UI. [Learn more] file.
After changing the configuration.yaml
The configuration.yaml file is the main configuration file for Home Assistant. It lists the integrations to be loaded and their specific configurations. In some cases, the configuration needs to be edited manually directly in the configuration.yaml file. Most integrations can be configured in the UI. [Learn more] file, restart Home Assistant to apply the changes. The integration is now shown on the integrations page under Settings > Devices & services. Its entities are listed on the integration card itself and on the Entities tab.
# Example configuration.yaml entry
notify:
- name: NOTIFIER_NAME
platform: facebook
page_access_token: FACEBOOK_PAGE_ACCESS_TOKEN
Configuration Variables
Access token for your Facebook page. Checkout Facebook Messenger Platform
Usage
With Facebook notify action, you can send your notifications to your Facebook messenger with help of your Facebook page. You have to create a Facebook Page and App
# Example automation notification entry
automation:
- alias: "Evening Greeting"
triggers:
- trigger: sun
event: sunset
actions:
- action: notify.facebook
data:
message: "Good Evening"
target:
- '+919413017584'
- '+919784516314'
You can also send messages to users that do not have stored their phone number on Facebook, but this requires a bit more work. The Messenger platform uses page-specific user IDs instead of a global user ID. You will need to enable a webhook for the “messages” event in Facebook’s developer console. Once a user writes a message to a page, that webhook will then receive the user’s page specific ID as part of the webhook’s payload. Below is a simple PHP script that reacts to the message “get my id” and sends a reply containing the user’s ID:
<?php
$access_token = "";
$verify_token = "";
if (isset($_REQUEST['hub_challenge'])) {
$challenge = $_REQUEST['hub_challenge'];
$hub_verify_token = $_REQUEST['hub_verify_token'];
if ($hub_verify_token === $verify_token) {
echo $challenge;
}
}
$input = json_decode(file_get_contents('php://input'), true);
$sender = $input['entry'][0]['messaging'][0]['sender']['id'];
$message = $input['entry'][0]['messaging'][0]['message']['text'];
if (preg_match('/get my id/', strtolower($message))) {
$url = 'https://graph.facebook.com/v2.10/me/messages?access_token=' . $access_token;
$ch = curl_init($url);
$jsonData = '{
"recipient":{
"id":"' . $sender . '"
},
"message":{
"text":"Your ID: ' . $sender . '"
}
}';
$jsonDataEncoded = $jsonData;
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
if (!empty($input['entry'][0]['messaging'][0]['message'])) {
$result = curl_exec($ch);
}
}
Rich messages
You could also send rich messing (cards, buttons, images, videos, etc). Info
# Example script with a notification entry with a rich message
script:
test_fb_notification:
sequence:
- action: notify.facebook
data:
message: Some text before the quick replies
target: 0034643123212
data:
quick_replies:
- content_type: text
title: Red
payload: DEVELOPER_DEFINED_PAYLOAD_FOR_PICKING_RED
- content_type: text
title: Blue
payload: DEVELOPER_DEFINED_PAYLOAD_FOR_PICKING_BLUE