我一直在关注本教程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/