{"id":3000085974,"date":"2026-10-28T10:29:59","date_gmt":"2026-10-28T14:29:59","guid":{"rendered":"https:\/\/www.wework.com\/ideas\/?post_type=landing_page&#038;p=3000085974"},"modified":"2026-11-04T14:27:24","modified_gmt":"2026-11-04T19:27:24","slug":"test-chatbot-production","status":"publish","type":"landing_page","link":"https:\/\/www.wework.com\/ideas\/info\/test-chatbot-production","title":{"rendered":"Chatbot &#8211; Test Production"},"content":{"rendered":"\n<p>This page uses the Chatbot script from Kube <strong>PRODUCTION<\/strong> (https:\/\/weworkcorp.yardikube.com\/reseller\/content\/#\/app\/dashboard).<\/p>\n\n\n\n<p>Updated on: November 4, 2026 2:27PM ET<br><em>Timestamp to help understand if page is cached or not<\/em><\/p>\n\n\n\n<script>\n(function() {\n    \/\/ Base pieces\n    var baseUrl = \"\/\/webchat.comm.omni.cafe\/conversations\/\";\n    var propertyUuid = \"d3fba397-173d-4ccc-8fd1-4be5dc5994dc\";\n    var propertyName = \"WeWork AI Assistant\" || \"Webchat\";\n    \/\/ var channelUuid = \"EBA25B8D-B0CD-4A43-AAB6-361FE0D5F529\";\n\n    \/\/ Theme (preview): themeColor=\"#6d7d89\", textColor=\"#FF0000\"\n    \/\/var sendChatButtonColor = \"#FFD800\";\n    var buttons = \"Find a WeWork^Find a WeWork|Explore workspace solutions^Explore workspace solutions|Book a workspace for today^Book a workspace for today|Book a tour^Book a tour|Member support^Member support\";\n\n    var cssUrl = \"https:\/\/assets.ctfassets.net\/hg9qpp02k5bi\/2eL6M1yh5yjml9CEGAqHq7\/8439f6269653c8b5ce9bf7433ff3e3d5\/custom-chat-bundle.css\";\n    var nostream = 1;\n\n    \/\/ Build query string safely\n    var params = new URLSearchParams();\n    params.set(\"propertyName\", propertyName);\n    \/\/ params.set(\"channelUuid\", channelUuid);\n    params.set(\"buttons\", buttons);\n\n    \/\/ Add new options\n    params.set(\"css\", cssUrl);\n    params.set(\"nostream\", nostream);\n    params.set(\"midchat\", \"0\");\n    params.set(\"hidetranscript\", \"1\");\n    params.set(\"hidefeedback\", \"1\");\n    \n\n    \/\/ Retain an existing AI conversation when the user is redirected via a magic link.\n    \/\/ conversationUuid is case-sensitive; the prospect portal shell captures it from the\n    \/\/ hash-route URL into this global before this snippet loads.\n    var conversationUuid = (window.__kubeConversationUuid || \"\").trim();\n    if (conversationUuid) {\n        params.set(\"conversationUuid\", conversationUuid);\n        \/\/ Disable midchat form when resuming a conversation, since the user is already in a chat.\n        params.set(\"midchat\", \"0\");\n    }\n\n    \/\/ Simple cache buster\n    params.set(\"nocacheid\", Date.now());\n\n    \/\/ script URL\n    var fullUrl = baseUrl + propertyUuid + \"\/app.js?\" + params.toString();\n\n    \/\/ Inject script\n    var conversationsScript = document.createElement(\"script\");\n    conversationsScript.type = \"text\/javascript\";\n    conversationsScript.src = fullUrl;\n    document.head.append(conversationsScript);\n\n  \/\/ Inject container overrides\n  var style = document.createElement(\"style\");\n  style.textContent = `\n  #conversations-webchat-container {\n    width: 375px !important;\n    max-width: 375px !important;\n    height: clamp(560px, 90vh, 750px) !important;\n    border-radius: 16px !important;\n    border: 1px solid rgba(0, 0, 0, 0.05) !important;\n    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08) !important;\n}\n@media (max-height: 840px) {\n    .webchat-container:not(.position-override) {\n        bottom: 5px !important;\n    }\n}\n\/* Launcher (init button) colors from Kube chat settings (--init-button-bg \/ --init-button-icon).\n   Empty until saved, so the launcher keeps the Omni theme colors. *\/\n#conversations-webchat-toggle.rcc-app-control { background-color: #000000 !important; }\n#conversations-webchat-toggle.rcc-app-control:not(.selected):before { background-image: url(\"data:image\/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%20stroke-width%3D%221.5%22%20stroke%3D%22%23FFFFFF%22%3E%3Cpath%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20d%3D%22M7.5%208.25h9m-9%203H12m-9.75%201.51c0%201.6%201.123%202.994%202.707%203.227%201.129.166%202.27.293%203.423.379.35.026.67.21.865.501L12%2021l2.755-4.133a1.14%201.14%200%2001.865-.501%2048.172%2048.172%200%20003.423-.379c1.584-.233%202.707-1.626%202.707-3.228V6.741c0-1.602-1.123-2.995-2.707-3.228A48.394%2048.394%200%200012%203c-2.392%200-4.744.175-7.043.513C3.373%203.746%202.25%205.14%202.25%206.741v6.018z%22%2F%3E%3C%2Fsvg%3E\") !important; }\n#conversations-webchat-toggle.rcc-app-control.selected:before { background-image: url(\"data:image\/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%20stroke-width%3D%221.5%22%20stroke%3D%22%23FFFFFF%22%3E%3Cpath%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20d%3D%22M6%2018L18%206M6%206l12%2012%22%2F%3E%3C%2Fsvg%3E\") !important; }\n\n  `;\n  document.head.append(style);\n\n  \/\/ Start minimized: the loader opens the chat window on page load by default. Keep the\n  \/\/ window invisible until we've clicked the launcher toggle into the closed state\n  \/\/ (\"webchat-closed\" on the container), then hand visibility control back to the widget.\n  var startMinimizedStyle = document.createElement(\"style\");\n  startMinimizedStyle.textContent = \"#conversations-webchat-container:not(.webchat-closed) { visibility: hidden !important; }\";\n  document.head.append(startMinimizedStyle);\n\n  var startMinimizedTicks = 0;\n  var startMinimizedClicks = 0;\n  var startMinimizedTimer = setInterval(function () {\n    startMinimizedTicks++;\n    var container = document.getElementById(\"conversations-webchat-container\");\n    var done = false;\n    if (container && container.classList.contains(\"webchat-closed\")) {\n      done = true;\n    } else if (container) {\n      var toggle = document.getElementById(\"conversations-webchat-toggle\");\n      if (toggle && startMinimizedTicks % 4 === 1) { \/\/ retry at most every ~1s\n        startMinimizedClicks++;\n        toggle.dispatchEvent(new MouseEvent(\"click\", { bubbles: true, cancelable: true, view: window }));\n      }\n      if (startMinimizedClicks >= 3) {\n        done = true; \/\/ toggle isn't closing the widget; stop fighting it\n      }\n    }\n    if (done || startMinimizedTicks >= 40) { \/\/ ~10s safety cap\n      clearInterval(startMinimizedTimer);\n      startMinimizedStyle.remove();\n    }\n  }, 250);\n\n  \/\/ Override the default conversation-timeout message inside the webchat iframe.\n  var timeoutMessage = {\n    type: \"CONVERSATION_TIMEOUT_MESSAGE\",\n    conversationTimeoutMessage: \"Sorry, this conversation timed out! [Start a new chat]\"\n  };\n\n  function postTimeoutMessage(iframe) {\n    if (iframe.contentWindow) {\n      iframe.contentWindow.postMessage(timeoutMessage, \"*\");\n    }\n  }\n\n  function bindTimeoutMessage(iframe) {\n    iframe.addEventListener(\"load\", function () {\n      postTimeoutMessage(iframe);\n    });\n    postTimeoutMessage(iframe);\n  }\n\n  function findWebchatIframe() {\n    var iframe = document.querySelector(\"#webchat-iframe\");\n    if (!iframe) {\n      var container = document.querySelector(\"#conversations-webchat-container\");\n      if (container) {\n        iframe = container.querySelector(\"iframe\");\n      }\n    }\n    return iframe;\n  }\n\n  function watchForWebchatIframe() {\n    var existing = findWebchatIframe();\n    if (existing) {\n      bindTimeoutMessage(existing);\n      return;\n    }\n    var observer = new MutationObserver(function () {\n      var iframe = findWebchatIframe();\n      if (iframe) {\n        observer.disconnect();\n        bindTimeoutMessage(iframe);\n      }\n    });\n    observer.observe(document.body, { childList: true, subtree: true });\n  }\n\n  if (document.body) {\n    watchForWebchatIframe();\n  } else {\n    document.addEventListener(\"DOMContentLoaded\", watchForWebchatIframe);\n  }\n})();\n\n\n(function attachChatGreetingEmbed() {\n\n    function initChatGreeting(userOptions) {\n  \n      let __YSI_EMBEDDED_GREETING_MESSAGES__;\n      try {\n        __YSI_EMBEDDED_GREETING_MESSAGES__ = [\"Hi there, I'm Ari, WeWork's new AI assistant. Tell me how I can help you!\"];\n      } catch (eMsgs) {\n        __YSI_EMBEDDED_GREETING_MESSAGES__ = null;\n      }\n  \n      \/\/ \u2500\u2500\u2500 Defaults \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n      const defaults = {\n        messages: (Array.isArray(__YSI_EMBEDDED_GREETING_MESSAGES__) && __YSI_EMBEDDED_GREETING_MESSAGES__.length\n          ? __YSI_EMBEDDED_GREETING_MESSAGES__.slice()\n          : [\n          \"Hey \ud83d\udc4b, I am Maya, what brings you here?\",\n          \"Hey, I am Maya, looking for a workspace?\",\n          \"Hey, I am Maya, just browsing or need something specific?\",\n          \"Hey, I am Maya, looking for a desk, room or office?\",\n        ]),\n        startDelayMs:    5000,\n        typeSpeedMs:     40,\n        hideMs:          5000,\n        rotateEveryMs:   180000,\n        controlsSelector: \".rcc-app-controls.rcc-app-popIn\",\n        rccToggleId:     \"conversations-webchat-toggle\",\n        injectTimeoutMs: 20000,\n        injectPollMs:    250,\n        chatOpenPollMs:  2000,\n        webchatContainerId: \"conversations-webchat-container\",\n        styleId:         \"chatgreeting-style\",\n        fontLinkId:      \"chatgreeting-font-inclusive-sans\",\n        fontHref:        \"https:\/\/fonts.googleapis.com\/css2?family=Inclusive+Sans:wght@400&display=swap\",\n        autoStart:       true,\n      };\n  \n      const opts = Object.assign({}, defaults, userOptions || {});\n  \n      \/\/ \u2500\u2500\u2500 Styles \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n      const CSS = `\n        \/* Layout *\/\n        .chatgreeting-row          { display: flex; align-items: center; gap: 10px; }\n        .chatgreeting .d-none      { display: none !important; }\n        .rcc-app-cta-wrap          { z-index: 30; }\n  \n        \/* Greeting wrapper *\/\n        .chatgreeting {\n          position: relative; display: inline-block; margin-bottom: 10px;\n          opacity: 1; transform: translateY(0) scale(1); will-change: opacity, transform;\n          transition: opacity ${opts.hideMs}ms ease, transform ${opts.hideMs}ms ease;\n        }\n        .chatgreeting.chatgreeting--hiding {\n          opacity: 0; transform: translateY(6px) scale(.98); pointer-events: none;\n        }\n  \n        \/* Bubble \u2014 Kube portal replaces __YSI_GREETING_* placeholders when generating this snippet *\/\n        .chatgreeting__bubble {\n          font-family: 'Inclusive Sans', sans-serif; font-size: 1rem;\n          margin: 0;\n          background: #ececec;\n          border: 1px solid #ececec;\n          color: #1f232b;\n          border-radius: 20px;\n          display: flex; align-items: center; min-height: 50px;\n          position: relative; z-index: 9999; overflow: hidden;\n          padding: 10px 20px; max-width: 420px;\n          box-shadow: 5px 6px 9px -3px #9a9a9a;\n          transition: max-width 320ms ease, padding 320ms ease, white-space 0ms linear;\n        }\n        .chatgreeting__bubble:not(.chatgreeting--typing) { max-width: 78px;  padding: 10px 14px;         white-space: nowrap;  }\n        .chatgreeting__bubble.chatgreeting--typing       { max-width: 420px; padding: 10px 40px 10px 20px; white-space: normal; }\n        .chatgreeting__bubble:after {\n          content: \"\"; position: absolute; width: 15px; height: 15px;\n          background: #ececec;\n          border: 1px solid #ececec;\n          border-radius: 50%;\n          right: -6px; bottom: -7px; box-shadow: 4px 5px 7px -3px #626262;\n        }\n  \n        \/* Typing dots *\/\n        .chatgreeting__dots                 { display: inline-flex; align-items: center; }\n        .chatgreeting--typing .chatgreeting__dots { display: none; }\n        .chatgreeting__dot {\n          width: 6px; height: 6px; border-radius: 50%; margin-right: 4px;\n          background: currentColor; opacity: .25;\n          animation: chatgreetingDotPulse 1s infinite ease-in-out;\n        }\n        .chatgreeting__dot:nth-child(2) { animation-delay: .15s; }\n        .chatgreeting__dot:nth-child(3) { animation-delay: .30s; }\n        @keyframes chatgreetingDotPulse {\n          0%, 80%, 100% { opacity: .25; transform: translateY(0);    }\n          40%            { opacity: 1;   transform: translateY(-1px); }\n        }\n  \n        \/* Close button (hardened against host CSS) *\/\n        .chatgreeting .chatgreeting__close.chatgreeting__close {\n          all: unset;\n          box-sizing: border-box;\n          position: absolute; right: 2px; top: 50%; transform: translateY(-50%); z-index: 99999;\n          display: flex; align-items: center; justify-content: center;\n          padding: 10px; margin: 0; line-height: 0;\n          color: inherit; cursor: pointer;\n        }\n        .chatgreeting .chatgreeting__close.chatgreeting__close:hover,\n        .chatgreeting .chatgreeting__close.chatgreeting__close:focus {\n          background: transparent; color: inherit;\n        }\n        .chatgreeting .chatgreeting__close.chatgreeting__close:focus-visible {\n          outline: 2px solid currentColor; outline-offset: 2px;\n        }\n        .chatgreeting .chatgreeting__close.chatgreeting__close svg {\n          width: 13px; height: 13px; display: block; fill: currentColor;\n        }\n  \n        \/* Mobile *\/\n        @media (max-width: 767px) {\n          .chatgreeting__bubble                            { font-size: .9rem; }\n          .chatgreeting__bubble:not(.chatgreeting--typing) { max-width: 64px; padding: 8px 12px; }\n          .chatgreeting__bubble.chatgreeting--typing       { padding: 8px 24px 8px 10px; }\n          .chatgreeting .chatgreeting__close.chatgreeting__close     { right: -3px; }\n          .chatgreeting .chatgreeting__close.chatgreeting__close svg { width: 8px; height: 8px; }\n        }\n\n        \n      `;\n  \n      \/\/ \u2500\u2500\u2500 State \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n      let lastOpenAttempt  = 0;\n      let rotateTimer      = null;\n      let dismissed        = false;\n      let lastMessage      = null;\n      let pendingTypeTimeout = null;\n      let typingTimeout    = null;\n      let started          = false;\n      let chatOpenPollTimer = null;\n  \n      \/\/ \u2500\u2500\u2500 Helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n      function clearTimers() {\n        if (pendingTypeTimeout) { clearTimeout(pendingTypeTimeout); pendingTypeTimeout = null; }\n        if (typingTimeout)      { clearTimeout(typingTimeout);      typingTimeout      = null; }\n      }\n  \n      function ensureFontInjected() {\n        if (document.getElementById(opts.fontLinkId)) return;\n        const link  = document.createElement(\"link\");\n        link.id     = opts.fontLinkId;\n        link.rel    = \"stylesheet\";\n        link.href   = opts.fontHref;\n        document.head.appendChild(link);\n      }\n  \n      function ensureCssInjected() {\n        if (document.getElementById(opts.styleId)) return;\n        const style       = document.createElement(\"style\");\n        style.id          = opts.styleId;\n        style.textContent = CSS;\n        document.head.appendChild(style);\n      }\n  \n      function pickMessage() {\n        const msgs = opts.messages || [];\n        if (msgs.length === 0) return \"\";\n        \/\/ Pick from messages other than the last one shown; if none remain\n        \/\/ (single message, or all entries identical) keep showing the same one.\n        const candidates = msgs.filter(function (m) { return m !== lastMessage; });\n        const msg = candidates.length\n          ? candidates[Math.floor(Math.random() * candidates.length)]\n          : msgs[0];\n        lastMessage = msg;\n        return msg;\n      }\n  \n      \/\/ \u2500\u2500\u2500 DOM \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n      function injectGreeting() {\n        const controls = document.querySelector(opts.controlsSelector);\n        if (!controls) return null;\n  \n        const parent = controls.parentElement;\n        if (!parent) return null;\n  \n        parent.classList.add(\"chatgreeting-row\");\n  \n        const existing = parent.querySelector(\".js-chatgreeting\");\n        if (existing) return existing;\n  \n        const greeting = document.createElement(\"div\");\n        greeting.className = \"chatgreeting js-chatgreeting\";\n        greeting.innerHTML = `\n          <p class=\"chatgreeting__bubble js-chatgreeting-bubble mb-0\" aria-live=\"polite\">\n            <span class=\"chatgreeting__dots js-chatgreeting-dots\" aria-hidden=\"true\">\n              <span class=\"chatgreeting__dot\"><\/span>\n              <span class=\"chatgreeting__dot\"><\/span>\n              <span class=\"chatgreeting__dot\"><\/span>\n            <\/span>\n            <span class=\"chatgreeting__text js-chatgreeting-text\"><\/span>\n          <\/p>\n          <button class=\"chatgreeting__close js-chatgreeting-close d-none\" type=\"button\" aria-label=\"Close greeting\">\n            <svg fill=\"currentColor\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 352 512\" aria-hidden=\"true\">\n              <path d=\"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176\n                189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21\n                356.07c12.28 12.28 12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28-12.28\n                32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\"\/>\n            <\/svg>\n          <\/button>\n        `;\n  \n        parent.insertBefore(greeting, controls);\n        return greeting;\n      }\n  \n      function hideCloseButton(greetingEl) {\n        greetingEl?.querySelector(\".js-chatgreeting-close\")?.classList.add(\"d-none\");\n      }\n  \n      function showCloseButton(greetingEl) {\n        greetingEl?.querySelector(\".js-chatgreeting-close\")?.classList.remove(\"d-none\");\n      }\n  \n      \/\/ \u2500\u2500\u2500 Typing animation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n      function typeInto(greetingEl, bubbleEl, textEl, msg, idx) {\n        if (dismissed) return;\n        if (idx < msg.length) {\n          textEl.textContent += msg.charAt(idx);\n          typingTimeout = setTimeout(\n            () => typeInto(greetingEl, bubbleEl, textEl, msg, idx + 1),\n            opts.typeSpeedMs\n          );\n          return;\n        }\n        showCloseButton(greetingEl);\n      }\n  \n      function refreshMessage(greetingEl) {\n        if (dismissed || !greetingEl || greetingEl.classList.contains(\"chatgreeting--hiding\")) return;\n  \n        const bubble = greetingEl.querySelector(\".js-chatgreeting-bubble\");\n        const textEl = greetingEl.querySelector(\".js-chatgreeting-text\");\n        if (!bubble || !textEl) return;\n  \n        clearTimers();\n        hideCloseButton(greetingEl);\n  \n        \/\/ Show dots first\n        bubble.classList.remove(\"chatgreeting--typing\");\n        textEl.textContent = \"\";\n        void bubble.offsetWidth; \/\/ force repaint\n  \n        const msg = pickMessage();\n        pendingTypeTimeout = setTimeout(() => {\n          if (dismissed) return;\n          bubble.classList.add(\"chatgreeting--typing\");\n          textEl.textContent = \"\";\n          typeInto(greetingEl, bubble, textEl, msg, 0);\n        }, opts.startDelayMs);\n      }\n  \n      \/\/ \u2500\u2500\u2500 Rotation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n      function startRotation(greetingEl) {\n        if (rotateTimer) clearInterval(rotateTimer);\n        rotateTimer = setInterval(() => refreshMessage(greetingEl), opts.rotateEveryMs);\n      }\n  \n      function stopRotation() {\n        if (rotateTimer) { clearInterval(rotateTimer); rotateTimer = null; }\n      }\n  \n      \/\/ \u2500\u2500\u2500 External open poll \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n      function isChatOpenExternally() {\n        const container = document.getElementById(opts.webchatContainerId);\n        return container && !container.classList.contains(\"webchat-closed\");\n      }\n  \n      function startChatOpenPoll(greetingEl) {\n        if (chatOpenPollTimer) clearInterval(chatOpenPollTimer);\n        chatOpenPollTimer = setInterval(() => {\n          if (isChatOpenExternally()) {\n            stopChatOpenPoll();\n            hideGreetingNice(greetingEl);\n          }\n        }, opts.chatOpenPollMs);\n      }\n  \n      function stopChatOpenPoll() {\n        if (chatOpenPollTimer) { clearInterval(chatOpenPollTimer); chatOpenPollTimer = null; }\n      }\n  \n      \/\/ \u2500\u2500\u2500 Visibility \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n      function hideGreetingNice(greetingEl) {\n        if (!greetingEl || greetingEl.classList.contains(\"chatgreeting--hiding\")) return;\n        dismissed = true;\n        stopRotation();\n        stopChatOpenPoll();\n        clearTimers();\n        void greetingEl.offsetHeight; \/\/ force repaint\n        greetingEl.classList.add(\"chatgreeting--hiding\");\n        setTimeout(() => greetingEl.remove(), opts.hideMs + 30);\n      }\n  \n      \/\/ \u2500\u2500\u2500 Chat toggle \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n      function openRccChat() {\n        const now = Date.now();\n        if (now - lastOpenAttempt < 400) return;\n        lastOpenAttempt = now;\n  \n        const toggle = document.getElementById(opts.rccToggleId);\n        if (!toggle) return;\n  \n        toggle.dispatchEvent(\n          new MouseEvent(\"click\", { bubbles: true, cancelable: true, view: window })\n        );\n      }\n  \n      \/\/ \u2500\u2500\u2500 Event wiring \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n      function wireEvents(greetingEl) {\n        const bubble   = greetingEl.querySelector(\".js-chatgreeting-bubble\");\n        const closeBtn = greetingEl.querySelector(\".js-chatgreeting-close\");\n        if (!bubble || !closeBtn) return;\n  \n        bubble.style.cursor = \"pointer\";\n  \n        bubble.addEventListener(\"pointerup\", (e) => {\n          e.preventDefault();\n          e.stopPropagation();\n          openRccChat();\n          hideGreetingNice(greetingEl);\n        }, { passive: false });\n  \n        closeBtn.addEventListener(\"click\", (e) => {\n          e.stopPropagation();\n          e.preventDefault();\n          hideGreetingNice(greetingEl);\n        });\n      }\n  \n      \/\/ \u2500\u2500\u2500 DOM readiness \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n      function waitForControls(timeoutMs) {\n        return new Promise((resolve) => {\n          const start = Date.now();\n  \n          let poll = null;\n          let obs  = null;\n  \n          const cleanup = () => {\n            if (poll) { clearInterval(poll); poll = null; }\n            if (obs)  { obs.disconnect();    obs  = null; }\n          };\n  \n          const check = () => {\n            const el = document.querySelector(opts.controlsSelector);\n            if (el)                            { cleanup(); resolve(el);   return; }\n            if (Date.now() - start >= timeoutMs) { cleanup(); resolve(null); return; }\n          };\n  \n          poll = setInterval(check, opts.injectPollMs);\n          obs  = new MutationObserver(check);\n          obs.observe(document.documentElement, { childList: true, subtree: true });\n          check();\n        });\n      }\n  \n      \/\/ \u2500\u2500\u2500 Init \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n      async function init() {\n        if (started) return;\n        started   = true;\n        dismissed = false;\n  \n        ensureFontInjected();\n        ensureCssInjected();\n  \n        const controlsEl = await waitForControls(opts.injectTimeoutMs);\n        if (!controlsEl) { started = false; return; }\n  \n        if (isChatOpenExternally()) { started = false; return; }\n  \n        const greeting = injectGreeting();\n        if (!greeting)  { started = false; return; }\n  \n        refreshMessage(greeting);\n        startRotation(greeting);\n        wireEvents(greeting);\n        startChatOpenPoll(greeting);\n      }\n  \n      \/\/ \u2500\u2500\u2500 Public API \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n      const api = {\n        start: init,\n        stop: () => {\n          dismissed = true;\n          stopRotation();\n          stopChatOpenPoll();\n          clearTimers();\n          document.querySelector(\".js-chatgreeting\")?.remove();\n        },\n      };\n  \n      if (opts.autoStart) {\n        if (window.ysi && typeof window.ysi.registerCallback === \"function\") {\n          window.ysi.registerCallback(init);\n        } else if (document.readyState === \"loading\") {\n          document.addEventListener(\"DOMContentLoaded\", init);\n        } else {\n          init();\n        }\n      }\n  \n      return api;\n    }\n  \n    \/\/ \u2500\u2500\u2500 Expose & auto-start \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    window.initChatGreeting = initChatGreeting;\n    window.initChatGreeting();\n  \n  })();\n\n<\/script>\n\n\n\n<p><\/p>\n","protected":false},"featured_media":0,"template":"","class_list":["post-3000085974","landing_page","type-landing_page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.8 (Yoast SEO v27.8) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Chatbot - Test Production - Ideas<\/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:\/\/www.wework.com\/ideas\/info\/test-chatbot-production\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Chatbot - Test Production\" \/>\n<meta property=\"og:description\" content=\"This page uses the Chatbot script from Kube PRODUCTION (https:\/\/weworkcorp.yardikube.com\/reseller\/content\/#\/app\/dashboard). Updated on: November 4, 2026 2:27PM ETTimestamp to help understand if page is cached or not\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wework.com\/ideas\/info\/test-chatbot-production\" \/>\n<meta property=\"og:site_name\" content=\"Ideas\" \/>\n<meta property=\"article:modified_time\" content=\"2026-11-04T19:27:24+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:\\\/\\\/www.wework.com\\\/ideas\\\/info\\\/test-chatbot-production\",\"url\":\"https:\\\/\\\/www.wework.com\\\/ideas\\\/info\\\/test-chatbot-production\",\"name\":\"Chatbot - Test Production - Ideas\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.wework.com\\\/ideas\\\/#website\"},\"datePublished\":\"2026-10-28T14:29:59+00:00\",\"dateModified\":\"2026-11-04T19:27:24+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.wework.com\\\/ideas\\\/info\\\/test-chatbot-production#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.wework.com\\\/ideas\\\/info\\\/test-chatbot-production\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.wework.com\\\/ideas\\\/info\\\/test-chatbot-production#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"\\\/ideas\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Landing Pages\",\"item\":\"\\\/ideas\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Chatbot &#8211; Test Production\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.wework.com\\\/ideas\\\/#website\",\"url\":\"https:\\\/\\\/www.wework.com\\\/ideas\\\/\",\"name\":\"Ideas\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.wework.com\\\/ideas\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.wework.com\\\/ideas\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.wework.com\\\/ideas\\\/#organization\",\"name\":\"WeWork\",\"url\":\"https:\\\/\\\/www.wework.com\\\/ideas\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.wework.com\\\/ideas\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.wework.com\\\/ideas\\\/wp-content\\\/uploads\\\/sites\\\/4\\\/2019\\\/04\\\/welogo_black_55x55.jpg?fit=55%2C55\",\"contentUrl\":\"https:\\\/\\\/www.wework.com\\\/ideas\\\/wp-content\\\/uploads\\\/sites\\\/4\\\/2019\\\/04\\\/welogo_black_55x55.jpg?fit=55%2C55\",\"width\":55,\"height\":55,\"caption\":\"WeWork\"},\"image\":{\"@id\":\"https:\\\/\\\/www.wework.com\\\/ideas\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Chatbot - Test Production - Ideas","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:\/\/www.wework.com\/ideas\/info\/test-chatbot-production","og_locale":"en_US","og_type":"article","og_title":"Chatbot - Test Production","og_description":"This page uses the Chatbot script from Kube PRODUCTION (https:\/\/weworkcorp.yardikube.com\/reseller\/content\/#\/app\/dashboard). Updated on: November 4, 2026 2:27PM ETTimestamp to help understand if page is cached or not","og_url":"https:\/\/www.wework.com\/ideas\/info\/test-chatbot-production","og_site_name":"Ideas","article_modified_time":"2026-11-04T19:27:24+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wework.com\/ideas\/info\/test-chatbot-production","url":"https:\/\/www.wework.com\/ideas\/info\/test-chatbot-production","name":"Chatbot - Test Production - Ideas","isPartOf":{"@id":"https:\/\/www.wework.com\/ideas\/#website"},"datePublished":"2026-10-28T14:29:59+00:00","dateModified":"2026-11-04T19:27:24+00:00","breadcrumb":{"@id":"https:\/\/www.wework.com\/ideas\/info\/test-chatbot-production#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wework.com\/ideas\/info\/test-chatbot-production"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wework.com\/ideas\/info\/test-chatbot-production#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"\/ideas"},{"@type":"ListItem","position":2,"name":"Landing Pages","item":"\/ideas"},{"@type":"ListItem","position":3,"name":"Chatbot &#8211; Test Production"}]},{"@type":"WebSite","@id":"https:\/\/www.wework.com\/ideas\/#website","url":"https:\/\/www.wework.com\/ideas\/","name":"Ideas","description":"","publisher":{"@id":"https:\/\/www.wework.com\/ideas\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wework.com\/ideas\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.wework.com\/ideas\/#organization","name":"WeWork","url":"https:\/\/www.wework.com\/ideas\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.wework.com\/ideas\/#\/schema\/logo\/image\/","url":"https:\/\/www.wework.com\/ideas\/wp-content\/uploads\/sites\/4\/2019\/04\/welogo_black_55x55.jpg?fit=55%2C55","contentUrl":"https:\/\/www.wework.com\/ideas\/wp-content\/uploads\/sites\/4\/2019\/04\/welogo_black_55x55.jpg?fit=55%2C55","width":55,"height":55,"caption":"WeWork"},"image":{"@id":"https:\/\/www.wework.com\/ideas\/#\/schema\/logo\/image\/"}}]}},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.wework.com\/ideas\/wp-json\/wp\/v2\/landing_page\/3000085974","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wework.com\/ideas\/wp-json\/wp\/v2\/landing_page"}],"about":[{"href":"https:\/\/www.wework.com\/ideas\/wp-json\/wp\/v2\/types\/landing_page"}],"version-history":[{"count":43,"href":"https:\/\/www.wework.com\/ideas\/wp-json\/wp\/v2\/landing_page\/3000085974\/revisions"}],"predecessor-version":[{"id":3000086251,"href":"https:\/\/www.wework.com\/ideas\/wp-json\/wp\/v2\/landing_page\/3000085974\/revisions\/3000086251"}],"wp:attachment":[{"href":"https:\/\/www.wework.com\/ideas\/wp-json\/wp\/v2\/media?parent=3000085974"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}