Итак, вы заинтересованы в создании приложений Bixby, но не совсем уверены, как все это работает? В этом сообщении блога мы рассмотрим основы создания калькулятора в Bixby. Я расскажу о файлах и коде, которые вам понадобятся, и о том, как они взаимодействуют друг с другом. С этими советами вы сможете начать создавать свои собственные уникальные проекты, как только вы закончите.

Если вы собираетесь заняться этим проектом, я предполагаю две вещи:

  1. Вы уже загрузили Bixby с веб-сайта разработчика Bixby.
  2. У вас есть базовое понимание концепций программирования (переменных, функций, операторов if / else и т. Д.). Если вы этого не сделаете, я бы рекомендовал посмотреть Учебные видеоролики по Javascript от TheNewBoston. Его видео отлично подходят для начинающих, и изучение этих концепций сделает вас лучшим разработчиком Bixby.

Примечание. Если по какой-либо причине вам понадобится помощь в выполнении этого задания Биксби, и вы где-нибудь застрянете. Вы можете найти ссылку на мой пост на Github внизу этой страницы и скачать конечный результат. Но прежде чем делать это, постарайтесь следовать моим указаниям и узнать, как работает Биксби.

Шаг 1. В левом верхнем углу Bixby нажмите кнопку Добавить рабочую область.

Шаг 2: создайте новый идентификатор капсулы. В примере вверху показано, как он должен быть отформатирован как namespace.capsuleName.

Поскольку мы просто экспериментируем, мы будем использовать пространство имен «игровая площадка». Я просто назову CapsuleName «новым». Имя капсулы необязательно называть новым, вы можете называть его как хотите. Но я бы порекомендовал назвать его «новым». Назвав его, нажмите кнопку Создать.

Шаг 3. В вашем новом проекте появятся три элемента. Две пустые папки, которые называются «код» и «ресурсы», и файл capsule.bxb, содержащий имя вашего идентификатора капсулы (например, игровая площадка.new из шага 2).

Нам нужно будет начать добавлять папки и файлы в нашу программу, чтобы она делала все, что мы хотим. Первое, что мне нравится делать перед тем, как я начинаю создавать что-то, - это думать обо всем, что мне нужно, чтобы проект заработал.

Например, простая команда калькулятора будет выглядеть так: 1 плюс 3.

В общем, мне нужно взять первое число (1), взять второе число (3), взять оператор (плюс) и обработать сумму двух чисел вместе (4). . Итак, я знаю, что мне нужно отслеживать все эти четыре вещи, чтобы выполнить полную команду.

Шаг 4. На родительском слое капсулы создайте папку под названием модели. Затем создайте внутри моделей папку под названием примитивы.

Именно здесь мы будем создавать так называемые «концепции». Вы можете думать о них как о типах данных и структурах данных на языке программирования.

Шаг 5. Давайте создадим все наши концепции, которые мы перечислили в шаге 3.

Щелкните правой кнопкой мыши папку с примитивами и выберите новая ›модель.

Назовите первый файл firstNumber.model.bxb, второй файл secondNumber.model.bxb, третий файл operator.model.bxb и последний. файл total.model.bxb.

Концепции, которые мы должны создать, имеют простой формат:

Если мы возьмем этот формат, концепции должны выглядеть следующим образом после того, как мы закончим их создавать:

Для firstNumberConcept, secondNumberConcept и totalConcept задано целое число, потому что мы получаем от них число. Но для operatorConcept задан текст, потому что мы получаем из него текст («плюс», «минус», «умноженный» и т. Д.).

Шаг 6. Теперь, когда мы сделали наши примитивы, давайте продолжим и настроим нашу папку / файл действий. Внутри папки модели создайте папку под названием действия. Затем создайте новую модель внутри действий под названием grabTotal.model.bxb.

Вы можете спросить: «Почему бы просто не поместить этот файл модели grabTotal в папку с примитивами»? Разница между примитивами и действиями состоит в том, что примитивы определяют, что есть, а действия определяют, что делают. Таким образом важно организовать свои папки.

Пришло время заполнить наш файл grabTotal.model.bxb кодом.

Структура этого действия довольно проста. Сначала мы устанавливаем его как действие и даем ему имя grabTotal (строка 1), даем ему описание, объясняющее действие (строка 2), сообщаем ему, что мы собираем вещи (строка 3), сообщая ему, какие входные данные собирать ( строки 4–15) (firstNumber, secondNumber и оператор), объясняя, что этот тип действия является вычислением (строка 17), и заканчивая его возвратом вывода, который предоставят три входа (строка 16).

Шаг 7. Итак, теперь мы собираемся написать некоторый Javascript, чтобы начать комбинировать все созданные нами примитивы.

Щелкните правой кнопкой мыши папку code и выберите новый- ›Action Javascript. Назовите файл grabTotal.js. Вы должны увидеть что-то вроде этого:

Это дает нам шаблон, в который мы можем добавлять наши модели. Давайте напишем простую функцию Javascript для обработки 1 плюс 3.

Супер простой код. Он просто говорит : «Если вы найдете слово« плюс », смешайте два числа вместе и верните сумму. Если нет, верните -5000 дюймов.

Шаг 8. Мы почти готовы к тестированию нашего проекта. Но нам нужно добавить еще одну вещь. Нам нужно создать конечную точку. Название в значительной степени подразумевает, что это такое. Место, где вы реализуете фактическое действие, принимаете это действие, а затем возвращаете результат.

В папке ресурсы щелкните ее правой кнопкой мыши и создайте новую папку с именем en. Затем щелкните правой кнопкой мыши конец и выберите новые- ›Конечные точки. Я только что назвал свой файл endpoints.bxb.

У вас получится довольно большой храм. Просто удалите все это и замените этим простым кодом:

конечная точка действия (строка 3) относится к модели внутри папки models- ›actions.

accept-inputs (строка 4) захватывает три примитива из папки models- ›primitives.

local-endpoint (строка 5) получает информацию из папки code.

Шаг 9. Наконец-то мы можем протестировать наш код. Посмотрите на нижний левый угол Биксби и найдите этот символ.

Щелчок по нему вызовет симулятор.

Здесь мы запускаем тестовые примеры в нашу программу, чтобы увидеть, все ли части соединяются.

Запишите этот тестовый пример в симулятор:

В этом тестовом примере для firstNumberConcept устанавливается значение 1, а для secondNumberConcept - 2. Также устанавливается цель - grabTotal.

Нажмите кнопку Выполнить намерение и посмотрите на результат.

Мы можем подтвердить, что заходим в наш файл grabTotal.js, но не можем успешно объединить 1 и 2. Это потому, что мы не присваиваем ему значение оператора. Обновите свое намерение {}, присвойте operatorConept значение plus и снова нажмите Выполнить намерение.

Шаг 10. Итак, наш тестовый код, который мы поместили в симулятор, работает. Но что произойдет, если мы попытаемся произнести предложение, которое сказал бы человек? Вот что происходит, когда я говорю «один плюс два»:

В этом нет смысла! Мы только что увидели, что ценности, которые мы дали ему до того, как работали, отлично!

Причина, по которой мы это наблюдаем, заключается в том, что мы не проводили для него никакого обучения. Вот с чего мы начнем тренировать программу, чтобы делать больше вещей. Щелкните правой кнопкой мыши папку en (находится внутри папки ресурсов) и выберите новый ›Обучение. Имя менять не нужно. Просто нажмите кнопку Создать.

В верхней части файла обучения вы должны увидеть раздел под названием Добавление нового обучения. Введите предложение, с помощью которого вы хотите обучить свою программу, и нажмите кнопку Добавить. Для этого мы будем тренировать нашу программу с предложением «1 плюс 2».

Нам нужно научить это предложение обрабатывать все, что мы хотим к нему применить.

В поле GOAL введите grabTotal.

Затем нажмите на цифру 1 внутри NL. Должен появиться раскрывающийся список. Примените к значению узел firstNumberConcept и нажмите кнопку Готово.

Убедитесь, что вы применили secondNumberConcept к 2 и operatorConcept к plus . После того, как вы применили концепцию к каждому значению, нажмите кнопку компиляции и снова проверьте свой код.

Вы успешно создали базовый проект Bixby. Отсюда я призываю вас сделать его лучше самостоятельно. Посмотрите, сможете ли вы натренировать его для предложения типа «пять плюс десять». Может быть, даже добавить к нему дополнительные функции (умножение, деление и т. Д.) И обучить его этому.

Если вам нужно загрузить мой код, чтобы сравнить его с вашим, не стесняйтесь клонировать его из моей учетной записи Github, нажав здесь.