{"id":13799091,"url":"https://github.com/phxql/aleksa","last_synced_at":"2025-05-13T06:32:15.304Z","repository":{"id":57730759,"uuid":"81640380","full_name":"phxql/aleksa","owner":"phxql","description":"Aleksa is a small framework for writing Alexa Skills in Kotlin","archived":true,"fork":false,"pushed_at":"2020-06-23T08:19:08.000Z","size":216,"stargazers_count":35,"open_issues_count":0,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-08-04T00:03:39.157Z","etag":null,"topics":["alexa","echo","kotlin","skills"],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phxql.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"docs/contributing.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-02-11T08:22:32.000Z","updated_at":"2023-01-28T06:05:37.000Z","dependencies_parsed_at":"2022-09-13T08:41:44.099Z","dependency_job_id":null,"html_url":"https://github.com/phxql/aleksa","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phxql%2Faleksa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phxql%2Faleksa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phxql%2Faleksa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phxql%2Faleksa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phxql","download_url":"https://codeload.github.com/phxql/aleksa/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225183813,"owners_count":17434189,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alexa","echo","kotlin","skills"],"created_at":"2024-08-04T00:00:58.762Z","updated_at":"2024-11-18T13:31:52.938Z","avatar_url":"https://github.com/phxql.png","language":"Kotlin","funding_links":[],"categories":["Kotlin","SDKs/Tools"],"sub_categories":[],"readme":"# Aleksa\nAleksa is a small framework for writing [Alexa Skills](https://developer.amazon.com/alexa-skills-kit) in Kotlin.\n\n## Warning\n\n**This framework uses an old version of the Alexa SDK - skills built with it won't work with Alexa anymore.**\n\n## Usage\n\n### Maven\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ede.mkammerer.aleksa\u003c/groupId\u003e\n    \u003cartifactId\u003ealeksa\u003c/artifactId\u003e\n    \u003cversion\u003e1.2\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n### Gradle\n\n```\ncompile group: 'de.mkammerer.aleksa', name: 'aleksa', version: '1.2'\n```\n\n## Features\n\n* Embedded Jetty server\n* Configurable via code or commandline flags\n* Supports hosting multiple skills in one application\n* Convenience functions for plaintext responses, SSML, repromts, slots, sessions and more\n* Dev mode which simplifies skill testing while development\n* TLS\n* Metrics\n\n## Example\n\nSpeechlet implementation:\n\n```kotlin\n// Inherit from SpeechletV2Base, it implements SpeechletV2 and implements optional methods with empty bodies\nclass HelloWorldSpeechlet : SpeechletV2Base() {\n    override fun onIntent(requestEnvelope: SpeechletRequestEnvelope\u003cIntentRequest\u003e): SpeechletResponse {\n        val intent = requestEnvelope.request.intent\n\n        return when (intent.name) {\n        // use the tell function to create a tell response\n            \"HelloWorldIntent\" -\u003e tell(\"Hello world\")\n        // The BuiltInIntents object contains the Alexa built-in intents\n            BuiltInIntents.CANCEL, BuiltInIntents.STOP -\u003e tell(\"Good bye\")\n        // use the ask function to create an ask response\n            else -\u003e ask(\"What do you want to do?\")\n        }\n    }\n\n    override fun onLaunch(requestEnvelope: SpeechletRequestEnvelope\u003cLaunchRequest\u003e): SpeechletResponse {\n        return ask(\"Hello world. What do you want to do?\")\n    }\n}\n```\n\nApplication:\n\n```kotlin\n// Start with --help to see available commandline options\nfun main(args: Array\u003cString\u003e) {\n    // Create your speechlet\n    val speechlet = HelloWorldSpeechlet()\n    // Add the speechlet to Aleksa\n    Aleksa.addSpeechlet(path = \"/helloworld\", applicationId = \"[Your skill id]\", speechlet = speechlet)\n    // Start Aleksa with the commandline parameters of your application\n    Aleksa.start(args)\n}\n```\n\nRun it with `--interface 127.0.0.1 --port 8080 --dev`. Now you can test the\nskill with curl or some other tool at the url `http://127.0.0.1:8080/helloworld`.\n\nIf you don't specify any commandline arguments, it binds to all interfaces on port 8080 and without dev mode. \nThe dev mode disables request signature checking, timestamp checking and application id verification. It also shows some\ninformation on `/` to ease debugging infrastructure problems (reverse proxies, etc.).\n\nIf you want metrics (statistics on how often your skills are executed), add `--metrics` and check the `/metrics` endpoint. \n\nFor more examples see the [examples](examples) directory.\n\n## Commandline parameters\n\n```\n -d,--dev                          Enable development mode\n -h,--help                         Prints help\n -i,--interface \u003carg\u003e              Interface to bind to\n -ka,--key-alias \u003carg\u003e             Key alias. If not set, a key will be\n                                   automatically selected\n -kpw,--key-password \u003carg\u003e         Key password. If not set, the keystore\n                                   password will be used\n -ks,--keystore \u003carg\u003e              Location to the keystore\n -kspw,--keystore-password \u003carg\u003e   Keystore password\n -m,--metrics                      Enable metrics\n -p,--port \u003carg\u003e                   Port to bind to\n```\n\n## Documentation\n\n* [Functions](docs/functions.md)\n* [Constants](docs/constants.md)\n\n## License\n\n[LGPLv3](LICENSE)\n\n## Contributing\n\nSee [contributing guidelines](docs/contributing.md).\n\n## Maintainer\n\nMoritz Kammerer ([phXql](https://github.com/phxql))","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphxql%2Faleksa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphxql%2Faleksa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphxql%2Faleksa/lists"}