{"id":71018,"date":"2025-03-23T15:31:42","date_gmt":"2025-03-23T19:31:42","guid":{"rendered":"https:\/\/memberpress.com\/?page_id=71018"},"modified":"2025-03-23T16:54:45","modified_gmt":"2025-03-23T20:54:45","slug":"ai-knowledge-testing","status":"publish","type":"page","link":"https:\/\/memberpress.com\/fr\/ai-knowledge-testing\/","title":{"rendered":"Test de connaissance de l'IA"},"content":{"rendered":"\n  <style>\n    * {\n      box-sizing: border-box;\n      margin: 0;\n      padding: 0;\n    }\n\n    :root {\n      --primary-color: #031B4E;\n      --secondary-color: #E5E8ED;\n      --button-bg-color: #0061EB;\n    }\n\n    body {\n      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\n      line-height: 1.6;\n      color: #333;\n      background-color: #f5f5f5;\n    }\n\n    .chat-container {\n      max-width: 1200px;\n      margin: 2rem auto;\n      background-color: white;\n      border-radius: 8px;\n      box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);\n      display: flex;\n      flex-direction: column;\n      height: 600px; \/* Fixed height instead of viewport-based *\/ \n      overflow: hidden;\n    }\n\n    .chat-header {\n      padding: 1rem;\n      border-bottom: 1px solid var(--secondary-color);\n      display: flex;\n      align-items: center;\n      background-color: var(--primary-color);\n      color: white;\n      position: relative;\n    }\n\n    .chat-logo {\n      height: 32px;\n      margin-right: 10px;\n      \/* Remove the filter since we're using the colored logo *\/\n    }\n    \n    .connection-status {\n      position: absolute;\n      right: 1rem;\n      display: flex;\n      align-items: center;\n      font-size: 0.8rem;\n    }\n    \n    .status-indicator {\n      width: 10px;\n      height: 10px;\n      border-radius: 50%;\n      margin-right: 5px;\n    }\n    \n    .status-connected {\n      background-color: #4CAF50;\n    }\n    \n    .status-disconnected {\n      background-color: #F44336;\n    }\n    \n    .status-checking {\n      background-color: #FFC107;\n      animation: pulse 1.5s infinite;\n    }\n    \n    @keyframes pulse {\n      0% {\n        opacity: 0.6;\n      }\n      50% {\n        opacity: 1;\n      }\n      100% {\n        opacity: 0.6;\n      }\n    }\n\n    .chat-messages {\n      flex: 1;\n      overflow-y: auto;\n      padding: 1rem;\n      display: flex;\n      flex-direction: column;\n      gap: 1rem;\n    }\n\n    .message {\n      max-width: 80%;\n      padding: 12px 16px;\n      border-radius: 18px;\n      position: relative;\n      word-wrap: break-word;\n    }\n\n    .user-message {\n      align-self: flex-end;\n      background-color: var(--button-bg-color);\n      color: white;\n      border-bottom-right-radius: 4px;\n    }\n\n    .bot-message {\n      align-self: flex-start;\n      background-color: var(--secondary-color);\n      color: #333;\n      border-bottom-left-radius: 4px;\n    }\n\n    .chat-input {\n      display: flex;\n      padding: 1rem;\n      border-top: 1px solid var(--secondary-color);\n    }\n\n    #user-input {\n      flex: 1;\n      padding: 10px 14px;\n      border: 1px solid #ccc;\n      border-radius: 20px;\n      resize: none;\n      font-family: inherit;\n      font-size: 14px;\n      margin-right: 10px;\n      overflow: hidden;\n    }\n\n    #user-input:focus {\n      outline: none;\n      border-color: var(--button-bg-color);\n    }\n\n    #send-button {\n      background-color: var(--button-bg-color);\n      color: white;\n      border: none;\n      border-radius: 20px;\n      padding: 10px 20px;\n      cursor: pointer;\n      font-weight: 500;\n      transition: background-color 0.2s;\n    }\n\n    #send-button:hover {\n      background-color: #0052cc;\n    }\n\n    #send-button:disabled {\n      background-color: #ccc;\n      cursor: not-allowed;\n    }\n\n    .typing-indicator {\n      display: flex;\n      align-items: center;\n      gap: 4px;\n      padding: 10px 16px;\n      background-color: var(--secondary-color);\n      border-radius: 18px;\n      width: fit-content;\n      align-self: flex-start;\n      margin-top: 6px;\n    }\n\n    .typing-dot {\n      width: 8px;\n      height: 8px;\n      background-color: #666;\n      border-radius: 50%;\n      animation: typing-dot 1.4s infinite ease-in-out;\n    }\n\n    .typing-dot:nth-child(1) {\n      animation-delay: 0s;\n    }\n\n    .typing-dot:nth-child(2) {\n      animation-delay: 0.2s;\n    }\n\n    .typing-dot:nth-child(3) {\n      animation-delay: 0.4s;\n    }\n\n    @keyframes typing-dot {\n      0%, 60%, 100% {\n        transform: translateY(0);\n        opacity: 0.6;\n      }\n      30% {\n        transform: translateY(-4px);\n        opacity: 1;\n      }\n    }\n\n    \/* Link styles *\/\n    .message a {\n      color: inherit;\n      text-decoration: underline;\n      word-break: break-all;\n    }\n\n    .user-message a {\n      color: white;\n      text-decoration-color: rgba(255, 255, 255, 0.7);\n    }\n\n    .bot-message a {\n      color: #0055cc;\n    }\n    \n    \/* Debug message for connection issues *\/\n    .debug-message {\n      font-size: 0.8rem;\n      color: #666;\n      margin-top: 0.5rem;\n      font-style: italic;\n    }\n\n    \/* For mobile devices *\/\n    @media (max-width: 768px) {\n      .chat-container {\n        margin: 0;\n        height: 100vh;\n        border-radius: 0;\n      }\n      \n      .message {\n        max-width: 90%;\n      }\n      \n      .connection-status {\n        font-size: 0.7rem;\n      }\n    }\n  <\/style>\n<div class=\"chat-container\">\n    <div class=\"chat-header\">\n<p>MemberPress AI Assistant<\/p>\n      <div class=\"connection-status\">\n        <div class=\"status-indicator status-checking\" id=\"status-indicator\"><\/div>\n        <span id=\"status-text\">Checking connection\u2026<\/span>\n      <\/div>\n    <\/div>\n    <div class=\"chat-messages\" id=\"chat-messages\">\n      <!-- Messages will be inserted here -->\n    <\/div>\n    <div class=\"chat-input\">\n      <textarea id=\"user-input\" placeholder=\"Type your question here...\" rows=\"1\"><\/textarea>\n      <button id=\"send-button\">Send<\/button>\n    <\/div>\n  <\/div>\n\n  <script>\n    \/\/ Configuration options (from the provided script)\n    const config = {\n      agentId: '6ea7a8e7-073f-11f0-bf8f-4e013e2ddde4',\n      chatbotId: 'I6X02rsE5MdbS-NZKfKiMhTHTSzzvjDB',\n      apiKey: 'leiwJF-DXWqVky-c_wjqFeGRBL1jYNiC',\n      name: 'MemberPress Assistant',\n      primaryColor: '#031B4E',\n      secondaryColor: '#E5E8ED',\n      buttonBgColor: '#0061EB',\n      startingMessage: 'Hello! How can I help you today?'\n    };\n\n    \/\/ Status indicator elements\n    let connectionStatus = {\n      indicator: null,\n      text: null,\n      isConnected: false,\n      \n      \/\/ Set the connection status\n      set: function(status, message) {\n        if (!this.indicator || !this.text) return;\n        \n        this.indicator.className = 'status-indicator';\n        \n        if (status === 'connected') {\n          this.indicator.classList.add('status-connected');\n          this.isConnected = true;\n        } else if (status === 'disconnected') {\n          this.indicator.classList.add('status-disconnected');\n          this.isConnected = false;\n        } else if (status === 'checking') {\n          this.indicator.classList.add('status-checking');\n        }\n        \n        this.text.textContent = message || '';\n      },\n      \n      \/\/ Check if connected to API\n      check: async function() {\n        this.set('checking', 'Checking connection...');\n        \n        try {\n          const baseUrl = 'https:\/\/agent-uwv3ffnvjqygzp2v3rwyjiww-exelr.ondigitalocean.app';\n          \n          \/\/ Try a simple HEAD request to the base URL with authorization\n          const response = await fetch(baseUrl, {\n            method: 'HEAD',\n            cache: 'no-cache',\n            mode: 'cors',\n            headers: {\n              'Authorization': `Bearer ${config.apiKey}`\n            }\n          });\n          \n          \/\/ Log the response to help with debugging\n          console.log('Connection check response:', response.status, response.statusText);\n          \n          \/\/ Any response means we can reach the server\n          this.set('connected', 'Connected');\n          return true;\n        } catch (error) {\n          console.error('Connection error:', error);\n          this.set('disconnected', 'Disconnected');\n          return false;\n        }\n      }\n    };\n    \n    \/\/ Apply configuration colors\n    document.addEventListener('DOMContentLoaded', () => {\n      \/\/ Apply theme colors from config\n      document.documentElement.style.setProperty('--primary-color', config.primaryColor);\n      document.documentElement.style.setProperty('--secondary-color', config.secondaryColor);\n      document.documentElement.style.setProperty('--button-bg-color', config.buttonBgColor);\n      \n      \/\/ Initialize connection status\n      connectionStatus.indicator = document.getElementById('status-indicator');\n      connectionStatus.text = document.getElementById('status-text');\n      \n      \/\/ Check connection\n      connectionStatus.check().then(isConnected => {\n        \/\/ Only show welcome message if connected\n        if (isConnected && config.startingMessage) {\n          addMessage(config.startingMessage, 'bot');\n        } else if (!isConnected) {\n          addMessage(\"I'm unable to connect to the server right now. Please check your internet connection and try again later.\", 'bot');\n        }\n      });\n    });\n\n    \/\/ DOM elements\n    const messagesContainer = document.getElementById('chat-messages');\n    const userInput = document.getElementById('user-input');\n    const sendButton = document.getElementById('send-button');\n\n    \/\/ Message history\n    let messageHistory = [];\n\n    \/\/ Event listeners\n    userInput.addEventListener('keydown', (e) => {\n      if (e.key === 'Enter' && !e.shiftKey) {\n        e.preventDefault();\n        sendMessage();\n      }\n      \n      \/\/ Auto-resize textarea\n      setTimeout(() => {\n        userInput.style.height = 'auto';\n        userInput.style.height = userInput.scrollHeight + 'px';\n      }, 0);\n    });\n\n    sendButton.addEventListener('click', sendMessage);\n\n    \/\/ Function to add a message to the chat\n    function addMessage(text, sender) {\n      const messageDiv = document.createElement('div');\n      messageDiv.classList.add('message');\n      messageDiv.classList.add(sender === 'user' ? 'user-message' : 'bot-message');\n      \n      \/\/ Process text for links\n      const processedText = text.replace(\n        \/(https?:\\\/\\\/[^\\s]+)\/g, \n        '<a href=\"$1\" target=\"_blank\" rel=\"noopener noreferrer\">$1<\/a>'\n      );\n      \n      \/\/ Use innerHTML to support the links we added\n      messageDiv.innerHTML = processedText;\n      \n      messagesContainer.appendChild(messageDiv);\n      messagesContainer.scrollTop = messagesContainer.scrollHeight;\n      \n      \/\/ Add to history\n      messageHistory.push({\n        role: sender === 'user' ? 'user' : 'assistant',\n        content: text\n      });\n    }\n\n    \/\/ Function to show typing indicator\n    function showTypingIndicator() {\n      const indicator = document.createElement('div');\n      indicator.classList.add('typing-indicator');\n      indicator.id = 'typing-indicator';\n      \n      for (let i = 0; i < 3; i++) {\n        const dot = document.createElement('div');\n        dot.classList.add('typing-dot');\n        indicator.appendChild(dot);\n      }\n      \n      messagesContainer.appendChild(indicator);\n      messagesContainer.scrollTop = messagesContainer.scrollHeight;\n    }\n\n    \/\/ Function to hide typing indicator\n    function hideTypingIndicator() {\n      const indicator = document.getElementById('typing-indicator');\n      if (indicator) {\n        indicator.remove();\n      }\n    }\n\n    \/\/ Function to send message\n    async function sendMessage() {\n      const message = userInput.value.trim();\n      if (!message) return;\n      \n      \/\/ Disable input during processing\n      userInput.value = '';\n      userInput.style.height = 'auto';\n      userInput.disabled = true;\n      sendButton.disabled = true;\n      \n      \/\/ Add user message to chat\n      addMessage(message, 'user');\n      \n      \/\/ Show typing indicator immediately\n      showTypingIndicator();\n      \n      \/\/ Check connection first\n      const isConnected = await connectionStatus.check();\n      if (!isConnected) {\n        hideTypingIndicator();\n        let errorMessage = \"I'm unable to connect to the server right now. Please check your internet connection and try again.\";\n        errorMessage += `<div class=\"debug-message\">Connection details: ${config.agentId} \/ ${config.chatbotId}<\/div>`;\n        addMessage(errorMessage, 'bot');\n        userInput.disabled = false;\n        sendButton.disabled = false;\n        userInput.focus();\n        return;\n      }\n      \n      \/\/ Set default parameters according to the widget.js script\n      \/\/ Add the DO_CHAT_WIDGET_CONFIG which the API script might look for\n      if (!window.DO_CHAT_WIDGET_CONFIG) {\n        window.DO_CHAT_WIDGET_CONFIG = {\n          agentId: config.agentId,\n          chatbotId: config.chatbotId,\n          primaryColor: config.primaryColor,\n          secondaryColor: config.secondaryColor,\n          buttonBackgroundColor: config.buttonBgColor,\n          startingMessage: config.startingMessage,\n          name: config.name\n        };\n      }\n      \n      try {\n        \/\/ Use the OpenAI-style API format as shown in the docs\n        const requestBody = {\n          messages: messageHistory,\n          model: \"gpt-3.5-turbo\", \/\/ Default model\n          stream: false,\n          agent_id: config.agentId,\n          chatbot_id: config.chatbotId\n        };\n        \n        \/\/ Endpoint URL - using the \/api\/v1\/chat\/completions format\n        const baseUrl = 'https:\/\/agent-uwv3ffnvjqygzp2v3rwyjiww-exelr.ondigitalocean.app';\n        const url = `${baseUrl}\/api\/v1\/chat\/completions`;\n        \n        console.log('Sending request to:', url);\n        console.log('Request body:', JSON.stringify(requestBody, null, 2));\n        \n        \/\/ Send the chat request with authorization\n        const response = await fetch(url, {\n          method: 'POST',\n          headers: {\n            'Content-Type': 'application\/json',\n            'Accept': 'application\/json',\n            'Authorization': `Bearer ${config.apiKey}`\n          },\n          body: JSON.stringify(requestBody)\n        });\n        \n        if (!response.ok) {\n          connectionStatus.set('disconnected', 'Error: ' + response.status);\n          throw new Error(`API responded with status ${response.status}`);\n        }\n        \n        \/\/ Set connection status to connected\n        connectionStatus.set('connected', 'Connected');\n        \n        const data = await response.json();\n        \n        \/\/ Hide typing indicator\n        hideTypingIndicator();\n        \n        console.log('API response:', data);\n        \n        \/\/ Handle the OpenAI-style API response format\n        if (data && data.choices && data.choices.length > 0) {\n          \/\/ Get the message content from the OpenAI format response\n          const message = data.choices[0].message;\n          if (message && message.content) {\n            addMessage(message.content, 'bot');\n          } else {\n            addMessage(\"I received a response but couldn't find the message content.\", 'bot');\n          }\n        } else if (data && data.message) {\n          addMessage(data.message, 'bot');\n        } else if (data && data.response) {\n          addMessage(data.response, 'bot');\n        } else if (data && data.assistant) {\n          addMessage(data.assistant, 'bot');\n        } else if (data && data.content) {\n          addMessage(data.content, 'bot');\n        } else {\n          addMessage(\"I'm sorry, but I'm having trouble generating a response right now. Please try again later.\", 'bot');\n          console.error('Unexpected response format:', data);\n        }\n      } catch (error) {\n        console.error('Error sending message:', error);\n        \n        \/\/ Update connection status\n        connectionStatus.set('disconnected', 'Connection error');\n        \n        \/\/ Hide typing indicator\n        hideTypingIndicator();\n        \n        \/\/ Show error message with debug info\n        let errorMessage = \"I'm sorry, but I'm having trouble communicating with the server. Please check the connection status in the top right corner.\";\n        \n        \/\/ Add debug link\n        errorMessage += `<div class=\"debug-message\">Debug info: Trying to connect to ${config.agentId}<\/div>`;\n        \n        addMessage(errorMessage, 'bot');\n      } finally {\n        \/\/ Re-enable input\n        userInput.disabled = false;\n        sendButton.disabled = false;\n        userInput.focus();\n      }\n    }\n\n    \/\/ Adjust the logo path if needed\n    document.addEventListener('DOMContentLoaded', () => {\n      const logoImg = document.getElementById('chat-logo');\n      \n      \/\/ Check if the logo loads correctly\n      logoImg.onerror = function() {\n        \/\/ Fallback to MemberPress text if the logo doesn't load\n        console.warn('Logo failed to load, using text fallback');\n        const headerElement = this.parentElement;\n        this.remove();\n        \n        \/\/ Create text logo\n        const textLogo = document.createElement('span');\n        textLogo.textContent = 'MemberPress';\n        textLogo.style.fontWeight = 'bold';\n        textLogo.style.fontSize = '1.2rem';\n        textLogo.style.marginRight = '10px';\n        \n        \/\/ Insert at beginning of header\n        headerElement.insertBefore(textLogo, headerElement.firstChild);\n      };\n    });\n  <\/script>\n","protected":false},"excerpt":{"rendered":"<p>MemberPress AI Assistant Checking connection... Send<\/p>","protected":false},"author":85651,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"om_disable_all_campaigns":false,"_strive_editorial_status":"not-started","_strive_copy_of":0,"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","_FSMCFIC_featured_image_caption":"","_FSMCFIC_featured_image_nocaption":"","_FSMCFIC_featured_image_hide":"","footnotes":""},"class_list":{"0":"post-71018","1":"page","2":"type-page","3":"status-publish","5":"entry"},"acf":[],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO Pro 4.9.6.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"MemberPress AI Assistant Checking connection... Send\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/memberpress.com\/fr\/ai-knowledge-testing\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO Pro (AIOSEO) 4.9.6.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"MemberPress\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"AI Knowledge Testing\" \/>\n\t\t<meta property=\"og:description\" content=\"MemberPress AI Assistant Checking connection... Send\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/memberpress.com\/fr\/ai-knowledge-testing\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/memberpress.com\/wp-content\/uploads\/2022\/10\/mp-icon-RGB_Icon-01.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/memberpress.com\/wp-content\/uploads\/2022\/10\/mp-icon-RGB_Icon-01.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1650\" \/>\n\t\t<meta property=\"og:image:height\" content=\"1275\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2025-03-23T19:31:42+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2025-03-23T20:54:45+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/memberpress\/\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@memberpress\" \/>\n\t\t<meta name=\"twitter:title\" content=\"AI Knowledge Testing\" \/>\n\t\t<meta name=\"twitter:description\" content=\"MemberPress AI Assistant Checking connection... Send\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/memberpress.com\/wp-content\/uploads\/2022\/10\/mp-icon-RGB_Icon-01.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/ai-knowledge-testing\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/memberpress.com\\\/fr\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/ai-knowledge-testing\\\/#listItem\",\"name\":\"AI Knowledge Testing\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/ai-knowledge-testing\\\/#listItem\",\"position\":2,\"name\":\"AI Knowledge Testing\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr#listItem\",\"name\":\"Home\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/#organization\",\"name\":\"MemberPress\",\"description\":\"The All-In-One WordPress Membership Plugin\",\"url\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/memberpress.com\\\/wp-content\\\/uploads\\\/2022\\\/10\\\/mp-icon-RGB_Icon-01.jpg\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/ai-knowledge-testing\\\/#organizationLogo\",\"width\":1650,\"height\":1275,\"caption\":\"memberpress logo icon\"},\"image\":{\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/ai-knowledge-testing\\\/#organizationLogo\"},\"sameAs\":[\"https:\\\/\\\/www.instagram.com\\\/memberpress\\\/\",\"https:\\\/\\\/www.pinterest.com\\\/memberpressplugin\\\/\",\"https:\\\/\\\/www.youtube.com\\\/c\\\/MemberPressPlugin\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/memberpress\\\/\"]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/ai-knowledge-testing\\\/#webpage\",\"url\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/ai-knowledge-testing\\\/\",\"name\":\"AI Knowledge Testing\",\"description\":\"MemberPress AI Assistant Checking connection... Send\",\"inLanguage\":\"fr-FR\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/ai-knowledge-testing\\\/#breadcrumblist\"},\"datePublished\":\"2025-03-23T15:31:42-04:00\",\"dateModified\":\"2025-03-23T16:54:45-04:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/\",\"name\":\"MemberPress\",\"description\":\"The All-In-One WordPress Membership Plugin\",\"inLanguage\":\"fr-FR\",\"publisher\":{\"@id\":\"https:\\\/\\\/memberpress.com\\\/fr\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO Pro -->\r\n\t\t<title>AI Knowledge Testing<\/title>\n\n","aioseo_head_json":{"title":"Test de connaissance de l'IA","description":"MemberPress AI Assistant Checking connection... Envoyer","canonical_url":"https:\/\/memberpress.com\/fr\/ai-knowledge-testing\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/memberpress.com\/fr\/ai-knowledge-testing\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/memberpress.com\/fr#listItem","position":1,"name":"Home","item":"https:\/\/memberpress.com\/fr","nextItem":{"@type":"ListItem","@id":"https:\/\/memberpress.com\/fr\/ai-knowledge-testing\/#listItem","name":"AI Knowledge Testing"}},{"@type":"ListItem","@id":"https:\/\/memberpress.com\/fr\/ai-knowledge-testing\/#listItem","position":2,"name":"AI Knowledge Testing","previousItem":{"@type":"ListItem","@id":"https:\/\/memberpress.com\/fr#listItem","name":"Home"}}]},{"@type":"Organization","@id":"https:\/\/memberpress.com\/fr\/#organization","name":"MemberPress","description":"The All-In-One WordPress Membership Plugin","url":"https:\/\/memberpress.com\/fr\/","logo":{"@type":"ImageObject","url":"https:\/\/memberpress.com\/wp-content\/uploads\/2022\/10\/mp-icon-RGB_Icon-01.jpg","@id":"https:\/\/memberpress.com\/fr\/ai-knowledge-testing\/#organizationLogo","width":1650,"height":1275,"caption":"memberpress logo icon"},"image":{"@id":"https:\/\/memberpress.com\/fr\/ai-knowledge-testing\/#organizationLogo"},"sameAs":["https:\/\/www.instagram.com\/memberpress\/","https:\/\/www.pinterest.com\/memberpressplugin\/","https:\/\/www.youtube.com\/c\/MemberPressPlugin","https:\/\/www.linkedin.com\/company\/memberpress\/"]},{"@type":"WebPage","@id":"https:\/\/memberpress.com\/fr\/ai-knowledge-testing\/#webpage","url":"https:\/\/memberpress.com\/fr\/ai-knowledge-testing\/","name":"AI Knowledge Testing","description":"MemberPress AI Assistant Checking connection... Send","inLanguage":"fr-FR","isPartOf":{"@id":"https:\/\/memberpress.com\/fr\/#website"},"breadcrumb":{"@id":"https:\/\/memberpress.com\/fr\/ai-knowledge-testing\/#breadcrumblist"},"datePublished":"2025-03-23T15:31:42-04:00","dateModified":"2025-03-23T16:54:45-04:00"},{"@type":"WebSite","@id":"https:\/\/memberpress.com\/fr\/#website","url":"https:\/\/memberpress.com\/fr\/","name":"MemberPress","description":"The All-In-One WordPress Membership Plugin","inLanguage":"fr-FR","publisher":{"@id":"https:\/\/memberpress.com\/fr\/#organization"}}]},"og:locale":"fr_FR","og:site_name":"MemberPress","og:type":"article","og:title":"AI Knowledge Testing","og:description":"MemberPress AI Assistant Checking connection... Send","og:url":"https:\/\/memberpress.com\/fr\/ai-knowledge-testing\/","og:image":"https:\/\/memberpress.com\/wp-content\/uploads\/2022\/10\/mp-icon-RGB_Icon-01.jpg","og:image:secure_url":"https:\/\/memberpress.com\/wp-content\/uploads\/2022\/10\/mp-icon-RGB_Icon-01.jpg","og:image:width":1650,"og:image:height":1275,"article:published_time":"2025-03-23T19:31:42+00:00","article:modified_time":"2025-03-23T20:54:45+00:00","article:publisher":"https:\/\/www.facebook.com\/memberpress\/","twitter:card":"summary_large_image","twitter:site":"@memberpress","twitter:title":"AI Knowledge Testing","twitter:description":"MemberPress AI Assistant Checking connection... Send","twitter:image":"https:\/\/memberpress.com\/wp-content\/uploads\/2022\/10\/mp-icon-RGB_Icon-01.jpg"},"aioseo_meta_data":{"post_id":"71018","title":null,"description":null,"keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"WebPage","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"seo_analyzer_scan_date":"2025-10-09 20:10:39","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"open_ai":"{\"title\":{\"suggestions\":[],\"usage\":0},\"description\":{\"suggestions\":[],\"usage\":0}}","ai":null,"created":"2025-03-23 19:18:29","updated":"2026-03-03 14:51:22"},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t<a href=\"https:\/\/memberpress.com\/fr\" title=\"Home\">Home<\/a>\n<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\tAI Knowledge Testing\n<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/memberpress.com\/fr"},{"label":"AI Knowledge Testing","link":"https:\/\/memberpress.com\/fr\/ai-knowledge-testing\/"}],"app_access":{"can_access":true,"restrict_message":null},"_links":{"self":[{"href":"https:\/\/memberpress.com\/fr\/wp-json\/wp\/v2\/pages\/71018","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/memberpress.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/memberpress.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/memberpress.com\/fr\/wp-json\/wp\/v2\/users\/85651"}],"replies":[{"embeddable":true,"href":"https:\/\/memberpress.com\/fr\/wp-json\/wp\/v2\/comments?post=71018"}],"version-history":[{"count":11,"href":"https:\/\/memberpress.com\/fr\/wp-json\/wp\/v2\/pages\/71018\/revisions"}],"predecessor-version":[{"id":71033,"href":"https:\/\/memberpress.com\/fr\/wp-json\/wp\/v2\/pages\/71018\/revisions\/71033"}],"wp:attachment":[{"href":"https:\/\/memberpress.com\/fr\/wp-json\/wp\/v2\/media?parent=71018"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}