WikiElectronique

Wiki sur l'électronique et l'informatique

Outils pour utilisateurs

Outils du site


actions_on_google_et_domotique

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
actions_on_google_et_domotique [2018/03/07 23:11] – [Dialogflow] 88.164.131.165actions_on_google_et_domotique [2018/03/18 09:48] (Version actuelle) – [Etapes] 88.164.131.165
Ligne 21: Ligne 21:
   * Dans "What do you want the Assistant to say in response?", écrivez la phrase qui sera répondu par votre Google Home (ex : Ok je monte les volets)   * Dans "What do you want the Assistant to say in response?", écrivez la phrase qui sera répondu par votre Google Home (ex : Ok je monte les volets)
   * Dans Language sectionner French   * Dans Language sectionner French
 +
 +{{::trigger.png?200|}}
 +
   * Cliquer sur +that pour créer l'action   * Cliquer sur +that pour créer l'action
   * Dans le choix du service sélectionner Webhook   * Dans le choix du service sélectionner Webhook
   * Dans URL, mettez l'URL de la page sur votre serveur qui sera en charge d'actionner votre équipement   * Dans URL, mettez l'URL de la page sur votre serveur qui sera en charge d'actionner votre équipement
   * (ex : http:\\ip_serveur\api\volets?montetous=1)   * (ex : http:\\ip_serveur\api\volets?montetous=1)
 +
 +{{::action.png?200|}}
  
 ==== Coté serveur === ==== Coté serveur ===
Ligne 116: Ligne 121:
 Le certificat n'est valable que 3 mois. Il faudra le renouveler tous les 3 mois. Il existe des systèmes de renouvellement automatique. (Faites recherche sur Google avec Letsencryt ACME). Par ma part j'utilise WIN-ACME qui est surement la solution la plus simple d'utilisation sous Windows https://github.com/PKISharp/win-acme Le certificat n'est valable que 3 mois. Il faudra le renouveler tous les 3 mois. Il existe des systèmes de renouvellement automatique. (Faites recherche sur Google avec Letsencryt ACME). Par ma part j'utilise WIN-ACME qui est surement la solution la plus simple d'utilisation sous Windows https://github.com/PKISharp/win-acme
  
 +Une fois votre URL paramétré, retournez dans votre intent et activer "Enable webhook call for this intent".
 +Dès que cette intent sera déclenché, par "monter les volets ...", une requête sera faite votre page. Un POST content des données JSON vers votre page. 
 +Ce JSON contiendra plein d'information dont deux qui nous intéressent, le nom de l'intent et le paramètre.
 +
 +Il faudra que votre page, réponde à ce post en envoyant un JSON avec deux paramètres "speech" qui correspondra à la phrase que votre Google Home répondra et diplayText qui sera la même phrase. 
 +
 +La class équivalent/serializable en C# est la suivante 
 +
 +<code csharp> 
 +    public class JsonReponse
 +    {
 +        public string speech { get; set; }
 +        public string displayText { get; set; }
 +    }
 +</code>
 +
 +Voici un exemple en ASP MCV pour le traitement du JSON envoyé par Google 
 +
 +<code csharp> 
 +        [HttpPost]
 +        public async Task<JsonReponse> IndexAsync()
 +        {
 +            JsonReponse resp = await DecodeRequest();
 +            return resp;
 +        }
 +        
 +        async Task<JsonReponse> DecodeRequest()
 +        {
 +            string jsonData = await this.Request.Content.ReadAsStringAsync();
 +            string question = (string)jObject["result"]["resolvedQuery"];
 +            string intent = (string)jObject["result"]["metadata"]["intentName"];
 +
 +            JsonReponse resp = new JsonReponse();
 +            resp.speech = "Cette demande n'a pas pû être traitée";
 +            resp.displayText = "Cette demande n'a pas pû être traitée";
 +
 +            switch (intent)
 +            {
 +                case "question_volets":
 +                    resp = DecodeQuestionVolets(jObject);
 +                    break;
 +                default:
 +                    break;
 +            }
 +
 +            return resp;
 +        }
 +        
 +        private JsonReponse DecodeQuestionVolets(Newtonsoft.Json.Linq.JObject jObject)
 +        {
 +            JsonReponse resp = new JsonReponse();
 +            resp.speech = "pièce inconnue";
 +            resp.displayText = "inconnue inconnue";
 +
 +            Dictionary < string, string> parametres = jObject["result"]["parameters"].ToObject<Dictionary<string, string>>();
 +
 +            if (parametres.Count > 0)
 +            {
 +                var parametre = parametres.First();
 +                string piece = parametre.Value;
 +                
 +                if (piece.Contains("chambre"))
 +                {
 +                    //Monte le volet de la chambre
 +                }
 +            }
 +      }
 +</code>
 +
 +Il peut aussi être utile d'enregistrer les données JSON qui sont envoyées par Google. 
 +Pour cela vous pouvez faire une simple fonction de log pendant votre période de debuggage
 +
 +<code csharp>
 +        /// <summary>
 +        /// Enregistrement dans un fichier de log
 +        /// </summary>
 +        /// <param name="JsonData"></param>
 +        void log(string JsonData)
 +        {
 +            string directory = @"C:\inetpub\wwwroot\webservice\log";
  
 +            if (!Directory.Exists(directory))
 +            {
 +                try
 +                {
 +                    Directory.CreateDirectory(directory);
 +                }
 +                catch (Exception ex)
 +                {
 +                }
 +            }
 +            try
 +            {
 +                File.AppendAllText(directory + @"\" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt", DateTime.Now.ToString("HH:mm:ss") + " : " + JsonData + "\r\n\r\n");
 +            }
 +            catch (Exception ex)
 +            {
 +            }
 +</code>            
  
 +L'étape suivante et de publier votre application sur votre Google Home. Pour cela, aller dans le menu "Integrations" cliquer sur Google Assistant puis test. 
 +Vous pourrez tester votre application sur le site mais elle sera aussi deployé sur votre Google Home. 
 +Pour la démarrer il suffira de dire "Ok google parler avec <nom_de_votre_application>"
    
      
actions_on_google_et_domotique.1520460681.txt.gz · Dernière modification : 2018/03/07 23:11 de 88.164.131.165

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki