рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг

Asyntai рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реАрдЦреЗрдВ

рд╢реБрд░реВ рдХрд░рдирд╛
рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдЬреНрдЮрд╛рди рдЖрдзрд╛рд░ AI рдЖрдкрдХреА рд╕рд╛рдордЧреНрд░реА рддрдХ рдХреИрд╕реЗ рдкрд╣реБрдБрдЪрддрд╛ рд╣реИ рдЕрдкрдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдЕрдкрдирд╛ AI рдЯреЗрд╕реНрдЯ рдХрд░реЗрдВ рд╡реЗрдмрд╕рд╛рдЗрдЯреЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВ
Customization
рдЪреИрдЯ рдмрдЯрди рдбрд┐рдЬрд╝рд╛рдЗрди рдЪреИрдЯ рдмрдЯрди рдЖрдЗрдХрди рд╡рд┐рдЬреЗрдЯ рд░рдВрдЧ AI рд╕рд╣рд╛рдпрдХ рдирд╛рдо рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдВрджреЗрд╢ рд╡рд┐рдЬреЗрдЯ рд╕реНрдерд┐рддрд┐ рдСрдЯреЛ-рдЯреНрд░рд┐рдЧрд░ рдЕрднрд┐рд╡рд╛рджрди рдмрдмрд▓ рдЕрдкрдард┐рдд рдмреИрдЬ рдирд┐рд░реНрджреЗрд╢ рдореЛрдб рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдВ рдЗрдореЛрдЬреА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рднрд╛рд╖рд╛рдУрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ рдИрдореЗрд▓ рдПрдХрддреНрд░ рдХрд░реЗрдВ рдлрд╝реЛрди рдирдВрдмрд░ рдПрдХрддреНрд░ рдХрд░реЗрдВ рд╕реНрдорд╛рд░реНрдЯ рд▓реАрдб рдХреИрдкреНрдЪрд░ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдмреНрд░рд╛рдВрдбрд┐рдВрдЧ рдЫреБрдкрд╛рдПрдВ рдЧреЛрдкрдиреАрдпрддрд╛ рд▓рд┐рдВрдХ рдХрд╕реНрдЯрдо рдиреЛрдЯрд┐рд╕ рд▓рд┐рдВрдХ рдЙрд╕реА рдЯреИрдм рдореЗрдВ рдЦреЛрд▓реЗрдВ рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдирдИ рдмрд╛рддрдЪреАрдд рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рдЗрддрд┐рд╣рд╛рд╕ рдЯреИрдЧрд▓рд╛рдЗрди рдФрд░ рд╕реНрдерд┐рддрд┐ рдмрд┐рдВрджреБ рд╕реНрдкреАрдЪ рдЯреВ рдЯреЗрдХреНрд╕реНрдЯ рдЪреИрдЯ рдЖрдЗрдХрди рдХрдВрдкрдиреА рд▓реЛрдЧреЛ рд╡рд░реНрдг рд╕реАрдорд╛ рддрд╛рдкрдорд╛рди
AI рдирд┐рд░реНрджреЗрд╢ рд╕реБрдЭрд╛рд╡ рджреВрд╕рд░реЗ рдЪреИрдЯрдмреЙрдЯ рд╕реЗ рдмрджрд▓рд╛рд╡ рдкреНрд▓рд╛рди рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ
рд╕реБрд╡рд┐рдзрд╛рдПрдВ
Ask AI рдмрд╛рд░ AI рд╕рд░реНрдЪ рдмрд╛рд░ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреНрд░реЙрд▓ рдЬреНрдЮрд╛рди рдЕрдВрддрд░рд╛рд▓ рдЙрддреНрдкрд╛рдж рдХрд╛рд░реНрдб рдЧрддрд┐рд╢реАрд▓ рдЙрддреНрдкрд╛рдж рдХрд╛рд░реНрдб рдЧрддрд┐рд╢реАрд▓ рдЫрд╡рд┐рдпрд╛рдБ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрджрд░реНрдн рдХрд╕реНрдЯрдо рдЯреВрд▓ рд▓рд┐рдВрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдХреНрд░рд┐рдп рд╕рдВрджреЗрд╢ рд▓рд╛рдЗрд╡ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдорд╛рдирд╡ рдЯреЗрдХрдУрд╡рд░ рдПрд╕реНрдХреЗрд▓реЗрд╢рди AI рд╕реВрдЪрдирд╛рдПрдБ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реВрдЪрдирд╛рдПрдБ рджреИрдирд┐рдХ рд░рд┐рдкреЛрд░реНрдЯ рд░рд┐рдпрд▓-рдЯрд╛рдЗрдо рдбреЗрдЯрд╛ рдлрд╝реАрдб рд░рд┐рдпрд▓-рдЯрд╛рдЗрдо рдбреЗрдЯрд╛ рдлрд╝реАрдб рдореИрдХреНрд╕ рдЯреАрдо рд╕рджрд╕реНрдп Single Sign-On рджреНрд╡рд┐-рдХрд╛рд░рдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЗрдореЗрдЬ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ рдЗрдореЗрдЬ рд╡рд┐рдЬрд╝рди рдЕрдиреБрд╡рд╛рдж рд╡рд┐рдЬреЗрдЯ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг AI рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рд▓реАрдбреНрд╕ рд╕реНрдорд╛рд░реНрдЯ рд▓реАрдб рдХреИрдкреНрдЪрд░ рд╕рдкреЛрд░реНрдЯ рдЯрд┐рдХрдЯ рдЪреИрдЯ рд╢реНрд░реЗрдгрд┐рдпрд╛рдБ рдмреБрдХрд┐рдВрдЧ рд╡реЙрдЗрд╕ рдПрдЬреЗрдВрдЯ рдПрдореНрдмреЗрдб рдкреЗрдЬ рдмрд╛рд╣рд░ рд░рдЦреЗрдВ рдмреНрд▓реЙрдХ рдХрд┐рдП рдЧрдП IP рдбреЗрдЯрд╛ рдкреНрд░рддрд┐рдзрд╛рд░рдг рдиреАрддрд┐ рд╢реВрдиреНрдп рд╕рдВрдЧреНрд░рд╣рдг рдореЛрдб PII рдорд╛рд╕реНрдХрд┐рдВрдЧ рдЙрддреНрддрд░ рд╡рд░реНрдЧреАрдХрд░рдгрдХрд░реНрддрд╛ Access Tags рд╡рд┐рдЬреЗрдЯ рд╕рдВрд╕реНрдХрд░рдг рдкрд┐рдирд┐рдВрдЧ рдСрдбрд┐рдЯ рд▓реЙрдЧ рдЙрддреНрддрд░ рд╕реБрдЭрд╛рд╡ рдлрд╝реЙрд▓реЛ-рдЕрдк рд╕рдВрджреЗрд╢ рд╕реНрдкреАрдЪ рдЯреВ рдЯреЗрдХреНрд╕реНрдЯ рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдПрдореНрдмреЗрдбреЗрдб рдЪреИрдЯ iframe рд╕реЗ рдПрдореНрдмреЗрдб

DatoCMS рдореЗрдВ Asyntai AI рдЪреИрдЯрдмреЙрдЯ рдХреИрд╕реЗ рдЬреЛрдбрд╝реЗрдВ

DatoCMS-рд╕рдВрдЪрд╛рд▓рд┐рдд рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдЪрд░рдг-рджрд░-рдЪрд░рдг рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛

рдПрдореНрдмреЗрдб рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рд╣реЗрдбрд▓реЗрд╕ CMS: DatoCMS рдПрдХ рд╣реЗрдбрд▓реЗрд╕ CMS рд╣реИ рдЬреЛ APIs рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЪреИрдЯрдмреЙрдЯ рдХреЛрдб рдЖрдкрдХреЗ рдлреНрд░рдВрдЯрдПрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди (Next.js, Gatsby, Nuxt, рдЖрджрд┐) рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, DatoCMS рдбреИрд╢рдмреЛрд░реНрдб рдореЗрдВ рдирд╣реАрдВред

рдЪрд░рдг 1: рдЕрдкрдирд╛ рдПрдореНрдмреЗрдб рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЕрдкрдиреЗ Asyntai рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рдЬрд╛рдПрдБ рдФрд░ рдиреАрдЪреЗ "Embed Code" рдЕрдиреБрднрд╛рдЧ рддрдХ рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдВред рдЕрдкрдирд╛ рдпреВрдирд┐рдХ рдПрдореНрдмреЗрдб рдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВ, рдЬреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

<script>(function(){var l=function(){var s=document.createElement("script");s.src="https://widget.asyntai.com/static/js/chat-widget.js";s.async=true;s.setAttribute("data-asyntai-id","YOUR_WIDGET_ID");document.head.appendChild(s)};if(document.readyState==="complete"){l()}else{window.addEventListener("load",l)}})();</script>

рдиреЛрдЯ: рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдХреЗрд╡рд▓ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдбреИрд╢рдмреЛрд░реНрдб рд╕реЗ рдЕрдкрдирд╛ рдЕрджреНрд╡рд┐рддреАрдп рдПрдореНрдмреЗрдб рдХреЛрдб рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЖрдкрдХреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд┐рдЬреЗрдЯ ID рд╣реЛрддреА рд╣реИред

рдЪрд░рдг 2: Next.js рдлреНрд░рдВрдЯрдПрдВрдб рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ (рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп)

Next.js DatoCMS рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдлреНрд░рдВрдЯрдПрдВрдб рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реИред Script рдХрдВрдкреЛрдиреЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪреИрдЯрдмреЙрдЯ рдЬреЛрдбрд╝реЗрдВ:

App Router (app/layout.tsx):

  1. рдЕрдкрдиреА рд░реВрдЯ рд▓реЗрдЖрдЙрдЯ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ: app/layout.tsx
  2. Script рдХрдВрдкреЛрдиреЗрдВрдЯ рдЖрдпрд╛рдд рдХрд░реЗрдВ рдФрд░ рдЪреИрдЯрдмреЙрдЯ рдЬреЛрдбрд╝реЗрдВ:
    import Script from 'next/script'

    export default function RootLayout({ children }) {
      return (
        <html>
          <body>
            {children}
            <Script
              src="https://asyntai.com/static/js/chat-widget.js"
              data-asyntai-id="YOUR_WIDGET_ID"
              strategy="afterInteractive"
            />
          </body>
        </html>
      )
    }
  3. YOUR_WIDGET_ID рдХреЛ рдЕрдкрдиреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рдЬреЗрдЯ ID рд╕реЗ рдмрджрд▓реЗрдВ
  4. рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдЕрдкрдирд╛ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рд╕рд░реНрд╡рд░ рдкреБрдирдГ рд╢реБрд░реВ рдХрд░реЗрдВ

Pages Router (pages/_app.tsx):

  1. рдЕрдкрдиреА pages/_app.tsx рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ
  2. Script рдХрдВрдкреЛрдиреЗрдВрдЯ рдЬреЛрдбрд╝реЗрдВ:
    import Script from 'next/script'
    import type { AppProps } from 'next/app'

    export default function App({ Component, pageProps }: AppProps) {
      return (
        <>
          <Component {...pageProps} />
          <Script
            src="https://asyntai.com/static/js/chat-widget.js"
            data-asyntai-id="YOUR_WIDGET_ID"
            strategy="afterInteractive"
          />
        </>
      )
    }

рд╕реБрдЭрд╛рд╡: strategy="afterInteractive" рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЪреИрдЯрдмреЙрдЯ рдкреГрд╖реНрда рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рд╣реЛрдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд▓реЛрдб рд╣реЛ, рдЬреЛ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рдмреАрдЪ рдЕрдЪреНрдЫрд╛ рд╕рдВрддреБрд▓рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдзрд┐ 1: Gatsby рдлреНрд░рдВрдЯрдПрдВрдб

gatsby-source-datocms рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ DatoCMS рд╕реЗ рд╕рд╛рдордЧреНрд░реА рдЦреАрдВрдЪрдиреЗ рд╡рд╛рд▓реА Gatsby рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП:

  1. рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рдореЗрдВ gatsby-ssr.js рдмрдирд╛рдПрдБ рдпрд╛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
    import React from 'react'

    export const onRenderBody = ({ setPostBodyComponents }) => {
      setPostBodyComponents([
        <script
          key="asyntai-chatbot"
          async
          src="https://asyntai.com/static/js/chat-widget.js"
          data-asyntai-id="YOUR_WIDGET_ID"
        />
      ])
    }
  2. YOUR_WIDGET_ID рдХреЛ рдЕрдкрдиреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рдЬреЗрдЯ ID рд╕реЗ рдмрджрд▓реЗрдВ
  3. рдЕрдкрдирд╛ Gatsby рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рд╕рд░реНрд╡рд░ рдкреБрдирдГ рд╢реБрд░реВ рдХрд░реЗрдВ

рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдзрд┐ 2: Nuxt.js рдлреНрд░рдВрдЯрдПрдВрдб

DatoCMS рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ Nuxt.js рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП:

  1. рдЕрдкрдиреА nuxt.config.ts рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
    export default defineNuxtConfig({
      app: {
        head: {
          script: [
            {
              src: 'https://asyntai.com/static/js/chat-widget.js',
              async: true,
              'data-asyntai-id': 'YOUR_WIDGET_ID'
            }
          ]
        }
      }
    })
  2. YOUR_WIDGET_ID рдХреЛ рдЕрдкрдиреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рдЬреЗрдЯ ID рд╕реЗ рдмрджрд▓реЗрдВ
  3. рдЕрдкрдирд╛ Nuxt рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рд╕рд░реНрд╡рд░ рдкреБрдирдГ рд╢реБрд░реВ рдХрд░реЗрдВ

рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдзрд┐ 3: рд╕рд╛рдорд╛рдиреНрдп HTML / рд╕реНрдЯреИрдЯрд┐рдХ рд╕рд╛рдЗрдЯ

рдпрджрд┐ рдЖрдк рд╕реНрдЯреИрдЯрд┐рдХ HTML рд╕рд╛рдЗрдЯ рдпрд╛ рд╕реНрдЯреИрдЯрд┐рдХ рд╕рд╛рдЗрдЯ рдЬрдирд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде DatoCMS рдХреА Content Delivery API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

  1. рдХреНрд▓реЛрдЬрд╝рд┐рдВрдЧ </body> рдЯреИрдЧ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдиреА HTML рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдореНрдмреЗрдб рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
    <script>(function(){var l=function(){var s=document.createElement("script");s.src="https://widget.asyntai.com/static/js/chat-widget.js";s.async=true;s.setAttribute("data-asyntai-id","YOUR_WIDGET_ID");document.head.appendChild(s)};if(document.readyState==="complete"){l()}else{window.addEventListener("load",l)}})();</script>
  2. YOUR_WIDGET_ID рдХреЛ рдЕрдкрдиреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рдЬреЗрдЯ ID рд╕реЗ рдмрджрд▓реЗрдВ
  3. рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдЕрдкрдиреА рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ

рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдзрд┐ 4: React (Vite/CRA)

DatoCMS API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдирдХ React рдРрдкреНрд╕ (Create React App, Vite) рдХреЗ рд▓рд┐рдП:

рд╡рд┐рдХрд▓реНрдк A: public/index.html рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ

  1. рдЕрдкрдиреА public/index.html рдлрд╝рд╛рдЗрд▓ (CRA) рдпрд╛ index.html (Vite) рдЦреЛрд▓реЗрдВ
  2. рдХреНрд▓реЛрдЬрд┐рдВрдЧ </body> рдЯреИрдЧ рд╕реЗ рдкрд╣рд▓реЗ рдПрдореНрдмреЗрдб рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
    <script>(function(){var l=function(){var s=document.createElement("script");s.src="https://widget.asyntai.com/static/js/chat-widget.js";s.async=true;s.setAttribute("data-asyntai-id","YOUR_WIDGET_ID");document.head.appendChild(s)};if(document.readyState==="complete"){l()}else{window.addEventListener("load",l)}})();</script>
  3. рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬреЗрдВ

рд╡рд┐рдХрд▓реНрдк B: рд░реВрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯ рдореЗрдВ useEffect

  1. рдПрдХ рдЪреИрдЯрдмреЙрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯ рдмрдирд╛рдПрдБ рдпрд╛ рдЕрдкрдиреЗ рд░реВрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
    // components/Chatbot.jsx
    import { useEffect } from 'react'

    export default function Chatbot() {
      useEffect(() => {
        const script = document.createElement('script')
        script.src = 'https://asyntai.com/static/js/chat-widget.js'
        script.async = true
        script.setAttribute('data-asyntai-id', 'YOUR_WIDGET_ID')
        document.body.appendChild(script)
        return () => document.body.removeChild(script)
      }, [])
      return null
    }
  2. рдЕрдкрдиреЗ App.jsx рдпрд╛ рд░реВрдЯ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рдХрдВрдкреЛрдиреЗрдВрдЯ рдЖрдпрд╛рдд рдХрд░реЗрдВ рдФрд░ рд░реЗрдВрдбрд░ рдХрд░реЗрдВ

рдЪрд░рдг 3: рдбрд┐рдкреНрд▓реЙрдп рдХрд░реЗрдВ рдФрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ

рдЕрдкрдиреА DatoCMS-рд╕рдВрдЪрд╛рд▓рд┐рдд рд╕рд╛рдЗрдЯ рдореЗрдВ рдЪреИрдЯрдмреЙрдЯ рдХреЛрдб рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдбрд┐рдкреНрд▓реЙрдп рдХрд░реЗрдВ рдпрд╛ рдЕрдкрдирд╛ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рд╕рд░реНрд╡рд░ рдЪрд▓рд╛рдПрдБред рдЕрдкрдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЛ рдПрдХ рдирдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЯреИрдм рдпрд╛ рдЗрдирдХреЙрдЧреНрдирд┐рдЯреЛ рд╡рд┐рдВрдбреЛ рдореЗрдВ рджреЗрдЦреЗрдВред рдЖрдкрдХреЛ рдиреАрдЪреЗ рджрд╛рдПрдБ рдХреЛрдиреЗ рдореЗрдВ рдЪреИрдЯ рд╡рд┐рдЬреЗрдЯ рдмрдЯрди рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЦреБрд▓рддрд╛ рдФрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╡рд┐рдЬреЗрдЯ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛? рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝реА рд╣реИред рдХрд┐рд╕реА рднреА рддреНрд░реБрдЯрд┐ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдбреЗрд╡рд▓рдкрд░ рдХрдВрд╕реЛрд▓ рдЬрд╛рдБрдЪреЗрдВред рдпрджрд┐ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рдЪрд▓рддреА рд╣реИред рдЕрдкрдирд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреИрд╢ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдпрд╛ рдЗрдирдХреЙрдЧреНрдирд┐рдЯреЛ рд╡рд┐рдВрдбреЛ рдореЗрдВ рджреЗрдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░: рдмреЗрд╣рддрд░ рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рд▓рдЪреАрд▓реЗрдкрди рдХреЗ рд▓рд┐рдП, рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреА рд╡рд┐рдЬреЗрдЯ ID рдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ (рдЬреИрд╕реЗ, Next.js рдХреЗ рд▓рд┐рдП NEXT_PUBLIC_ASYNTAI_ID рдпрд╛ Vite рдХреЗ рд▓рд┐рдП VITE_ASYNTAI_ID)ред