{"id":456,"date":"2026-02-19T21:07:12","date_gmt":"2026-02-19T18:07:12","guid":{"rendered":"https:\/\/files.tecsa.ru\/?page_id=456"},"modified":"2026-02-19T21:07:12","modified_gmt":"2026-02-19T18:07:12","slug":"chat","status":"publish","type":"page","link":"https:\/\/files.tecsa.ru\/?page_id=456","title":{"rendered":"Chat"},"content":{"rendered":"        <div class=\"tecsa-sitechat\" data-chat-id=\"demo\">\n            <div class=\"tecsa-sitechat-log\" style=\"border:1px solid #ddd;padding:10px;min-height:120px;max-height:280px;overflow:auto;\"><\/div>\n            <small style=\"display:block;margin-top:6px;opacity:.7;\">\n                Demo UI. \u0414\u043b\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0447\u0430\u0442\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0439 \u0441\u0432\u043e\u044e \u0432\u0435\u0440\u0441\u0442\u043a\u0443\/JS \u0438 \u0434\u0435\u0440\u0433\u0430\u0439 endpoint poll.\n            <\/small>\n        <\/div>\n        <script>\n        (function(){\n            const root = document.currentScript.previousElementSibling;\n            if(!root || !root.classList || !root.classList.contains('tecsa-sitechat')) return;\n\n            const chatId = root.getAttribute('data-chat-id') || 'default';\n            const pollUrl = \"https:\\\/\\\/files.tecsa.ru\\\/index.php?rest_route=\\\/tecsa-sitechat\\\/v1\\\/poll\";\n            const token = \"dsgfvd7824gh4uigjh3468gdvb\";\n            const log = root.querySelector('.tecsa-sitechat-log');\n            let since = 0;\n\n            function esc(s){ return (s+'').replace(\/[&<>\\\"']\/g, c=>({ '&':'&amp;','<':'&lt;','>':'&gt;','\\\"':'&quot;',\"'\":'&#39;' }[c])); }\n\n            async function poll(){\n                try{\n                    const u = new URL(pollUrl);\n                    u.searchParams.set('chat_id', chatId);\n                    u.searchParams.set('since', String(since));\n                    if(token) u.searchParams.set('token', token);\n                    const r = await fetch(u.toString(), { credentials:'same-origin' });\n                    const j = await r.json();\n                    if(j && j.ok){\n                        (j.messages||[]).forEach(m=>{\n                            const line = document.createElement('div');\n                            line.innerHTML = '<b>'+esc(m.from||'')+':<\/b> '+(m.text||'');\n                            log.appendChild(line);\n                        });\n                        since = Math.max(since, j.max_ts||since);\n                        log.scrollTop = log.scrollHeight;\n                    }\n                }catch(e){}\n                setTimeout(poll, 1500);\n            }\n            poll();\n        })();\n        <\/script>\n        \n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-456","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/files.tecsa.ru\/index.php?rest_route=\/wp\/v2\/pages\/456","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/files.tecsa.ru\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/files.tecsa.ru\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/files.tecsa.ru\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/files.tecsa.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=456"}],"version-history":[{"count":1,"href":"https:\/\/files.tecsa.ru\/index.php?rest_route=\/wp\/v2\/pages\/456\/revisions"}],"predecessor-version":[{"id":457,"href":"https:\/\/files.tecsa.ru\/index.php?rest_route=\/wp\/v2\/pages\/456\/revisions\/457"}],"wp:attachment":[{"href":"https:\/\/files.tecsa.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=456"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}