我一直在关注本教程on how to create a simple chatbox in 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正在创建的任何路径错误或我缺少参数。

我已经仔细检查了访问 token 是否正确,甚至创建了另一个以防万一并更新了应用程序。

当我运行该程序时,它使应用程序崩溃。只有当我使用try catch语句返回查询的值时,才发现它是因为它返回了404错误。我的日志也显示了这一点。

我有什么想念的吗?这是我第一次使用Dialogflow。

在过去的3个小时中,我一直在努力工作,查看日志并尝试使用try catch语句,但仍然不知道我缺少什么。

Dialogflow API Reference告诉我,我需要的只是Authorization token ,协议(protocol)版本(我已经尝试了它们)。

如果有人可以帮助我并且需要更多信息,请告诉我。

最佳答案

在搜索stackoverflow之后,我发现this答案为我提供了GET请求所需的结构。

因此,我从查询中删除了FuelManager的basePath和baseParams,并以上面发布的链接指定的格式对GET请求进行了硬编码。

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

我唯一的猜测是baseParams和basePath不能正确链接到Fuel实例。

关于android - Kotlin在Android上使用Dialogflow和Fuel进行简单的聊天机器人,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55200354/

10-12 03:20