{"id":2797,"date":"2024-05-27T09:12:03","date_gmt":"2024-05-27T09:12:03","guid":{"rendered":"https:\/\/nutriia.fr\/?page_id=2797"},"modified":"2024-06-28T09:38:09","modified_gmt":"2024-06-28T09:38:09","slug":"mobile-chatbot","status":"publish","type":"page","link":"https:\/\/nutriia.fr\/en_us\/mobile-chatbot\/","title":{"rendered":"ChatBot Mobile"},"content":{"rendered":"\n\n\n\n<script>\n\/\/ Fonction pour ouvrir la fen\u00eatre Crisp et supprimer l'\u00e9v\u00e9nement de fermeture\nfunction openCrispWindow() {\n    \/\/ Ouvrir la fen\u00eatre Crisp\n    window.$crisp.push([\"do\", \"chat:open\"]);\nresetChat();\n}\n\nfunction resetChat() {\n        var classesToRemove = ['.cc-1m2mf', '.cc-1si9v'];\n        classesToRemove.forEach(function(className) {\n            var elements = document.querySelectorAll(className);\n            elements.forEach(function(element) {\n                element.parentNode.removeChild(element);\n            });\n        });\n    }\n\n\/\/ Cr\u00e9er un observer pour surveiller les modifications du body\nvar observer = new MutationObserver(function(mutations) {\n    resetChat();\n\/\/addChatBotList();\n});\n\/\/ Configuration de l'observer\nconst config = { childList: true, subtree: true };\n\n\/\/ Commencer \u00e0 observer le body\nobserver.observe(document.body, config);\n\/*\nlet buttonIdM;\n\n\/\/ Fonction pour g\u00e9rer le clic sur le bouton\nconst listenerButtonSend = function() {\n    if (buttonIdM.textContent.includes('Envoyer')) {\n        if (true) {\n            messagesLeftCookie -= 1;\n            setCookie('messages-left-nutri', messagesLeftCookie, 24);\n            if (messagesLeftCookie <= 0) {\n                \/\/ Mise \u00e0 jour du texte et d\u00e9sactivation du bouton\n                messagesLeft.textContent = 'Nombre de messages atteint, veuillez attendre 24h';\n                disableButton(buttonIdM);\n            } else {\n                \/\/ Mise \u00e0 jour du texte des messages restants\n                messagesLeft.textContent = `${messagesLeftCookie} messages restants`;\n            }\n        }\n    }\n};\n\nlet oneTime = true;\n\n\/\/ Fonction pour ajouter la liste du chat bot\nfunction addChatBotList() {\n    const mwaiInputDiv = document.querySelector('.mwai-input');\n\n    \/\/ V\u00e9rifier si la div existe\n    if (mwaiInputDiv) {\n        \/\/ S\u00e9lectionner le bouton \u00e0 l'int\u00e9rieur de cette div\n        buttonIdM = mwaiInputDiv.querySelector('button');\n\n        \/\/ V\u00e9rifier si le bouton existe\n        if (buttonIdM) {\n\nlet messagesLeftyCookie = getCookie('messages-left-nutri');\nif (messagesLeftyCookie !== undefined) {\nmessagesLeftyCookie = parseInt(messagesLeftCookie, 10);\nconsole.log(\"Lefty\" + messagesLeftyCookie);\n}\nif (oneTime){\noneTime = false;\nif (isNaN(messagesLeftyCookie)){\ndisableButton(buttonIdM);\n}}\n            buttonIdM.removeEventListener('click', listenerButtonSend);\n            buttonIdM.addEventListener('click', listenerButtonSend);\n        }\n    }\n}\n\n\/\/ Fonction pour r\u00e9cup\u00e9rer un cookie\nfunction getCookie(name) {\n    const value = `; ${document.cookie}`;\n    const parts = value.split(`; ${name}=`);\n    if (parts.length === 2) return parts.pop().split(';').shift();\n}\n\n\/\/ Fonction pour d\u00e9finir un cookie\nfunction setCookie(name, value, hours) {\n    let expires = \"\";\n    if (hours) {\n        const date = new Date();\n        date.setTime(date.getTime() + (hours * 60 * 60 * 1000));\n        expires = \"; expires=\" + date.toUTCString();\n    }\n    document.cookie = name + \"=\" + (value || \"\") + expires + \"; path=\/\";\n}\n\n\/\/ Fonction pour d\u00e9sactiver le bouton\nfunction disableButton(button) {\n    button.disabled = true;\n    button.classList.add('disabled');\n    const newButton = button.cloneNode(true);\n    button.parentNode.replaceChild(newButton, button);\n}\n\n\/\/ R\u00e9cup\u00e9rer ou d\u00e9finir le cookie qui enregistre le nombre de messages restants\nlet messagesLeftCookie = getCookie('messages-left-nutri');\nlet cookieExpirationDate = getCookieExpirationDate('messages-left-nutri');\n\n\/\/ V\u00e9rifier et initialiser le cookie si n\u00e9cessaire\nif (messagesLeftCookie === undefined) {\n    setCookie('messages-left-nutri', 5, 24);\n    messagesLeftCookie = 5;\n    cookieExpirationDate = new Date();\n    cookieExpirationDate.setHours(cookieExpirationDate.getHours() + 24);\n} else {\n    messagesLeftCookie = parseInt(messagesLeftCookie, 10);\n}\n\n\/\/ S\u00e9lectionner la balise p avec l'id 'messages-left'\nconst messagesLeft = document.getElementById('messages-left');\n\n\/\/ Afficher le nombre de messages restants ou le temps restant avant la prochaine utilisation\nif (messagesLeft) {\n    if (!isNaN(messagesLeftCookie)) {\n        if (messagesLeftCookie <= 0) {\n            const remainingTime = getRemainingTime(cookieExpirationDate);\n            messagesLeft.textContent = 'Nombre de messages atteint, veuillez attendre 24h';\n            disableButton(buttonIdM);\n        } else {\n            messagesLeft.textContent = `${messagesLeftCookie} messages restants`;\n        }\n    } else {\n        const remainingTime = getRemainingTime(cookieExpirationDate);\n        messagesLeft.textContent = 'Nombre de messages atteint, veuillez attendre 24h';\n    }\n} else {\n    console.error('Aucune balise p avec l\\'id messages-left trouv\u00e9e');\n}\n\n\/\/ Fonction pour calculer le temps restant\nfunction getRemainingTime(endTime) {\n    const now = new Date();\n    const timeDifference = endTime - now;\n    const hours = Math.floor(timeDifference \/ (1000 * 60 * 60));\n    const minutes = Math.floor((timeDifference % (1000 * 60 * 60)) \/ (1000 * 60));\n    return `${hours}h ${minutes}m`;\n}\n\n\/\/ Fonction pour r\u00e9cup\u00e9rer la date d'expiration d'un cookie\nfunction getCookieExpirationDate(cookieName) {\n    const cookies = document.cookie.split(';').map(cookie => cookie.trim());\n\n    for (let cookie of cookies) {\n        if (cookie.startsWith(cookieName + '=')) {\n            const cookieParts = cookie.split('=');\n            const cookieValue = cookieParts.slice(1).join('=');\n            const decodedCookie = decodeURIComponent(cookieValue);\n\n            \/\/ Extraire la date d'expiration du cookie\n            const expirationStr = decodedCookie.split(';')\n                .map(part => part.trim())\n                .find(part => part.startsWith('expires='));\n\n            if (expirationStr) {\n                const expirationDateStr = expirationStr.substring('expires='.length).trim();\n                const expirationDate = new Date(expirationDateStr);\n\n                if (isNaN(expirationDate.getTime())) {\n                    console.warn('La date d\\'expiration du cookie n\\'est pas valide :', expirationDateStr);\n                    return null;\n                }\n\n                return expirationDate;\n            } else {\n                console.warn('Aucune date d\\'expiration trouv\u00e9e dans le cookie.');\n                return null;\n            }\n        }\n    }\n\n    console.warn('Le cookie sp\u00e9cifi\u00e9 n\\'a pas \u00e9t\u00e9 trouv\u00e9.');\n    return null;\n}\n\n\/\/ Appel de la fonction pour ajouter la liste du chat bot au chargement de la page\naddChatBotList();\n*\/\n\n\/\/ Fonction pour supprimer la classe entry-content-wrap\nfunction supprimerClasseEntryContentWrap() {\n    \/\/ R\u00e9cup\u00e9rer l'\u00e9l\u00e9ment <div> avec la classe entry-content-wrap\n    const entryContentWrapDiv = document.querySelector('.entry-content-wrap');\n\n    \/\/ V\u00e9rifier si l'\u00e9l\u00e9ment existe\n    if (entryContentWrapDiv) {\n        \/\/ Supprimer la classe entry-content-wrap\n        entryContentWrapDiv.classList.remove('entry-content-wrap');\n    }\n}\n\n\/\/ Fonction pour supprimer l'attribut style de l'\u00e9l\u00e9ment avec la classe wpaicg-chat-shortcode\nfunction supprimerStyleChat() {\n    \/\/ R\u00e9cup\u00e9rer l'\u00e9l\u00e9ment <div> contenant le chat\n    const chatDiv = document.querySelector('.wpaicg-chat-shortcode');\n\n    \/\/ V\u00e9rifier si l'\u00e9l\u00e9ment existe\n    if (chatDiv) {\n        \/\/ Supprimer l'attribut style\n        chatDiv.removeAttribute('style');\n    }\n}\n\n\/\/ Appeler les fonctions au chargement de la page et au redimensionnement de la fen\u00eatre\nwindow.addEventListener('load', () => {\n    supprimerClasseEntryContentWrap();\n    supprimerStyleChat();\n});\nwindow.addEventListener('resize', supprimerStyleChat);\n\n\/\/ Fonction pour supprimer l'attribut style d'un \u00e9l\u00e9ment\n        function supprimerStyle(element) {\n            if (element) {\n                element.removeAttribute('style');\n            }\n        }\n\n        \/\/ Fonction pour cr\u00e9er un MutationObserver pour un \u00e9l\u00e9ment donn\u00e9\n        function observerStyle(element) {\n            if (element) {\n                const observerct = new MutationObserver(mutations => {\n                    mutations.forEach(mutation => {\n                        if (mutation.type === 'attributes' && mutation.attributeName === 'style') {\n                            supprimerStyle(mutation.target);\n                        }\n                    });\n                });\n\n                observerct.observe(element, {\n                    attributes: true \/\/ Surveiller les changements d'attributs\n                });\n            }\n        }\n\n        \/\/ S\u00e9lectionner les \u00e9l\u00e9ments \u00e0 observer\n        const chatDiv = document.querySelector('.wpaicg-chat-shortcode');\n        const chatMessages = document.querySelector('.wpaicg-chat-shortcode-messages');\n\n        \/\/ Cr\u00e9er des observateurs pour les \u00e9l\u00e9ments\n        observerStyle(chatDiv);\n        observerStyle(chatMessages);\n\n        \/\/ Supprimer les attributs style au chargement de la page\n        window.addEventListener('load', () => {\n            supprimerStyle(chatDiv);\n            supprimerStyle(chatMessages);\n        });\n\n<\/script>\n\n\n\n<button onclick=\"openCrispWindow()\" style=\"width: 100%; height: 100%; background-color: #4CAF50; color: white; padding: 15px 32px; text-align: center; text-decoration: none; display: inline-block; font-size: 16px; margin: 4px 2px; cursor: pointer; border: none; border-radius: 4px;\">\n    Chat conseiller\n<\/button>\n\n\n\n<p class=\"has-text-align-center has-theme-palette-6-color has-text-color has-link-color has-small-font-size wp-elements-3e2c0b110199f3311bd6b249571dd5ea\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Chat conseiller<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"hide","_kad_post_layout":"fullwidth","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":true,"_kad_post_footer":true,"footnotes":""},"class_list":["post-2797","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.8.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>ChatBot Mobile - NUTRIIA<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/nutriia.fr\/en_us\/mobile-chatbot\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ChatBot Mobile - NUTRIIA\" \/>\n<meta property=\"og:description\" content=\"Chat conseiller\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nutriia.fr\/en_us\/mobile-chatbot\/\" \/>\n<meta property=\"og:site_name\" content=\"NUTRIIA\" \/>\n<meta property=\"article:modified_time\" content=\"2024-06-28T09:38:09+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/nutriia.fr\/en_us\/mobile-chatbot\/\",\"url\":\"https:\/\/nutriia.fr\/en_us\/mobile-chatbot\/\",\"name\":\"ChatBot Mobile - NUTRIIA\",\"isPartOf\":{\"@id\":\"https:\/\/nutriia.fr\/en_us\/#website\"},\"datePublished\":\"2024-05-27T09:12:03+00:00\",\"dateModified\":\"2024-06-28T09:38:09+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/nutriia.fr\/en_us\/mobile-chatbot\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/nutriia.fr\/en_us\/mobile-chatbot\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/nutriia.fr\/en_us\/mobile-chatbot\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/nutriia.fr\/en_us\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ChatBot Mobile\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/nutriia.fr\/en_us\/#website\",\"url\":\"https:\/\/nutriia.fr\/en_us\/\",\"name\":\"NUTRIIA\",\"description\":\"The First AI-Powered Dietetics Mobile Application\",\"publisher\":{\"@id\":\"https:\/\/nutriia.fr\/en_us\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/nutriia.fr\/en_us\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/nutriia.fr\/en_us\/#organization\",\"name\":\"NUTRIIA\",\"url\":\"https:\/\/nutriia.fr\/en_us\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/nutriia.fr\/en_us\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/nutriia.fr\/wp-content\/uploads\/2023\/11\/Original-on-Transparent.png\",\"contentUrl\":\"https:\/\/nutriia.fr\/wp-content\/uploads\/2023\/11\/Original-on-Transparent.png\",\"width\":3000,\"height\":2640,\"caption\":\"NUTRIIA\"},\"image\":{\"@id\":\"https:\/\/nutriia.fr\/en_us\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ChatBot Mobile - NUTRIIA","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/nutriia.fr\/en_us\/mobile-chatbot\/","og_locale":"en_US","og_type":"article","og_title":"ChatBot Mobile - NUTRIIA","og_description":"Chat conseiller","og_url":"https:\/\/nutriia.fr\/en_us\/mobile-chatbot\/","og_site_name":"NUTRIIA","article_modified_time":"2024-06-28T09:38:09+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/nutriia.fr\/en_us\/mobile-chatbot\/","url":"https:\/\/nutriia.fr\/en_us\/mobile-chatbot\/","name":"ChatBot Mobile - NUTRIIA","isPartOf":{"@id":"https:\/\/nutriia.fr\/en_us\/#website"},"datePublished":"2024-05-27T09:12:03+00:00","dateModified":"2024-06-28T09:38:09+00:00","breadcrumb":{"@id":"https:\/\/nutriia.fr\/en_us\/mobile-chatbot\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nutriia.fr\/en_us\/mobile-chatbot\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/nutriia.fr\/en_us\/mobile-chatbot\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/nutriia.fr\/en_us\/"},{"@type":"ListItem","position":2,"name":"ChatBot Mobile"}]},{"@type":"WebSite","@id":"https:\/\/nutriia.fr\/en_us\/#website","url":"https:\/\/nutriia.fr\/en_us\/","name":"NUTRIIA","description":"The First AI-Powered Dietetics Mobile Application","publisher":{"@id":"https:\/\/nutriia.fr\/en_us\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/nutriia.fr\/en_us\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/nutriia.fr\/en_us\/#organization","name":"NUTRIIA","url":"https:\/\/nutriia.fr\/en_us\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/nutriia.fr\/en_us\/#\/schema\/logo\/image\/","url":"https:\/\/nutriia.fr\/wp-content\/uploads\/2023\/11\/Original-on-Transparent.png","contentUrl":"https:\/\/nutriia.fr\/wp-content\/uploads\/2023\/11\/Original-on-Transparent.png","width":3000,"height":2640,"caption":"NUTRIIA"},"image":{"@id":"https:\/\/nutriia.fr\/en_us\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/nutriia.fr\/en_us\/wp-json\/wp\/v2\/pages\/2797","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nutriia.fr\/en_us\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/nutriia.fr\/en_us\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/nutriia.fr\/en_us\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nutriia.fr\/en_us\/wp-json\/wp\/v2\/comments?post=2797"}],"version-history":[{"count":120,"href":"https:\/\/nutriia.fr\/en_us\/wp-json\/wp\/v2\/pages\/2797\/revisions"}],"predecessor-version":[{"id":3017,"href":"https:\/\/nutriia.fr\/en_us\/wp-json\/wp\/v2\/pages\/2797\/revisions\/3017"}],"wp:attachment":[{"href":"https:\/\/nutriia.fr\/en_us\/wp-json\/wp\/v2\/media?parent=2797"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}