Code Monkey home page Code Monkey logo

alicenet's Introduction

Alice.NET

.NET библиотека для лёгкого и быстрого создания навыков для Алисы от Яндекса. Она уже содержит простенький веб-сервер.

Скачать из NuGet

dotnet add package AliceNet

Документация

Автоматически собранная документация тут: https://clusterm.github.io/AliceNet/

Подробнее про настройку навыков и значения переменных смотрите в документации Яндекса: https://yandex.ru/dev/dialogs/alice/doc/

Библотека явно ориентирована на русскоязычых разработчиков, поэтому все комментарии и документация на русском языке.

Как использовать

Нужно создать класс, который наследуется от класса AliceServerBase и переопределить метод HandleRequest. В этом методе нужно обработать запрос и вернуть ответ. Теперь нужно создать экземпляр класса, указав конструкторы на локальный endpoint и вызвать метод Start().

using wtf.cluster.AliceNet;
using wtf.cluster.AliceNet.Types;
using wtf.cluster.AliceNet.Types.Request.Entities;
using wtf.cluster.AliceNet.Types.Request.RequestBody;
using wtf.cluster.AliceNet.Types.Response;

namespace AliceExample
{
    internal class Program
    {
        static async Task Main(string[] args)
        {
            var server = new AliceServer("http://localhost:8080/alice/");
            server.Start();
            await Task.Delay(Timeout.InfiniteTimeSpan);
        }
    }

    internal class AliceServer(string localEndpoint) : AliceServerBase(localEndpoint, logger: null)
    {
        protected override async Task<AliceResponse> HandleRequest(AliceReqest request, CancellationToken cancellationToken = default)
        {
            if (request.Session.New)
            {
                return new AliceResponse
                {
                    Response = new ResponseBody
                    {
                        Text = "Привет, это Алиса! Скажи триста!",
                        Buttons = [
                                new Button
                                {
                                    Title = "Открыть репозиторий",
                                    Url = "https://github.com/ClusterM/AliceNet"
                                }
                            ]
                    }
                };
            }
            else if (request.RequestBody is SimpleUtterance su && su.Nlu.Entities.Any(e => e is NumberEntity n && n.Value == 300))
            {
                return new AliceResponse
                {
                    Response = new ResponseBody
                    {
                        Text = "Отсоси у тракториста!",
                        /* обходим цензуру :) */
                        Tts = "xxx <[schwa t s schwa ss ii]> у тракториста! <speaker audio=\"alice-sounds-game-win-1.opus\">"
                    }
                };
            }
            else
            {
                return new AliceResponse
                {
                    Response = new ResponseBody
                    {
                        Text = "Ну скажи триста..."
                    }
                };
            }
        }
    }
}

Можно и просто использовать библиотеку со своим веб-сервером, используя её для сериализации и десериализации запросов и ответов. Для этого используется System.Text.Json.

Поддержать

alicenet's People

Contributors

clusterm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

novopashinwm

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.