{
    "componentChunkName": "component---src-templates-doc-page-js",
    "path": "/docs/ru/common/bot_structure/sc/",
    "result": {"data":{"site":{"siteMetadata":{"title":"Gatsby-doc-engine"}},"markdownRemark":{"id":"c1c6b7b2-3cce-554a-a2b0-034ccedebefa","excerpt":"Файлы сценариев?> Файлы сценариев — это основные файлы, задающие логику работы бота. Имеют расширение .  или  — главный файл сценария чатбота, с которого…","html":"<h1>Файлы сценариев</h1>\n<hr>\n<p class='warn'>Файлы сценариев — это основные файлы, задающие логику работы бота. Имеют расширение <code class=\"language-text\">.sc</code>.</p>\n<p><code class=\"language-text\">main.sc</code> или <code class=\"language-text\">entryPoint.sc</code> — главный файл сценария чатбота, с которого начинается загрузка сценария. Файл должен находиться в папке <code class=\"language-text\">src</code>, где также могут находиться файлы с дополнительными сценариями, словари в формате <code class=\"language-text\">.csv</code> и скрипты в формате <code class=\"language-text\">.js</code>.</p>\n<p>Файл сценария включает в себя: тему, список стейтов, паттерны, подгружаемые файлы и реакции. В начале сценария можно подгрузить другие сценарии или js-файлы. Для этого используйте тег <code class=\"language-text\">require</code>:</p>\n<div class=\"gatsby-highlight\" data-language=\"sc\"><pre class=\"language-sc\"><code class=\"language-sc\"><span class=\"token keyword\">require:</span> scenarios/*.sc\n<span class=\"token keyword\">require:</span> scripts/functions.js</code></pre></div>\n<p>Сценарий работы чатбота разрабатывается на <a href=\"/1.10.3/docs/ru/JAICP_DSL/about_dsl\">языке JAICP DSL</a>. JAICP DSL (Domain Specific Language) — язык, предназначен для описания логики работы чат-бота и предоставляет удобный формат для описания конечного автомата, по которому работает чатбот.</p>\n</br>\n<h4>Структура файла</h4>\n<p>Сценарий чатбота описывается в виде текстового файла с древовидной структурой. То есть одни элементы сценария являются вложенными по отношению к другим. Эти элементы являются состояниями системы, в которые она может перейти в ходе диалога. Например, состояние приветствия или обработки номера. Такие состояния называются <a href=\"/1.10.3/docs/ru/JAICP_DSL/tags/declarative_tags/state\">стейтами</a>.</p>\n<p>Более общие стейты включают в себя стейты с конкретной тематикой. Например, в стейт с обработкой запроса на кредит может быть вложен стейт с вопросом о типе кредита.</p>\n<p class='warn'>Степень вложенности управляется отступами, подобно языкам <code class=\"language-text\">python</code> и <code class=\"language-text\">yaml</code>.</p>\n<p>Чем больше отступ, и, соответственно, правее находится элемент, тем выше его уровень вложенности, имеет больше родительских стейтов, длиннее полное имя.</p>\n<p>Например, рассмотрим фрагмент сценария:</p>\n<div class=\"gatsby-highlight\" data-language=\"sc\"><pre class=\"language-sc\"><code class=\"language-sc\"><span class=\"token keyword\">theme:</span> /BankTheme\n\n<span class=\"token keyword\">state:</span> Loan\n        \t<span class=\"token storageType\">q!:</span> * кредит* *\n        \t<span class=\"token variableParameter\">a:</span> Что вам подсказать?\n\n        \t<span class=\"token keyword\">state:</span> TakeLoan\n            \t\t<span class=\"token storageType\">q:</span> * ~оформить кредит* *\n            \t\t<span class=\"token variableParameter\">a:</span> Какой тип кредита интересен?\n\n            \t\t<span class=\"token keyword\">state:</span> LoanTypes\n                \t\t<span class=\"token storageType\">q:</span> * (авто*|~жильё|персон*) *\n                \t\t<span class=\"token variableParameter\">go!:</span> /FillTheLoanForm</code></pre></div>\n</br>\n<p>Зависимость пути до стейта от вложенности:</p>\n<table>\n<thead>\n<tr>\n<th>Стейт</th>\n<th>Полный путь</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Loan</td>\n<td><code class=\"language-text\">/BankTheme/Loan</code></td>\n</tr>\n<tr>\n<td>TakeLoan</td>\n<td><code class=\"language-text\">/BankTheme/Loan/TakeLoan</code></td>\n</tr>\n<tr>\n<td>LoanTypes</td>\n<td><code class=\"language-text\">/BankTheme/Loan/TakeLoan/LoanTypes</code></td>\n</tr>\n</tbody>\n</table>\n</br>\n<h4>Пример файла сценария</h4>\n<div class=\"gatsby-highlight\" data-language=\"sc\"><pre class=\"language-sc\"><code class=\"language-sc\"><span class=\"token keyword\">patterns:</span>\n    $hello = (салют|привет|здравствуй*|здарова|добрый (день|вечер))\n\n<span class=\"token keyword\">theme:</span> /\n\n    <span class=\"token keyword\">state:</span> Hello\n        <span class=\"token storageType\">q!:</span> $hello *\n        <span class=\"token variableParameter\">a:</span> Здравствуйте!\n        <span class=\"token variableParameter\">go!:</span> /Can I Help You?\n\n    <span class=\"token keyword\">state:</span> Can I Help You?\n        <span class=\"token variableParameter\">a:</span> Я могу вам помочь?\n\n        <span class=\"token keyword\">state:</span> Yes\n            <span class=\"token storageType\">q!:</span> * { (*можете|*можешь) * помочь } *\n            <span class=\"token storageType\">q:</span> * [думаю] (да|*можете|*можешь|надеюсь|хотелось бы) *\n            <span class=\"token variableParameter\">a:</span> Что Вас интересует?\n\n        <span class=\"token keyword\">state:</span> No\n            <span class=\"token storageType\">q:</span> * [да] [уже] (ничем|не надо|не нужно) [спасибо] *\n            <span class=\"token variableParameter\">a:</span> Хорошо. Буду рад помочь вам в следующий раз!</code></pre></div>","frontmatter":{"title":"","description":null},"headings":[{"value":"Файлы сценариев"}]}},"pageContext":{"slug":"/docs/ru/common/bot_structure/sc/","previous":{"fields":{"slug":"/docs/ru/common/bot_structure/sys_modules/"},"frontmatter":{"title":"","description":null}},"next":{"fields":{"slug":"/docs/ru/common/bot_structure/modules/"},"frontmatter":{"title":"","description":null}}}},
    "staticQueryHashes": ["1209419333"]}