aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorAlexander Kiryukhin <a.kiryukhin@mail.ru>2020-02-24 23:32:19 +0300
committerAlexander Kiryukhin <a.kiryukhin@mail.ru>2020-02-24 23:32:19 +0300
commit9b2032538ad45982fcf4acb5e35ec3f970c18deb (patch)
tree2bfd5f8cd4f1594df200a27c1362338e04832569 /README.md
parent6e716c0eb8958c5d7700e0712a175e8e98d0ba0a (diff)
Added readmeHEADmaster
Added CI files
Diffstat (limited to 'README.md')
-rw-r--r--README.md78
1 files changed, 75 insertions, 3 deletions
diff --git a/README.md b/README.md
index 80a5d4e..cdfd7a3 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,79 @@
# Marusia API [![GoDoc](https://godoc.org/github.com/neonxp/marusia?status.svg)](https://godoc.org/github.com/neonxp/marusia)
-Skills SDK for [Marusia](http://marusia.mail.ru/) voice assistant.
+Неофициальное SDK навыков для голосового ассистента [Маруси](http://marusia.mail.ru/).
-Documentation: [http://godoc.org/github.com/neonxp/marusia](http://godoc.org/github.com/neonxp/marusia)
+Документация: [https://pkg.go.dev/github.com/neonxp/marusia](https://pkg.go.dev/github.com/neonxp/marusia)
-Example: [/example/main.go](/example/main.go) \ No newline at end of file
+Пример: [/example/main.go](/example/main.go)
+
+## Использование
+
+Импорт библиотеки:
+
+```go
+import "github.com/neonxp/marusia"
+```
+
+Создание функции обработчика (имплементирующий интерфейс [marusia.MessageHandler](https://pkg.go.dev/github.com/neonxp/marusia?tab=doc#MessageHandler) ):
+
+```go
+func messageHandler(ctx context.Context, req *marusia.Request) (*marusia.Response, error) {
+ ...
+}
+```
+
+Создание экземпляра API и http сервера, обрабатывающего колбеки:
+
+```go
+m := marusia.New(messageHandler)
+server := http.Server{
+ Addr: ":8080",
+ Handler: m.Handler(),
+}
+if err := server.ListenAndServe(); err != http.ErrServerClosed {
+ log.Fatal(err)
+}
+```
+
+Суть работы с API заключается в том, что при получении колбека с запросом типа [*marusia.Request](https://pkg.go.dev/github.com/neonxp/marusia?tab=doc#Request) в течении максимум 10 секунд следует ответить вернув сформированный объект типа [*marusia.Response](https://pkg.go.dev/github.com/neonxp/marusia?tab=doc#Response).
+
+## Содержимое запроса
+
+```go
+type Request struct {
+ Command string
+ OriginalUtterance string
+ Type string
+ Payload Payload
+ Nlu struct {
+ Tokens []string
+ Entities []interface{}
+ }
+}
+```
+
+* Command — служебное поле: запрос пользователя, преобразованный для внутренней обработки Марусей. В ходе преобразования текст, в частности, очищается от знаков препинания, а числительные преобразуются в числа. При завершении скилла по команде "стоп", "выход" и т.д. в скилл будет передано "on_interrupt", чтобы у скилла была возможность попрощаться с пользователем.
+* OriginalUtterance — полный текст пользовательского запроса, максимум 1024 символа.
+* Type — тип ввода, обязательное свойство. Возможные значения: "SimpleUtterance" — голосовой ввод, "ButtonPressed" — нажатие кнопки.
+* Payload — JSON, полученный с нажатой кнопкой от обработчика скилла (в ответе на предыдущий запрос), максимум 4096 байт.
+* Nlu.Tokens — слова и именованные сущности, которые Маруся извлекла из запроса пользователя.
+* Nlu.Entities — здесь пока будет пустой массив или какие-то экспериментальные вещи, на которые не стоит смотреть.
+
+## Содержимое ответа
+
+```go
+type Response struct {
+ Text string
+ TTS string
+ Buttons []*button
+ EndSession bool
+}
+```
+
+Методы:
+
+* NewResponse(text string) *Response - конструктор объекта, где text - текст ответа пользователю
+* Response.SetText(text string) *Response - задание текста ответа
+* Response.SetTTS(tts string) *Response - текст с раставленными ударениями (знак "+")
+* Response.SetEndSession(endSession bool) *Response - задает признак конца диалога
+* Response.AddButton(title string, payload Payload, URL string) *Response - добавляет кнопку в диалог \ No newline at end of file