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

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

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

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

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

SilverStripe CMS рдХреЗ рд▓рд┐рдП рдЪрд░рдг-рджрд░-рдЪрд░рдг рдЧрд╛рдЗрдб

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

рдЪрд░рдг 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: SilverStripe рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ (рдЕрдиреБрд╢рдВрд╕рд┐рдд)

рдЕрдкрдиреА SilverStripe рд╕рд╛рдЗрдЯ рдкрд░ рдЪреИрдЯрдмреЙрдЯ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХрд╛ рдЕрдкрдиреА рдереАрдо рдХреА рдореБрдЦреНрдп рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реАрдзреЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реИ:

  1. рдЕрдкрдиреА рдереАрдо рдХреА рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ (рдЬреИрд╕реЗ, themes/yourtheme/templates/Page.ss)
  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> </body> </html>
  1. рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдЕрдкрдиреЗ рд╕рд╛рдЗрдЯ URL рдХреЗ рдЕрдВрдд рдореЗрдВ ?flush=1 рдЬреЛрдбрд╝рдХрд░ SilverStripe рдХреИрд╢ рдХреЛ рдлреНрд▓рд╢ рдХрд░реЗрдВ

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

рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдзрд┐ 1: рдХрдВрдЯреНрд░реЛрд▓рд░ рдореЗрдВ Requirements рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ

SilverStripe рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ CSS рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ Requirements рдХреНрд▓рд╛рд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ:

  1. app/src/PageController.php (рдпрд╛ рдЕрдкрдиреА рдкреЗрдЬ рдХрдВрдЯреНрд░реЛрд▓рд░ рдлрд╝рд╛рдЗрд▓) рдЦреЛрд▓реЗрдВ
  2. init() рдореЗрдердб рдореЗрдВ, рд╡рд┐рдЬреЗрдЯ рдХреЛ рдбрд╛рдпрдирд╛рдорд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Requirements::customScript() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
use SilverStripe\View\Requirements; class PageController extends \SilverStripe\CMS\Controllers\ContentController { protected function init() { parent::init(); Requirements::customScript(<<<JS var script = document.createElement('script'); script.src = 'https://asyntai.com/static/js/chat-widget.js'; script.setAttribute('data-asyntai-id', 'YOUR_WIDGET_ID'); script.async = true; document.head.appendChild(script); JS); } }
  1. рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ yourdomain.com?flush=1 рдкрд░ рдЬрд╛рдХрд░ рдХреИрд╢ рдлреНрд▓рд╢ рдХрд░реЗрдВ

рдиреЛрдЯ: Requirements рдХреНрд▓рд╛рд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ SilverStripe-рдорд╛рдирдХ рддрд░реАрдХрд╛ рд╣реИред Requirements::customScript() рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрдирд▓рд╛рдЗрди рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдзрд┐ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рд╡рд┐рдЬреЗрдЯ рдЖрдкрдХреЗ PageController рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдкреНрд░рддреНрдпреЗрдХ рдкреЗрдЬ рдкрд░ рд▓реЛрдб рд╣реЛред

рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдзрд┐ 2: рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ Requirements рдХрд╛ рдЙрдкрдпреЛрдЧ

рдЖрдк рдЕрдкрдиреА .ss рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╕реАрдзреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд▓рд┐рдП SilverStripe рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  1. рдЕрдкрдиреА рдереАрдо рдХреА рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ (рдЬреИрд╕реЗ, themes/yourtheme/templates/Page.ss)
  2. рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдиреАрдЪреЗ, </body> рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:
<% require javascript("https://asyntai.com/static/js/chat-widget.js") %> <script> document.addEventListener('DOMContentLoaded', function() { var scripts = document.querySelectorAll('script[src*="chat-widget.js"]'); scripts.forEach(function(s) { s.setAttribute('data-asyntai-id', 'YOUR_WIDGET_ID'); }); }); </script> </body>

рд╕реБрдЭрд╛рд╡: <% require %> рд╕рд┐рдВрдЯреИрдХреНрд╕ рдПрд╕реЗрдЯреНрд╕ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ SilverStripe рдХрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ-рд╕реНрддрд░реАрдп рддрд░реАрдХрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рдореЗрдВ рдХрд╕реНрдЯрдо рдбреЗрдЯрд╛ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╡рд┐рдЬреЗрдЯ рдЖрдИрдбреА рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди рд╕реНрдирд┐рдкреЗрдЯ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдзрд┐ 3: SilverStripe рдХреЙрдиреНрдлрд╝рд┐рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ (YAML)

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди-рд╕рдВрдЪрд╛рд▓рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЧреНрд▓реЛрдмрд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП SilverStripe рдХреЗ YAML рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  1. app/_config/app.yml рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ рдпрд╛ рдмрдирд╛рдПрдБ
  2. рдХрд╕реНрдЯрдо рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдпрд╛ рдХрдВрдЯреНрд░реЛрд▓рд░ рд╕реЗрдЯрдЕрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдЬреЗрдЯ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЬреЛрдбрд╝реЗрдВ:
# app/_config/app.yml --- Name: asyntai-chatbot After: '#rootroutes' --- SilverStripe\Core\Injector\Injector: AsyntaiChatbotExtension: class: App\Extensions\AsyntaiChatbotExtension
  1. рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдлрд╝рд╛рдЗрд▓ app/src/Extensions/AsyntaiChatbotExtension.php рдмрдирд╛рдПрдБ:
namespace App\Extensions; use SilverStripe\Core\Extension; use SilverStripe\View\Requirements; class AsyntaiChatbotExtension extends Extension { public function onAfterInit() { Requirements::customScript(" var script = document.createElement('script'); script.src = 'https://asyntai.com/static/js/chat-widget.js'; script.setAttribute('data-asyntai-id', 'YOUR_WIDGET_ID'); script.async = true; document.head.appendChild(script); "); } }
  1. app/_config/app.yml рдореЗрдВ рдЕрдкрдиреЗ PageController рдкрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд╛рдЧреВ рдХрд░реЗрдВ:
PageController: extensions: - App\Extensions\AsyntaiChatbotExtension
  1. рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреИрд╢ рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ?flush=1 рдЪрд▓рд╛рдПрдБ

рдиреЛрдЯ: YAML рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдореЙрдбреНрдпреВрд▓рд░ SilverStripe рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред рдпрд╣ рдЖрдкрдХреЗ рдЪреИрдЯрдмреЙрдЯ рдПрдХреАрдХрд░рдг рдХреЛ рдЖрдкрдХреЗ рдореБрдЦреНрдп рдХрдВрдЯреНрд░реЛрд▓рд░ рд▓реЙрдЬрд┐рдХ рд╕реЗ рдЕрд▓рдЧ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рдмрджрд▓реЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рд╕рдХреНрд╖рдо рдпрд╛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред

рдЪрд░рдг 3: рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ

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

рд╡рд┐рдЬреЗрдЯ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛? рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рд╕рд╛рдЗрдЯ URL рдХреЗ рдЕрдВрдд рдореЗрдВ ?flush=1 рдЬреЛрдбрд╝рдХрд░ рдХреИрд╢ рдлреНрд▓рд╢ рдХрд┐рдпрд╛ рд╣реИред рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдЖрдкрдиреЗ YOUR_WIDGET_ID рдХреЛ рдбреИрд╢рдмреЛрд░реНрдб рд╕реЗ рдЕрдкрдиреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рдЬреЗрдЯ рдЖрдИрдбреА рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдХреИрд╢ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ рдпрд╛ рдЗрдирдХреЙрдЧреНрдирд┐рдЯреЛ рдореЛрдб рдореЗрдВ рджреЗрдЦреЗрдВред рдХрд┐рд╕реА рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрдВрд╕реЛрд▓ (F12) рдЦреЛрд▓реЗрдВред рдпрджрд┐ Requirements рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ PageController рдХрд╛ init() рдореЗрдердб рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред