Быстрый старт
Перед началом создания скилла убедитесь, что у Вас установлены Go и Docker.
Дополнительно
Инструкция по установке Go находится на сайте go.dev
Инструкция по установке Docker находится на сайте docs.docker
Первый шаг: установка генератора
go install github.com/ThCompiler/go_game_constractor/scg@latest
Второй шаг: создание конфигурационного файла
Создать и зайти в директорию проекта:
mkdir dir_name
cd dir_name
Инициализировать Go-приложение:
go mod init skill_name
Скилл описывается в YAML файле (поддерживается также XML и JSON формат).
Создать в директории проекта конфигурационный файл:
touch skill.yml
Пример: конфигурационный файл для echo-игры, повторяющей реплики пользователя.
name: 'echo_game'
startScene: "hello"
goodByeCommand: "GoodBye"
goodByeScene: "goodbye"
script:
goodbye:
text:
text: "GoodBye"
tts: "GoodBye"
nextScenes:
- 'goodbye'
isEnd: true
hello:
text:
text: "Hello boy."
tts: "Hello boy."
values:
number: 'int64'
nextScene: 'echo'
isInfoScene: true
error:
scene: "goodbye"
echo:
text:
text: "I will Repeat you word"
tts: "I will Repeat you word"
nextScenes:
- 'echoRepeat'
context:
saveValue:
name: 'sayed'
type: 'string'
matchers:
- name: 'any'
toScene: 'echoRepeat'
error:
base: "number"
echoRepeat:
text:
text: "You say {userText}"
tts: "You say {userText}"
values:
userText:
type: 'string'
fromContext: 'sayed'
nextScenes:
- 'echoRepeat'
context:
saveValue:
name: 'sayed'
type: 'string'
matchers:
- name: 'any'
toScene: 'echoRepeat'
error:
base: "number"
Дополнительно
Описание полей находится в разделе "Генератор"
Третий шаг: генерация скилла
Сгенерировать сервер со скиллом:
scg --output=./ --script=./skill.yml --http-server
В директории проекта появится папка scg:
- scg
- cmd
- internal
- texts
- store
- redis
- storesaver
- consts
- textsname
- manager
- usecase
- skill_name
- controller
- http
- v1
- script
- errors
- matchers
- payloads
- scenes
- config
- resources
- pkg
- logger
- str
- httpserver
- ginutilits
Четвёртый шаг: добавление логики с использованием библиотеки
Если Вам требуется реализация дополнительной логики, необходимо установить отсутствующие пакеты:
go mod tidy
scg/internal/script/scenes и добавить необходимую логику.
Пятый шаг: настройка хранилища текстов
Тексты находятся в In-Memory хранилище Redis. Для его запуска следует воспользоваться Docker'ом:
# Создать volume для данных из Redis'а, чтобы обеспечить их сохранение при перезапуске хранилища
sudo docker volume create tredis-vol
# Запустить Redis на 6380 порту
sudo docker run -v tredis-vol:/data -p 6380:6379 --name tredis -d redis redis-server --save 60 1 --loglevel warning
Шестой шаг: сборка и запуск сервиса со скиллом
Собрать сервис в папку /bin:
go build -o bin/skill ./scg/cmd
Приложение запускается на 8080 порту, убедитесь, что он свободен, или замените порт сервера в файле scg/config/config.yml:
http:
port: 'YOU_PORT'
Запустить хранилище Redis с указанием url:
REDIS_URL=redis://localhost:6380 ./bin/skill
Поздравляем, Вы создали свою первый скилл для голосового ассистента Маруся
hint
Для запуска скилла Вы можете воспользоваться отладчиком от Маруси, указав в нём
url для Webhookа в формате http://localhost:8080/v1/skill_name.