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édentes Révision précédente
Prochaine révision
Révision précédente
actions_on_google_et_domotique [2018/03/07 23:11]
88.164.131.165 [Dialogflow]
actions_on_google_et_domotique [2018/03/18 09:48] (Version actuelle)
88.164.131.165 [Etapes]
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 par 88.164.131.165