{"id":308437,"date":"2020-08-13T15:01:03","date_gmt":"2020-08-13T15:01:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=308437"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=308437","title":{"rendered":"\u0410\u043b\u0438\u0441\u0430 \u043d\u0430 Kotlin: \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u043c \u043a\u043e\u0434 \u0432 \u042f\u043d\u0434\u0435\u043a\u0441.\u0421\u0442\u0430\u043d\u0446\u0438\u044e"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/just_ai\/blog\/514728\/\">\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.25%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/Txl9YfQRPrw?rel=0&amp;showinfo=1&amp;start=4397&amp;hl=en-US\" style=\"border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;\" allowfullscreen scrolling=\"no\" allow=\"encrypted-media; accelerometer; gyroscope; picture-in-picture\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  \u0412 \u0438\u044e\u043d\u0435 \u042f\u043d\u0434\u0435\u043a\u0441 <a href=\"https:\/\/yandex.ru\/blog\/dialogs\/itogi-onlayn-khakatona-po-razrabotke-navykov-alisy-i-zapis-razbora-navykov\">\u0443\u0441\u0442\u0440\u043e\u0438\u043b \u043e\u043d\u043b\u0430\u0439\u043d-\u0445\u0430\u043a\u0430\u0442\u043e\u043d<\/a> \u0441\u0440\u0435\u0434\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u044b\u0445 \u043d\u0430\u0432\u044b\u043a\u043e\u0432. \u041c\u044b \u0432 Just AI \u043a\u0430\u043a \u0440\u0430\u0437 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u043b\u0438 \u043d\u0430\u0448 <a href=\"https:\/\/github.com\/just-ai\/jaicf-kotlin\">\u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u043d\u0430 Kotlin<\/a>, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043f\u0440\u0438\u043a\u043e\u043b\u044c\u043d\u044b\u0435 \u0444\u0438\u0447\u0438 \u0410\u043b\u0438\u0441\u044b. \u0418 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f README\u2026 <\/p>\n<p>  \u041e \u0442\u043e\u043c, \u043a\u0430\u043a <a href=\"https:\/\/github.com\/morfeusys\/profit-skill\">\u043f\u0430\u0440\u0430 \u0441\u043e\u0442\u0435\u043d \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430 \u043d\u0430 Kotlin<\/a> \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0430\u0441\u044c \u0432 \u042f\u043d\u0434\u0435\u043a\u0441.\u0421\u0442\u0430\u043d\u0446\u0438\u044e <a name=\"habracut\"><\/a><\/p>\n<h2>\u0410\u043b\u0438\u0441\u0430 + Kotlin = JAICF<\/h2>\n<p>  \u0423 Just AI \u0435\u0441\u0442\u044c \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0439 \u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0447\u0430\u0442\u0431\u043e\u0442\u043e\u0432 \u2014 <a href=\"https:\/\/github.com\/just-ai\/jaicf-kotlin\">JAICF<\/a>. \u041e\u043d \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 <a href=\"https:\/\/kotlinlang.org\/\">Kotlin<\/a> \u2014 \u044f\u0437\u044b\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442 JetBrains, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u043d\u0430\u043a\u043e\u043c \u0432\u0441\u0435\u043c \u0430\u043d\u0434\u0440\u043e\u0438\u0434\u0449\u0438\u043a\u0430\u043c \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u044f\u0442\u043d\u0438\u043a\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0438\u0448\u0443\u0442 \u043a\u0440\u043e\u0432\u0430\u0432\u044b\u0439 \u044d\u043d\u0442\u0435\u0440\u043f\u0440\u0430\u0439\u0437 (\u043d\u0443 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u0435\u0433\u043e \u0441 Java). \u0424\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u043d\u0430\u0446\u0435\u043b\u0435\u043d \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u044b\u0445, \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 \u0438 \u0434\u0430\u0436\u0435 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u044b\u0445 \u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>  \u0423 \u042f\u043d\u0434\u0435\u043a\u0441\u0430 \u0435\u0441\u0442\u044c \u0410\u043b\u0438\u0441\u0430 \u2014 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u043e\u0439 \u043f\u043e\u043c\u043e\u0449\u043d\u0438\u043a \u0441 \u043f\u0440\u0438\u044f\u0442\u043d\u044b\u043c \u0433\u043e\u043b\u043e\u0441\u043e\u043c \u0438 <a href=\"https:\/\/yandex.ru\/dev\/dialogs\/alice\/doc\/about-docpage\/\">\u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c API<\/a> \u0434\u043b\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u0422\u043e \u0435\u0441\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0434\u0435\u0432\u0435\u043b\u043e\u043f\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0410\u043b\u0438\u0441\u044b \u0434\u043b\u044f \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0437\u0430 \u044d\u0442\u043e \u0434\u0430\u0436\u0435 <a href=\"https:\/\/yandex.ru\/dev\/dialogs\/alice\/doc\/rewards-docpage\/\">\u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442 \u042f\u043d\u0434\u0435\u043a\u0441\u0430 \u0434\u0435\u043d\u044c\u0433\u0438<\/a>.<\/p>\n<p>  \u041c\u044b, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, <a href=\"https:\/\/yandex.ru\/dev\/dialogs\/alice\/doc\/quickstart-kotlin-docpage\/\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u0443\u0436\u0438\u043b\u0438 JAICF \u0441 \u0410\u043b\u0438\u0441\u043e\u0439<\/a>, \u0442\u0430\u043a \u0447\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430\u0432\u044b\u043a\u0438 \u043d\u0430 Kotlin. \u0418 \u0432\u043e\u0442 \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442.<\/p>\n<h2>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u2192 \u0412\u0435\u0431\u0445\u0443\u043a \u2192 \u0414\u0438\u0430\u043b\u043e\u0433<\/h2>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/a7\/ed\/dc\/a7eddcmryfv_7zxbu3cezn6qghy.png\"\/><br \/>  \u041b\u044e\u0431\u043e\u0439 \u0410\u043b\u0438\u0441\u0438\u0439 \u043d\u0430\u0432\u044b\u043a \u2014 \u044d\u0442\u043e \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u043e\u0439 \u0434\u0438\u0430\u043b\u043e\u0433 \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0438 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u043c \u043f\u043e\u043c\u043e\u0449\u043d\u0438\u043a\u043e\u043c. \u0414\u0438\u0430\u043b\u043e\u0433 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 JAICF \u0432 \u0432\u0438\u0434\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0442\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435-\u0432\u0435\u0431\u0445\u0443\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u042f\u043d\u0434\u0435\u043a\u0441.\u0414\u0438\u0430\u043b\u043e\u0433\u0430\u0445.<\/p>\n<h2>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439<\/h2>\n<p>  \u0412\u043e\u0437\u044c\u043c\u0435\u043c \u043d\u0430\u0432\u044b\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u0438 \u0434\u043b\u044f \u0445\u0430\u043a\u0430\u0442\u043e\u043d\u0430. \u041e\u043d \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u043a\u0443\u043f\u043a\u0430\u0445 \u0432 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430\u0445. \u0421\u043f\u0435\u0440\u0432\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435, \u043a\u0430\u043a \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<p>  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/zq\/yj\/jb\/zqyjjbkbuirexlkq9ivuyelbuvy.gif\" width=\"300\" height=\"650\" align=\"left\"\/><br \/>  \u0422\u0443\u0442 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0443 \u0410\u043b\u0438\u0441\u044b \u2014 <i>\u201c\u0421\u043a\u0430\u0436\u0438 \u0447\u0442\u043e \u0432\u044b\u0433\u043e\u0434\u043d\u0435\u0435 \u2014 \u0441\u0442\u043e\u043b\u044c\u043a\u043e-\u0442\u043e \u0440\u0443\u0431\u043b\u0435\u0439 \u0437\u0430 \u0442\u0430\u043a\u043e\u0435-\u0442\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043b\u0438 \u0441\u0442\u043e\u043b\u044c\u043a\u043e-\u0442\u043e \u0437\u0430 \u0442\u0430\u043a\u043e\u0435?\u201d<\/i><\/p>\n<p>  \u0410\u043b\u0438\u0441\u0430 \u0442\u0443\u0442 \u0436\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043d\u0430\u0448 \u043d\u0430\u0432\u044b\u043a (\u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u201c\u0427\u0442\u043e \u0432\u044b\u0433\u043e\u0434\u043d\u0435\u0435\u201d) \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0432 \u043d\u0435\u0433\u043e \u0432\u0441\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u2014 <a href=\"https:\/\/yandex.ru\/dev\/dialogs\/alice\/doc\/nlu-docpage\/\">\u0438\u043d\u0442\u0435\u043d\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0435\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430<\/a>.<\/p>\n<p>  \u041d\u0430\u0432\u044b\u043a, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0440\u0435\u0430\u0433\u0438\u0440\u0443\u0435\u0442 \u043d\u0430 \u0438\u043d\u0442\u0435\u043d\u0442, \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442. \u0410\u043b\u0438\u0441\u0430 \u043f\u0440\u043e\u0438\u0437\u043d\u043e\u0441\u0438\u0442 \u043e\u0442\u0432\u0435\u0442 \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430\u0432\u044b\u043a \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u0435\u0441\u0441\u0438\u044e (\u044d\u0442\u043e \u0443 \u043d\u0438\u0445 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u201c\u043e\u0434\u043d\u043e\u043f\u0440\u043e\u0445\u043e\u0434\u043d\u044b\u0439 \u043d\u0430\u0432\u044b\u043a\u201d).<\/p>\n<p>  \u0412\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u043d\u0435\u0445\u0438\u0442\u0440\u044b\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u043e\u0434\u043d\u0430\u043a\u043e, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0442\u043e\u0432\u0430\u0440 \u0432\u044b\u0433\u043e\u0434\u043d\u0435\u0435 \u0434\u0440\u0443\u0433\u043e\u0433\u043e. \u041d\u0443 \u0438 \u0437\u0430\u043e\u0434\u043d\u043e \u0432\u044b\u0438\u0433\u0440\u0430\u0442\u044c \u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0443\u044e \u043a\u043e\u043b\u043e\u043d\u043a\u0443 \u043e\u0442 \u042f\u043d\u0434\u0435\u043a\u0441\u0430.<\/p>\n<p>  <br clear=\"all\"\/>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041a\u0430\u043a \u0436\u0435 \u043e\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0430 Kotlin?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"kotlin\">object MainScenario: Scenario() {     init {         state(&quot;profit&quot;) {             activators {                 intent(&quot;CALCULATE.PROFIT&quot;)             }              action {                 activator.alice?.run {                     val a1 = slots[&quot;first_amount&quot;]                     val a2 = slots[&quot;second_amount&quot;]                     val p1 = slots[&quot;first_price&quot;]                     val p2 = slots[&quot;second_price&quot;]                     val u1 = slots[&quot;first_unit&quot;]                     val u2 = slots[&quot;second_unit&quot;] ?: firstUnit                      context.session[&quot;first&quot;] = Product(a1?.value?.double ?: 1.0, p1!!.value.int, u1!!.value.content)                     context.session[&quot;second&quot;] = p2?.let {                         Product(a2?.value?.double ?: 1.0, p2.value.int, u2!!.value.content)                     }                      reactions.go(&quot;calculate&quot;)                 }             }              state(&quot;calculate&quot;) {                 action {                     val first = context.session[&quot;first&quot;] as? Product                     val second = context.session[&quot;second&quot;] as? Product                      if (second == null) {                         reactions.say(&quot;\u0410 \u0441 \u0447\u0435\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c?&quot;)                     } else {                         val profit = try {                             ProfitCalculator.calculateProfit(first!!, second)                         } catch (e: Exception) {                             reactions.say(&quot;\u0422\u0443\u0442 \u0441\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0435 \u043c\u043e\u0433\u0443, \u0438\u0437\u0432\u0438\u043d\u0438\u0442\u0435. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437\u043e\u043a.&quot;)                             return@action                         }                          if (profit == null || profit.percent == 0) {                             reactions.say(&quot;\u0422\u0443\u0442 \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u0432 \u0446\u0435\u043d\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435\u0442.&quot;)                         } else {                             val variant = when {                                 profit.product === first -&gt; &quot;\u041f\u0435\u0440\u0432\u044b\u0439&quot;                                 else -&gt; &quot;\u0412\u0442\u043e\u0440\u043e\u0439&quot;                             }                              var reply = &quot;$variant \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0432\u044b\u0433\u043e\u0434\u043d\u0435\u0435 &quot;                              reply += when {                                 profit.percent &lt; 10 -&gt; &quot;\u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043d\u0430 ${profit.percent}%.&quot;                                 profit.percent &lt; 100 -&gt; &quot;\u043d\u0430 ${profit.percent}%.&quot;                                 else -&gt; &quot;\u043d\u0430 \u0446\u0435\u043b\u044b\u0445 ${profit.percent}%.&quot;                             }                              context.client[&quot;last_reply&quot;] = reply                             reactions.say(reply)                             reactions.alice?.endSession()                         }                     }                 }             }              state(&quot;second&quot;) {                 activators {                     intent(&quot;SECOND.PRODUCT&quot;)                 }                  action {                     activator.alice?.run {                         val a2 = slots[&quot;second_amount&quot;]                         val p2 = slots[&quot;second_price&quot;]                         val u2 = slots[&quot;second_unit&quot;]                          val first = context.session[&quot;first&quot;] as Product                         context.session[&quot;second&quot;] = Product(                             a2?.value?.double ?: 1.0,                             p2!!.value.int,                             u2?.value?.content ?: first.unit                         )                          reactions.go(&quot;..\/calculate&quot;)                     }                 }             }         }          fallback {             reactions.say(&quot;\u0418\u0437\u0432\u0438\u043d\u0438\u0442\u0435, \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u043e. &quot; +                     &quot;\u041c\u043e\u0436\u043d\u043e \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0442\u0430\u043a: \u0447\u0442\u043e \u0432\u044b\u0433\u043e\u0434\u043d\u0435\u0435, 2 \u043b\u0438\u0442\u0440\u0430 \u0437\u0430 230 \u0440\u0443\u0431\u043b\u0435\u0439 \u0438\u043b\u0438 3 \u043b\u0438\u0442\u0440\u0430 \u0437\u0430 400.&quot;)         }     } } <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  <i>\u0421 \u043f\u043e\u043b\u043d\u044b\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f <a href=\"https:\/\/github.com\/morfeusys\/profit-skill\/blob\/master\/src\/main\/kotlin\/com\/justai\/jaicf\/profit\/scenario\/MainScenario.kt\">\u043c\u043e\u0436\u043d\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u043d\u0430 Github<\/a>.<\/i><\/p>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442 <a href=\"https:\/\/github.com\/just-ai\/jaicf-kotlin\/blob\/master\/core\/src\/main\/kotlin\/com\/justai\/jaicf\/builder\/ScenarioBuilder.kt\">\u043a\u043b\u0430\u0441\u0441 Scenario<\/a> \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 JAICF. \u041f\u043e \u0441\u0443\u0442\u0438, \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u2014 \u044d\u0442\u043e \u0441\u0442\u0435\u0439\u0442-\u043c\u0430\u0448\u0438\u043d\u0430, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0443\u0437\u0435\u043b \u2014 \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u0438\u0430\u043b\u043e\u0433\u0430. \u0422\u0430\u043a \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0434\u0438\u0430\u043b\u043e\u0433\u0430 \u2014 \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u0430\u044f \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>  <i>\u0421\u043a\u0430\u0436\u0435\u043c, \u043e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 \u0444\u0440\u0430\u0437\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0434\u0438\u0430\u043b\u043e\u0433\u0430. \u041a\u0441\u0442\u0430\u0442\u0438, \u044d\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u043f\u0440\u0438\u0447\u0438\u043d, \u043f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0438\u043c\u0435\u043d\u043d\u043e Kotlin \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 \u2014 \u043e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c <a href=\"https:\/\/github.com\/just-ai\/jaicf-kotlin\/wiki\/Scenario-DSL\">\u043b\u0430\u043a\u043e\u043d\u0438\u0447\u043d\u044b\u0439 DSL<\/a>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0443\u0434\u043e\u0431\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0442\u0430\u043a\u0438\u043c\u0438 \u0432\u043e\u0442 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u0434\u0440\u0443\u0433 \u0432 \u0434\u0440\u0443\u0433\u0430 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430\u043c\u0438 \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438.<\/i><\/p>\n<p>  \u0421\u0442\u0435\u0439\u0442 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/github.com\/just-ai\/jaicf-kotlin\/wiki\/Natural-Language-Understanding\">\u0430\u043a\u0442\u0438\u0432\u0430\u0442\u043e\u0440\u0430<\/a> (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <i>\u0438\u043d\u0442\u0435\u043d\u0442\u0430<\/i>) \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0432 \u043d\u0435\u0433\u043e \u0431\u043b\u043e\u043a \u043a\u043e\u0434\u0430 \u2014 <a href=\"https:\/\/github.com\/just-ai\/jaicf-kotlin\/wiki\/action\">\u044d\u043a\u0448\u043d<\/a>. \u0410 \u0432\u043d\u0443\u0442\u0440\u0438 \u044d\u043a\u0448\u0435\u043d\u0430 \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0441\u0435 \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e, \u043d\u043e \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u2014 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u0438\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u0434\u043e\u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c. \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/github.com\/just-ai\/jaicf-kotlin\/wiki\/reactions\">\u0440\u0435\u0430\u043a\u0446\u0438\u0439<\/a>. <i>\u041f\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0439\u0448\u0435\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u044d\u0442\u043e\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438.<\/i><\/p>\n<h2>\u0418\u043d\u0442\u0435\u043d\u0442\u044b \u0438 \u0441\u043b\u043e\u0442\u044b<\/h2>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/64\/oh\/jz\/64ohjzynucedesq__57az2zjklo.png\"\/><\/p>\n<p>  <b>\u0418\u043d\u0442\u0435\u043d\u0442<\/b> \u2014 \u044d\u0442\u043e <i>\u044f\u0437\u044b\u043a\u043e\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0435<\/i> \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u044d\u0442\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>  <a href=\"https:\/\/yandex.ru\/dev\/dialogs\/alice\/doc\/nlu-docpage\/\">\u0410\u043b\u0438\u0441\u0430 \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043d\u0430\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0438\u043d\u0442\u0435\u043d\u0442\u044b<\/a> \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043d\u0430\u0432\u044b\u043a\u0430, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c \u043e\u043f\u0438\u0448\u0435\u0442\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0443. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043e\u043d\u0430 \u0443\u043c\u0435\u0435\u0442 \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c \u0438\u0437 \u0444\u0440\u0430\u0437\u044b \u043d\u0443\u0436\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0432\u0438\u0434\u0435 <b>\u0441\u043b\u043e\u0442\u043e\u0432<\/b> \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0446\u0435\u043d\u0443 \u0438 \u043e\u0431\u044a\u0435\u043c \u0442\u043e\u0432\u0430\u0440\u0430, \u043a\u0430\u043a \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u044d\u0442\u043e \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e, \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0430\u043a\u0443\u044e <b>\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0443<\/b> \u0438 <b>\u0441\u043b\u043e\u0442\u044b<\/b>. <a href=\"https:\/\/github.com\/morfeusys\/profit-skill\/blob\/master\/nlu\/intents\/CALCULATE.PROFIT.txt\">\u0412\u043e\u0442 \u0442\u0430\u043a\u0430\u044f \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0430<\/a> \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0432 \u043d\u0430\u0448\u0435\u043c \u043d\u0430\u0432\u044b\u043a\u0435, \u0438 <a href=\"https:\/\/github.com\/morfeusys\/profit-skill\/blob\/master\/nlu\/entities.txt\">\u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u0435 \u0441\u043b\u043e\u0442\u044b<\/a> \u043c\u044b \u0432 \u043d\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c. \u042d\u0442\u043e \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u0448\u0435\u043c\u0443 \u043d\u0430\u0432\u044b\u043a\u0443 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043d\u0430 \u0432\u0445\u043e\u0434 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0442\u0440\u043e\u0447\u043a\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u0430 \u0443\u0436\u0435 \u044f\u0437\u044b\u043a\u043e\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0438 \u0441\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u043b\u043e\u0442\u044b \u0432\u043f\u0440\u0438\u0434\u0430\u0447\u0443 (\u0446\u0435\u043d\u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u043e\u0432\u0430\u0440\u0430 \u0438 \u0435\u0433\u043e \u043e\u0431\u044a\u0435\u043c).<\/p>\n<p>  <i>JAICF, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 <a href=\"https:\/\/github.com\/just-ai\/jaicf-kotlin\/wiki\/Natural-Language-Understanding\">\u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0434\u0432\u0438\u0436\u043e\u043a NLU<\/a> (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"http:\/\/app.jaicp.com\">Caila<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/github.com\/just-ai\/jaicf-kotlin\/tree\/master\/activators\/dialogflow\">Dialogflow<\/a>), \u043d\u043e \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0443 \u0444\u0438\u0447\u0443 \u0410\u043b\u0438\u0441\u044b, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a \u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/i><\/p>\n<h2>\u0412\u0435\u0431\u0445\u0443\u043a<\/h2>\n<p>  \u041d\u0443 \u0445\u043e\u0440\u043e\u0448\u043e, \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c. \u041a\u0430\u043a \u043d\u0430\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442?<\/p>\n<p>  \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u0430\u0434\u0435\u043f\u0442\u044b <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5\">test-driven-development<\/a> \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043e\u0446\u0435\u043d\u044f\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0432 JAICF <a href=\"https:\/\/github.com\/just-ai\/jaicf-kotlin\/wiki\/Testing\">\u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/a> \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u044b \u043b\u0438\u0447\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u0434\u0435\u043b\u0430\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0432\u0441\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0443\u043a\u0430\u043c\u0438 \u0442\u044f\u0436\u0435\u043b\u043e. \u041d\u043e \u043d\u0430\u0448 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043b\u0443\u0447\u0448\u0435 \u0441\u0440\u0430\u0437\u0443 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u0441 \u0410\u043b\u0438\u0441\u043e\u0439.<\/p>\n<p>  \u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f \u043d\u0443\u0436\u0435\u043d <b>\u0432\u0435\u0431\u0445\u0443\u043a<\/b> \u2014 \u0441\u0435\u0440\u0432\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043e\u0442 \u042f\u043d\u0434\u0435\u043a\u0441\u0430, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u0441 \u0432\u0430\u0448\u0438\u043c \u043d\u0430\u0432\u044b\u043a\u043e\u043c. \u0421\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e \u2014 \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0430\u0448\u0435\u0433\u043e \u0431\u043e\u0442\u0430 \u0438 \u043f\u043e\u0432\u0435\u0441\u0438\u0442\u044c \u043d\u0430 \u043d\u0435\u0433\u043e \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c endpoint.<\/p>\n<pre><code class=\"kotlin\">val skill = BotEngine(     model = MainScenario.model,     activators = arrayOf(         AliceIntentActivator,         BaseEventActivator,         CatchAllActivator     ) ) <\/code><\/pre>\n<p>  \u0412\u043e\u0442 \u0442\u0430\u043a \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u0430\u043c \u0431\u043e\u0442 \u2014 \u0442\u0443\u0442 \u043c\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c, \u043a\u0430\u043a\u0438\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0432 \u043d\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f, \u0433\u0434\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u043a\u0430\u043a\u0438\u0435 \u0430\u043a\u0442\u0438\u0432\u0430\u0442\u043e\u0440\u044b \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f (\u0438\u0445 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e).<\/p>\n<pre><code class=\"kotlin\">fun main() {     embeddedServer(Netty, System.getenv(&quot;PORT&quot;)?.toInt() ?: 8080) {         routing {             httpBotRouting(&quot;\/&quot; to AliceChannel(skill, useDataStorage = true))         }     }.start(wait = true) } <\/code><\/pre>\n<p>  \u0410 \u0432\u043e\u0442 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0441\u0435\u0440\u0432\u0435\u0440 \u0441 \u0432\u0435\u0431\u0445\u0443\u043a\u043e\u043c \u2014 \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 <a href=\"https:\/\/github.com\/just-ai\/jaicf-kotlin\/wiki\/Channels\">\u043a\u0430\u043d\u0430\u043b<\/a> \u043d\u0430 \u043a\u0430\u043a\u043e\u043c endpoint&#8217;\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041c\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u0442\u0443\u0442 \u0441\u0435\u0440\u0432\u0435\u0440 Ktor \u043e\u0442 JetBrains, \u043d\u043e \u0432 JAICF <a href=\"https:\/\/github.com\/just-ai\/jaicf-kotlin\/wiki\/Environments\">\u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438 \u043b\u044e\u0431\u044b\u0435 \u0434\u0440\u0443\u0433\u0438\u0435<\/a>.<\/p>\n<p>  <i>\u0422\u0443\u0442 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0435\u0449\u0435 \u043e\u0434\u043d\u0443 \u0444\u0438\u0447\u0443 \u0410\u043b\u0438\u0441\u044b \u2014 <a href=\"https:\/\/yandex.ru\/dev\/dialogs\/alice\/doc\/session-persistence-docpage\/\">\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u0435\u0435 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445<\/a> (\u043e\u043f\u0446\u0438\u044f <b>useDataStorage<\/b>). JAICF \u0431\u0443\u0434\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043e\u0442\u0442\u0443\u0434\u0430 <a href=\"https:\/\/github.com\/just-ai\/jaicf-kotlin\/wiki\/context\">\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442<\/a> \u0438 \u0432\u0441\u0435, \u0447\u0442\u043e \u0442\u0443\u0434\u0430 \u0437\u0430\u043f\u0438\u0448\u0435\u0442 \u043d\u0430\u0448 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439. \u0421\u0435\u0440\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e.<\/i><\/p>\n<h2>\u0414\u0438\u0430\u043b\u043e\u0433<\/h2>\n<p>  \u041d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u0441\u0435 \u044d\u0442\u043e \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c! \u0421\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 URL, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438\u0437 \u0410\u043b\u0438\u0441\u044b \u0434\u043e\u043b\u0435\u0442\u0430\u043b\u0438 \u0434\u043e \u043d\u0430\u0448\u0435\u0433\u043e \u0432\u0435\u0431\u0445\u0443\u043a\u0430 \u0438\u0437 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0442\u0443\u043b <a href=\"https:\/\/ngrok.com\/\">ngrok<\/a>, \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0442\u0438\u043f\u0430 <code>ngrok http 8080<\/code><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/9n\/hd\/mu\/9nhdmu7lddy-jr_k71vwkjrt97c.gif\"\/><\/p>\n<p>  <i>\u0412\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u043b\u0435\u0442\u0430\u0442\u044c \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u0432\u0430\u0448 \u041f\u041a \u2014 \u0442\u0430\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0435\u0431\u0430\u0436\u0438\u0442\u044c \u0438 \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u0434.<\/i><\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 https URL \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0435\u0433\u043e \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043d\u043e\u0432\u043e\u0433\u043e <a href=\"https:\/\/yandex.ru\/dev\/dialogs\/alice\/doc\/test-docpage\/\">\u0410\u043b\u0438\u0441\u044c\u0435\u0433\u043e \u0434\u0438\u0430\u043b\u043e\u0433\u0430 \u043d\u0430 \u042f\u043d\u0434\u0435\u043a\u0441. \u0414\u0438\u0430\u043b\u043e\u0433\u0430\u0445<\/a>. \u0422\u0430\u043c \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0438\u0430\u043b\u043e\u0433 \u0442\u0435\u043a\u0441\u0442\u043e\u043c. \u041d\u043e \u0435\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u0441 \u043d\u0430\u0432\u044b\u043a\u043e\u043c \u0433\u043e\u043b\u043e\u0441\u043e\u043c, \u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c <a href=\"https:\/\/yandex.ru\/dev\/dialogs\/alice\/doc\/publish-docpage\/#general__access-type\">\u0410\u043b\u0438\u0441\u0430 \u0443\u043c\u0435\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0435 \u043d\u0430\u0432\u044b\u043a\u0438<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430 \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u043c. \u0422\u0430\u043a \u043c\u043e\u0436\u043d\u043e, \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u044f \u0434\u043e\u043b\u0433\u0443\u044e \u043c\u043e\u0434\u0435\u0440\u0430\u0446\u0438\u044e \u043e\u0442 \u042f\u043d\u0434\u0435\u043a\u0441\u0430, \u0443\u0436\u0435 \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0437\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u0442\u044c \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u043d\u0430\u0432\u044b\u043a\u043e\u043c \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0410\u043b\u0438\u0441\u044b \u0438\u043b\u0438 \u0441 \u0443\u043c\u043d\u043e\u0439 \u043a\u043e\u043b\u043e\u043d\u043a\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/fa\/nv\/al\/fanvaltyh2dpbfkboi5as5auh3a.gif\"\/><\/p>\n<h2>\u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f<\/h2>\n<p>  \u041c\u044b \u0432\u0441\u0435 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u043b\u0438 \u0438 \u0433\u043e\u0442\u043e\u0432\u044b \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0432\u044b\u043a \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0410\u043b\u0438\u0441\u044b! \u0427\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043d\u0430\u0448 \u0432\u0435\u0431\u0445\u0443\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u0430\u0445\u043e\u0441\u0442\u0438\u0442\u044c\u0441\u044f \u0433\u0434\u0435-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0430 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0441 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u043c URL. \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 JAICF \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0433\u0434\u0435 \u0443\u0433\u043e\u0434\u043d\u043e, \u0433\u0434\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f Java (\u0445\u043e\u0442\u044c \u043d\u0430 Android \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u0435). <\/p>\n<p>  \u041d\u0430\u0448 \u043f\u0440\u0438\u043c\u0435\u0440 \u043c\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043d\u0430 <a href=\"https:\/\/github.com\/just-ai\/jaicf-kotlin\/wiki\/Heroku\">Heroku<\/a>. \u041f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043d\u043e\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043b\u0438 \u0432 \u043d\u0435\u043c <a href=\"https:\/\/github.com\/morfeusys\/profit-skill\">\u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u0448\u0435\u0433\u043e Github-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f<\/a>, \u0433\u0434\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043a\u043e\u0434 \u043d\u0430\u0432\u044b\u043a\u0430. Heroku \u0441\u0430\u043c \u0432\u0441\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432. \u041d\u0430\u043c \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 URL \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u042f\u043d\u0434\u0435\u043a\u0441. \u0414\u0438\u0430\u043b\u043e\u0433\u043e\u0432 \u0438 <a href=\"https:\/\/yandex.ru\/dev\/dialogs\/alice\/doc\/publish-docpage\/\">\u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u043e \u043d\u0430 \u043c\u043e\u0434\u0435\u0440\u0430\u0446\u0438\u044e<\/a>.<\/p>\n<h2>\u0418\u0442\u043e\u0433\u043e<\/h2>\n<p>  \u042d\u0442\u043e\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u043f\u043e \u0441\u043b\u0435\u0434\u0430\u043c <a href=\"https:\/\/yandex.ru\/blog\/dialogs\/itogi-onlayn-khakatona-po-razrabotke-navykov-alisy-i-zapis-razbora-navykov\">\u042f\u043d\u0434\u0435\u043a\u0441\u043e\u0432\u043e\u0433\u043e \u0445\u0430\u043a\u0430\u0442\u043e\u043d\u0430<\/a>, \u0433\u0434\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u201c<a href=\"https:\/\/dialogs.yandex.ru\/store\/skills\/197727c0-chto-vygodne\">\u0427\u0442\u043e \u0432\u044b\u0433\u043e\u0434\u043d\u0435\u0435<\/a>\u201d \u0442\u0430\u043a\u0438 \u0432\u044b\u0438\u0433\u0440\u0430\u043b \u043e\u0434\u043d\u0443 \u0438\u0437 \u0442\u0440\u0435\u0445 \u042f\u043d\u0434\u0435\u043a\u0441.\u0421\u0442\u0430\u043d\u0446\u0438\u0439! <a href=\"https:\/\/youtu.be\/Txl9YfQRPrw?t=4397\">\u0422\u0443\u0442, \u043a\u0441\u0442\u0430\u0442\u0438, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u044b\u043b\u043e<\/a>.<\/p>\n<p>  <a href=\"https:\/\/github.com\/just-ai\/jaicf-kotlin\">\u0424\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a JAICF \u043d\u0430 Kotlin<\/a> \u043f\u043e\u043c\u043e\u0433 \u043c\u043d\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043e\u0442\u0434\u0435\u0431\u0430\u0436\u0438\u0442\u044c \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439, \u043d\u0435 \u0437\u0430\u043c\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u044f\u0441\u044c \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 API \u0410\u043b\u0438\u0441\u044b, \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430\u043c\u0438 \u0438 \u0431\u0430\u0437\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u044f \u0432 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 (\u043a\u0430\u043a \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u0441 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c\u0438).<\/p>\n<h3>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438<\/h3>\n<p>  \u041f\u043e\u043b\u043d\u0430\u044f \u0434\u043e\u043a\u0430 \u043f\u043e JAICF \u043b\u0435\u0436\u0438\u0442 <a href=\"https:\/\/github.com\/just-ai\/jaicf-kotlin\/wiki\">\u0437\u0434\u0435\u0441\u044c<\/a>.<br \/>  \u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043d\u0430 \u043d\u0435\u043c \u043d\u0430\u0432\u044b\u043a\u043e\u0432 \u0434\u043b\u044f \u0410\u043b\u0438\u0441\u044b <a href=\"https:\/\/github.com\/just-ai\/jaicf-kotlin\/tree\/master\/channels\/yandex-alice\">\u0442\u0443\u0442<\/a>.<br \/>  \u0421 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u043c \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0432\u044b\u043a\u0430 \u043c\u043e\u0436\u043d\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f <a href=\"https:\/\/github.com\/morfeusys\/profit-skill\">\u0442\u0430\u043c<\/a>.<\/p>\n<h2>\u0418 \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c<\/h2>\n<p>  \u041d\u0435 \u0441\u0442\u0435\u0441\u043d\u044f\u0439\u0442\u0435\u0441\u044c <a href=\"https:\/\/github.com\/just-ai\/jaicf-kotlin\/blob\/master\/CONTRIBUTING.md\">\u043a\u043e\u043d\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0442\u044c \u0432 JAICF<\/a>, \u043a\u0430\u043a \u044d\u0442\u043e <a href=\"https:\/\/github.com\/just-ai\/jaicf-kotlin\/pull\/19\">\u0443\u0436\u0435 \u0434\u0435\u043b\u0430\u044e\u0442 \u043a\u043e\u043b\u043b\u0435\u0433\u0438 \u0438\u0437 \u042f\u043d\u0434\u0435\u043a\u0441\u0430<\/a>, \u0438\u043b\u0438 <a href=\"https:\/\/github.com\/just-ai\/jaicf-kotlin\">\u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u0432\u0435\u0437\u0434\u043e\u0447\u043a\u0443 \u0432 Github<\/a>.<\/p>\n<p>  \u0410 \u0435\u0441\u043b\u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u043c\u044b \u043d\u0430 \u043d\u0438\u0445 \u0442\u0443\u0442 \u0436\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u043c <a href=\"https:\/\/join.slack.com\/t\/jaicf\/shared_invite\/zt-duq07hx2-w_c71O8BnKDCIqhSXflRjA\">\u0432 \u043d\u0430\u0448\u0435\u043c \u0443\u044e\u0442\u043d\u043e\u043c Slack<\/a>.<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/just_ai\/blog\/514728\/\"> https:\/\/habr.com\/ru\/company\/just_ai\/blog\/514728\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/just_ai\/blog\/514728\/\">\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.25%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/Txl9YfQRPrw?rel=0&amp;showinfo=1&amp;start=4397&amp;hl=en-US\" style=\"border: 0; top: 0; left: 0; width: 100%; height: 100%; position: absolute;\" allowfullscreen scrolling=\"no\" allow=\"encrypted-media; accelerometer; gyroscope; picture-in-picture\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  \u0412 \u0438\u044e\u043d\u0435 \u042f\u043d\u0434\u0435\u043a\u0441 <a href=\"https:\/\/yandex.ru\/blog\/dialogs\/itogi-onlayn-khakatona-po-razrabotke-navykov-alisy-i-zapis-razbora-navykov\">\u0443\u0441\u0442\u0440\u043e\u0438\u043b \u043e\u043d\u043b\u0430\u0439\u043d-\u0445\u0430\u043a\u0430\u0442\u043e\u043d<\/a> \u0441\u0440\u0435\u0434\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u044b\u0445 \u043d\u0430\u0432\u044b\u043a\u043e\u0432. \u041c\u044b \u0432 Just AI \u043a\u0430\u043a \u0440\u0430\u0437 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u043b\u0438 \u043d\u0430\u0448 <a href=\"https:\/\/github.com\/just-ai\/jaicf-kotlin\">\u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u043d\u0430 Kotlin<\/a>, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043f\u0440\u0438\u043a\u043e\u043b\u044c\u043d\u044b\u0435 \u0444\u0438\u0447\u0438 \u0410\u043b\u0438\u0441\u044b. \u0418 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f README\u2026 <\/p>\n<p>  \u041e \u0442\u043e\u043c, \u043a\u0430\u043a <a href=\"https:\/\/github.com\/morfeusys\/profit-skill\">\u043f\u0430\u0440\u0430 \u0441\u043e\u0442\u0435\u043d \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430 \u043d\u0430 Kotlin<\/a> \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0430\u0441\u044c \u0432 \u042f\u043d\u0434\u0435\u043a\u0441.\u0421\u0442\u0430\u043d\u0446\u0438\u044e <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-308437","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/308437","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=308437"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/308437\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=308437"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=308437"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=308437"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}