--- title: "Создание навыка Алисы" description: "Пример создания навыка Алисы на двух языках программирования: Python и Node.js. В качестве примера будет создан навык Алисы — Попугай, который повторяет все, что ему написал или сказал пользователь." keywords: - создание навыка алисы - навык алисы - пример создания навыка алисы --- # Создание навыка Алисы В качестве примера будет создан навык Попугай, который повторяет все, что ему написал или сказал пользователь. Пример реализован на двух языках программирования: Python и Node.js. Чтобы добавить навык Алисы на основе [функции](../concepts/function.md): 1. [Подготовьте облако к работе](#before-you-begin). 1. [Подготовьте код навыка](#prepare-code). 1. [Создайте функцию](#create-function). 1. [Создайте версию функции](#create-version). 1. [Добавьте ссылку на функцию в навык Алисы](#add-link). 1. [Протестируйте работу навыка](#test). Если созданные ресурсы больше не нужны, [удалите](#clear-out) их. Подробнее о [разработке навыка Алисы](https://yandex.ru/dev/dialogs/alice/doc/development-docpage/#test__dev-cycle). ## Перед началом работы {#before-you-begin} {% include [before-you-begin](../../_tutorials/_tutorials_includes/before-you-begin.md) %} ## Подготовьте код для навыка Алисы {#prepare-code} Для создания [версии](../../functions/concepts/function.md#version) функции вы можете воспользоваться одним из [форматов загрузки кода](../../functions/concepts/function.md#upload). Для примера код будет загружен в формате ZIP-архива. {% list tabs %} - Python 1. Скачайте с GitHub файл с примером: [parrot.py](https://github.com/yandex-cloud/examples/blob/master/serverless/functions/alice/python/parrot/parrot.py). 1. Создайте ZIP-архив `parrot-py.zip` с файлом `parrot.py`. - Node.js 1. Скачайте с GitHub файл с примером: [index.js](https://github.com/yandex-cloud/examples/blob/master/serverless/functions/alice/nodejs/parrot/index.js). 1. Создайте ZIP-архив `parrot-js.zip` с файлом `index.js`. {% endlist %} ## Создайте функцию {#create-function} После создания функция будет содержать только информацию о себе: имя, описание, уникальный идентификатор и т. д. Непосредственно код навыка будет добавлен в функцию на шаге [создания версии](#create-version). 1. В [консоли управления]({{ link-console-main }}) выберите каталог, в котором будет создана функция. 1. Нажмите кнопку **{{ ui-key.yacloud.iam.folder.dashboard.button_add }}**. 1. Выберите **{{ ui-key.yacloud.iam.folder.dashboard.value_serverless-functions }}**. 1. Введите имя функции. Требования к нему: {% include [name-format](../../_includes/name-format.md) %} 1. Нажмите кнопку **{{ ui-key.yacloud.common.create }}**. ## Создайте версию функции {#create-version} Выберите язык программирования и создайте [версию функции](../concepts/function.md#version). {% list tabs %} - Python 1. В [консоли управления]({{ link-console-main }}) откройте **{{ ui-key.yacloud.iam.folder.dashboard.label_serverless-functions }}** в каталоге, где вы хотите создать версию функции. 1. Выберите функцию, для которой необходимо создать версию. 1. В разделе **{{ ui-key.yacloud.serverless-functions.item.overview.label_title-latest-version }}** нажмите кнопку **{{ ui-key.yacloud.serverless-functions.item.overview.button_editor-create }}**. 1. Задайте параметры версии: * **{{ ui-key.yacloud.serverless-functions.item.editor.field_runtime }}**: `python37`. * **{{ ui-key.yacloud.serverless-functions.item.editor.field_timeout }}**: `2`. * **{{ ui-key.yacloud.serverless-functions.item.editor.field_resources-memory }}**: `128 {{ ui-key.yacloud_portal.common.units.label_megabyte }}`. * **{{ ui-key.yacloud.forms.label_service-account-select }}**: `{{ ui-key.yacloud.component.service-account-select.label_no-service-account }}`. 1. Подготовьте код функции: * **{{ ui-key.yacloud.serverless-functions.item.editor.field_method }}**: `{{ ui-key.yacloud.serverless-functions.item.editor.value_method-zip-file }}`. * **{{ ui-key.yacloud.serverless-functions.item.editor.field_file }}**: `parrot-py.zip`. * **{{ ui-key.yacloud.serverless-functions.item.editor.field_entry }}**: `parrot.handler`. 1. Нажмите кнопку **{{ ui-key.yacloud.serverless-functions.item.editor.button_deploy-version }}**. - Node.js 1. В [консоли управления]({{ link-console-main }}) откройте **{{ sf-name }}** в каталоге, где вы хотите создать версию функции. 1. Выберите функцию, для которой необходимо создать версию. 1. В разделе **Последняя версия** нажмите кнопку **Создать в редакторе**. 1. Задайте параметры версии: * **{{ ui-key.yacloud.serverless-functions.item.editor.field_runtime }}**: `nodejs12`. * **{{ ui-key.yacloud.serverless-functions.item.editor.field_timeout }}**: `2`. * **{{ ui-key.yacloud.serverless-functions.item.editor.field_resources-memory }}**: `128 {{ ui-key.yacloud_portal.common.units.label_megabyte }}`. * **{{ ui-key.yacloud.forms.label_service-account-select }}**: `{{ ui-key.yacloud.component.service-account-select.label_no-service-account }}`. 1. Подготовьте код функции: * **{{ ui-key.yacloud.serverless-functions.item.editor.field_method }}**: `{{ ui-key.yacloud.serverless-functions.item.editor.value_method-zip-file }}`. * **{{ ui-key.yacloud.serverless-functions.item.editor.field_file }}**: `parrot-js.zip`. * **{{ ui-key.yacloud.serverless-functions.item.editor.field_entry }}**: `index.handler`. 1. Нажмите кнопку **{{ ui-key.yacloud.serverless-functions.item.editor.button_deploy-version }}**. {% endlist %} ## Добавьте ссылку на функцию в навык Алисы {#add-link} 1. Перейдите на страницу навыка Алисы в [личном кабинете](https://dialogs.yandex.ru/developer/). 1. Нажмите **Создать диалог**. В открывшемся окне выберите **Навык в Алисе**. 1. На вкладке **Настройки**, в поле **Backend**, выберите вариант **Функция в {{ yandex-cloud }}**. В выпадающем списке выберите нужную функцию. {% note warning %} В списке отображаются функции, которые вы имеете право просматривать. Чтобы прикрепить функцию к навыку, вам необходимо разрешение на запуск функции. Это разрешение входит в роли [{{ roles-functions-invoker }}](../security/index.md#serverless-functions-invoker), [{{ roles-editor}} ](../security/index.md#functions-editor) и выше. {% endnote %} 1. Нажмите кнопку **Сохранить** внизу страницы и сохраните изменения. ## Протестируйте работу навыка {#test} 1. Откройте вкладку **Тестирование** на странице навыка в [личном кабинете](https://dialogs.yandex.ru/developer/). 1. Если все настроено правильно, в разделе **Чат** будет сообщение с приглашением начать беседу: `Hello! I'll repeat anything you say to me.`. 1. Отправьте сообщение с любым текстом и убедитесь, что вам пришел ответ с таким же содержанием. ## Как удалить созданные ресурсы {#clear-out} Чтобы прекратить работу навыка, [удалите](../operations/function/function-delete.md) функцию.