Intégration DialogFlow dans Home Assistant

Pour ce tutoriel, j’ai déroulé la procédure officielle : Dialogflow - Home Assistant
N’ayant que quelques heures de pratiques, que les utilisateurs + expérimentés n’hésitent pas à apporter les corrections et compléments nécessaires :wink:

Pour ceux qui cherchent une alternative à IFTTT, l’intégration DialogFlow est conçue pour être utilisée avec Webhook. Lorsqu’une conversation se termine avec un utilisateur, Dialogflow envoie une action et des paramètres au webhook.

Pour pouvoir recevoir des messages de Dialogflow, votre instance Home Assistant doit être accessible depuis le Web et vous devez avoir l’URL externe en https. Dialogflow renverra des réponses de secours si votre serveur ne répond pas ou prend trop de temps (plus de 5 secondes).

Configuration de votre compte Dialogflow

. * Pour obtenir votre webhook DialogFlow,
… Aller dans l’Intégration sous Configuration
… Cliquer sur le + en bas de l’écran et taper dialogflow


… Sélectionner DialogFlow et soumettre pour disposer du webhook DialogFlow

Revenant sous DialogFlow, après avoir cliqué sur « Save » dans « Fullfillment »

  • Créer un « nouvel intent »

  • Sous «Training phase», écrivez une phrase que vous, l’utilisateur, direz à Dialogflow, par exemple, « Ouvrir le portail » (possibilité d’ajouter d’autres phrases)

  • Dans «Action and parameters», définissez une « clé » (ce sera ce nom qui sera utilisé sous HA comme intent_script), par exemple: « Ouvrirleportail »

  • Dans «Responses», définissez «Connexion trop longue ou impossible» (réponse de secours)

  • À la fin de la page, cliquez sur «Fulfillment» et cochez «Use webhook»

  • Cliquez sur « Save »

  • En haut à droite, où est écrit «Try it now…», écrivez ou dites la phrase que vous avez précédemment définie et appuyez sur Entrée

  • Dialogflow a envoyé une requête à votre serveur Home Assistant (mais cela ne fonctionnera tant que vous n’aurez pas rajouté l’intégration DialogFlow sous HA et défini vos intent_script)

Configuration de Home Assistant

# Exemple sous configuration.yaml
dialogflow:

intent_script:
  Accueil:
    speech:
      text: Que puis-je pour vous?
  Aurevoir:
    speech:
      text: A bientôt.
  Ouvrirleportail:
    speech:
      text: Ok j'ouvre le portail
    action:
      - service: notify.notify
        data:
          message: Ouverture du portail
      - service: switch.turn_on
        data:
          entity_id: switch.portal_opening

NB: il est important avant d’initier la discussion entre DialogFlow et Home Assistant, de définir les 2 commandes pour initier et clore la discussion avec DialogFlow en définissant les 2 clés Accueil et Au Revoir


Ne pas oublier sur l’intent Au revoir d’activer les Set this intent as the end of the conversation

Pour déclarer le message d’accueil, vous devez:

  • cliquer sur « Integrations »
  • puis cliquer sur « Integration Settings »
  • la fenêtre ci-dessous s’affichant 1) cliquer sur la petite croix 2) pour sélectionner « Accueil » 3) cliquer sur « Sign in required » 4) cliquer sur « Manage assistant app »

Vous serez alors dirigé vers votre console Actions on Google

  • Dans le Quick Setup, cliquez alors sur « Define how you Action is invoked »
    image
  • Précisez le nom sous lequel vous souhaitez « invoquer » Home Assistant (pour information, il ne sera pas possible que ce nom comporte « Google » ou « Assistant »), puis cliquez sur Save

Une fois toutes ces étapes réalisés et après avoir défini tous vos intent_script dont Accueil et Au Revoir, vous pourrez engager des actions via :
« Ok Google, parler avec « le nom que vous avez défini pour invoquer HA » »
HA : « Je montre la page de test d’HA; que puis-je pour vous ? »
« Ouvrir le portail »
HA: « Ok j’ouvre le portail »
« Au revoir »
HA : « A bientôt »

Autre source : la video de Paradis Artificiels, commençant à dater un peu, on retrouve à peu près les mêmes instructions

3 « J'aime »

Merci beaucoup d’avoir pris le temps de rediger ce tutoriel.
:+1:

Je voudrais rajouter :

Dialogflow et Intent permettent également d’interroger des capteurs.
Il est donc possible de demander la température extérieure par exemple :

dialogflow:
intent_script:
  GetTemperatureOutside:  # Intent type
    speech:
      text: Il fait actuellement {{ states("sensor.temperature_exterieur") | float | replace(".",",")}} degrés.
    action:
    - service: notify.notofy
      data:
        title: '*ASUP*'
        message: 'ASUP TEST INTENT'

2 « J'aime »

Salut Petit soucis de mon coté au moment de : Vous serez alors dirigé vers votre console Actions on Google
image

J’ai eu cette erreur quand mon compte gmail qui est redirigé en cliquant sur le bouton de Dialogflow n’était pas le même que dans ActionsGoogle

Je pense que c’est mon soucis …

@DcJona tiens nous au courant…

Oui en effet, vous avez raison @DcJona @Clemalex , j’ai eu aussi également ce souci.
De mémoire, j’ai contourné le problème du coup en allant directement sur l’adresse web de la console « Actions on Google » : Anmelden – Google Konten pour poursuivre le tuto (home-assistant-xxxx étant le Project_ID de ton projet).
J’espère que cela résoudra ton souci

1 « J'aime »

Hello @Clemalex , sais-tu par hasard s’il est également possible d’interroger des capteurs avec l’intégration de Google Assistant ?

Je n’ai pas plus creuser que ça l’intégration GA.

Mais de mémoire, la seule possibilité était de passer par du tts sur un media_player…

On cast le tts sur un media_player qui renvoi les états des capteurs.

Je trouve la voix moins jolie donc je passe par Dialogflow

1 « J'aime »

le contourner n’a fonctionner chez moi qu’en mode de navigation privée sinon toujours l’erreur…
par contre j’ai ceci :

Que je mette maison ou ma maison ou autre

apparemment tout est not alowed lol

Ce champ est utilisé pour la publication de l’application.

En gros, tant que tu reste en version test, cette erreur n’a pas d’impact de ce que j’ai remarqué

1 « J'aime »

Il me semble aussi que j’ai un message d’erreur, mais que cela ne m’a pas empêcher de poursuivre

ca a l’air ok pour le moment

1 « J'aime »

Salut,

Y a t’il un moyen pour supprimer le message « Voici la version test de xxx » ?

Merci.

Salut,
Je n’ai pas connaissance sorry

J’ai pas mal avancé !

Je bloque sur 1 truc.
J’arrive a récupérer mon paramètre sur Dialogflow (sur la partie de test sur la droite de la fenêtre).

Mais je n’arrive pas a exploiter ce paramètre dans HA.

Le mieux que j’ai réussi a faire c’est de lancer le script sans paramètre xD

Que faut il mettre dans mon configuration.yaml ?

Voici ce que j’ai mi pour mon test :

intent_script:
  ArrosageJardin:
    speech:
      text: J'arrose le jardin pendant ?? minutes # Comment recuperer mon paramatre ici ?
    action:
      service: notify.notify
      data:
        message: J'arrose le jardin pendant ?? minutes # Comment recuperer mon paramatre ici ?

Merci pour l’aide :slight_smile:

Je viens de trouver !

Pour ceux que ca intéresse. Il suffi de mettre entre {{ }} le nom du paramètre. Ce qui donne dans mon exemple :

  ArrosageJardin:
    speech:
      text: J'arrose le jardin pendant {{minutes}} minutes
    action:
      service: notify.notify
      data:
        message: J'arrose le jardin pendant {{minutes}} minutes

Merci Clemalex de m’avoir mis sur la bonne piste :slight_smile:

Le truc un peu pénible c’est qu’avant de dire :
« OK Google, arrose le jardin pendant 5 minutes. »

il faut dire :
« OK Google, parler avec Home Assistant. »

Est il possible d’éviter ca ?

Malheureusement, non…

Sinon avec IFTT, tu peux faire tout pareil sans dire parler à Home Assistant (3 commandes gratuites ou 4 dollars illimité)

Bonjour @Turakam pourrais tu me montrer ton intent dans dialogflow car je ne sais pas comment gérer une variable dans la phrase ? merci