Kotlin Использование Dialogflow с Fuel для простого чат-бота на Android - PullRequest
1 голос
/ 16 марта 2019

Я следовал этому уроку о том, как создать простой чат в Android Studio.

Я успешно создал объект в Dialogeflow и дважды проверил, правильно ли я скопировал ACCESS_KEY.

Вот мой код:

FuelManager.instance.baseHeaders = mapOf(
            "Authorization" to "Bearer $ACCESS_TOKEN"
    )

    FuelManager.instance.basePath =
            "https://api.dialogflow.com/v1/"

    FuelManager.instance.baseParams = listOf(
            "v" to "20170712",                  // latest protocol
            "sessionId" to UUID.randomUUID(),   // random ID
            "lang" to "en"                      // English language
    )

    val human = ChatUser(
            1,
            "You",
            BitmapFactory.decodeResource(resources,
                    R.drawable.ic_account_circle)
    )

    val agent = ChatUser(
            2,
            "Agent",
            BitmapFactory.decodeResource(resources,
                    R.drawable.ic_account_circle)
    )

    my_chat_view.setOnClickSendButtonListener(
            View.OnClickListener {
                my_chat_view.send(Message.Builder()
                        .setUser(human)
                        .setText(my_chat_view.inputText)
                        .build()
                )

                // More code here
            }
    )
        Fuel.get("/query",
                listOf("query" to my_chat_view.inputText))
                .responseJson { _, _, result ->
                    val reply = result.get().obj()
                            .getJSONObject("result")
                            .getJSONObject("fulfillment")
                            .getString("speech")

                    my_chat_view.send(Message.Builder()
                            .setRight(true)
                            .setUser(agent)
                            .setText(reply)
                            .build()
                    )
                }

Я обнаружил, что получаю ошибку HTTP 404, что означает, что любой путь, который создает Fuel, неверен, или я пропускаю параметр.

Я дважды проверил правильность ACKESS TOKEN и даже создал другой на всякий случай и обновил приложение.

Когда я запускаю эту программу, приложение вылетает. Только когда я возвратил значение запроса с помощью оператора try catch, я обнаружил, что это потому, что он возвращал ошибку 404. А также мои журналы показывают это также.

Что-нибудь, чего мне не хватает? Я впервые использую Dialogflow.

Последние три часа я дергал себя за это, просматривал логи и играл с инструкциями try catch, но все еще не знал, что мне не хватает.

Справочник по Dialogflow API говорит мне, что все, что мне нужно, это токен авторизации, версия протокола (я пробовал их оба).

Если кто-нибудь может мне помочь и ему нужна дополнительная информация, сообщите мне.

1 Ответ

1 голос
/ 23 марта 2019

После поиска в stackoverflow я нашел этот ответ, который дал мне структуру, которая мне была нужна для моего запроса GET.

И поэтому я удалил из моего запроса basePath и baseParams FuelManager и жестко запрограммировал запрос GET в формате, указанном по ссылке, размещенной выше.

Fuel.get("https://api.dialogflow.com/v1/query?v=20150910&lang=en&query="
                +chatView.inputText+"&sessionId=12345")

Мое единственное предположение, что baseParams и basePath неправильно связаны с экземпляром Fuel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...