---
title: Создание навыка Алисы
description: 'Пример создания навыка Алисы на двух языках программирования: Python и Node.js. В качестве примера будет создан навык Алисы - "Попугай", который повторяет все, что ему написал или сказал пользователь.'
keywords:
  - создание навыка алисы
  - навык алисы
  - пример создания навыка алисы
---

# Создание навыка Алисы

В качестве примера будет создан навык <q>Попугай</q>, который повторяет все, что ему написал или сказал пользователь. Пример реализован на двух языках программирования: Python и Node.js.

Чтобы добавить навык Алисы на основе [функции](../concepts/function.md):
1. [Подготовьте код навыка](#prepare-code).
1. [Создайте функцию](#create-function).
1. [Создайте версию функции](#create-version). 
1. [Добавьте ссылку на функцию в навык Алисы](#add-link).
1. [Протестируйте работу навыка](#test).

Подробнее о [разработке навыка Алисы](https://yandex.ru/dev/dialogs/alice/doc/development-docpage/#test__dev-cycle).

## Подготовьте код для навыка Алисы {#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. Нажмите кнопку **Создать ресурс**.
1. Выберите **Функция**.
1. Введите имя функции.

    {% include [name-format](../../_includes/name-format.md) %}

1. Нажмите кнопку **Создать**.

## Создайте версию функции {#create-version}

Выберите язык программирования и создайте [версию функции](../concepts/function.md#version).

{% list tabs %}

- Python

  1. В [консоли управления]({{ link-console-main }}) откройте **{{ sf-name }}** в каталоге, где вы хотите создать версию функции.
  1. Выберите функцию, для которой необходимо создать версию.
  1. В разделе **Последняя версия** нажмите кнопку **Создать в редакторе**.
  1. Задайте параметры версии:
      - **Среда выполнения:** `python37`.
      - **Таймаут, секунды:** 2.
      - **Память:** 128 МБ.
      - **Сервисный аккаунт:** Не выбрано.
  1. Подготовьте код функции:
      - **Способ:** ZIP-архив.
      - **Файл:** `parrot-py.zip`.
      - **Точка входа:** `parrot.handler`.
  1. Нажмите кнопку **Создать версию**.

- Node.js

  1. В [консоли управления]({{ link-console-main }}) откройте **{{ sf-name }}** в каталоге, где вы хотите создать версию функции.
  1. Выберите функцию, для которой необходимо создать версию.
  1. В разделе **Последняя версия** нажмите кнопку **Создать в редакторе**.
  1. Задайте параметры версии:
      - **Среда выполнения:** `nodejs12`.
      - **Таймаут, секунды:** 2.
      - **Память:** 128 МБ.
      - **Сервисный аккаунт:** Не выбрано.
  1. Подготовьте код функции:
      - **Способ:** ZIP-архив.
      - **Файл:** `parrot-js.zip`.
      - **Точка входа:** `index.handler`.
  1. Нажмите кнопку **Создать версию**.

{% endlist %}

## Добавьте ссылку на функцию в навык Алисы {#add-link}

1. Перейдите на страницу навыка Алисы в [личном кабинете](https://dialogs.yandex.ru/developer/). 
1. Откройте вкладку **Настройки**.
1. В блоке **Backend** выберите вариант **Функция в {{ yandex-cloud }}**.
1. Из выпадающего списка выберите необходимую функцию.

    {% note warning %}
    
    В списке отображаются функции, которые вы имеете право просматривать. Чтобы прикрепить функцию к навыку, вам необходимо разрешение на запуск функции. Это разрешение входит в роли [{{ roles-functions-ivoker }}](../security/index.md#serverless-functions-invoker), [{{ roles-editor}} ](../security/index.md#editor) и выше.
    
    {% endnote %}
1. Нажмите кнопку **Сохранить** внизу страницы и сохраните изменения.

## Протестируйте работу навыка {#test}

1. Откройте вкладку **Тестирование** на странице навыка в [личном кабинете](https://dialogs.yandex.ru/developer/).
1. Если все настроено правильно, в разделе **Чат** будет сообщение с приглашением начать беседу: `Hello! I'll repeat anything you say to me.`. 
1. Отправьте сообщение с любым текстом и убедитесь, что вам пришел ответ с таким же содержанием.
