/alice-kotlin-bot

Kotlin library for creating Alice's skills (Wrapper for the Yandex.Dialog API)

Primary LanguageKotlin

alice-kotlin-bot

This is library for work with Alice Yandex.Dialog API. Check the simple implemetation of the "Buy the Elephant" Game

Usage

The alice-kotlin-bot is using ktor library under the hood. By default it is looking at 0.0.0.0 host with port 8080. For start working with alice-kotlin-bot you should add needed engine to your project dependency and set up webhook url:

alice {
    webhook = "alice-webhook"
    applicationEngineFactory = Netty
    ...
}

All events will dispatch by Dispatcher. Now it allow you to handle text messages and button click. Also it provides event when user start discussion by welcome handler:

alice {
    webhook = "alice-webhook"
    applicationEngineFactory = Netty
    dispatch {
        welcome {
            "Привет давай поиграем в игру \"Купи Слона\"".wrapToResponseData()
        }
        onClick(title = END_SESSION_BUTTON_TEXT) {
            ResponseData(text = "Ну чтож, так и быть. Приходи в следующий раз.", endSession = true)
        }
        default {
            ResponseData(text = "Все говорят \"${it.request.originalUtterance}\", а ты купи слона",
                buttons = listOf(Button(title = END_SESSION_BUTTON_TEXT)))
            }
        }
}

If there is no handler which can handle event, default handler will be called.

Each handler must return ResponseData. You can simply wrap text or buttons to the ResponseData by using wrappers

For debugging without deploy you can use library which will retranslate your localhost to public server. For example ngrok

Implementation

  • Add the JitPack repository to your root build.gradle file:
repositories {
    maven { url "https://jitpack.io" }
}
  • Add the code to your module's build.gradle file:
dependencies {
    implementation 'com.github.SavinMike:alice-kotlin-bot:0.1.0'
}