本篇文章体验华为云问答机器人API调用总结的文章,包含遇到的问题,如认鉴权等。
来到华为云“免费体验中心”——>找到“对话机器人服务”——>开通免费体验
在控制台找到对话机器人服务,可以看到机器人ID等信息。
在问答机器人列表中,单击“机器人管理”。在“问答机器人”页面左侧导航栏中选择“知识库 > 问答管理”,在问答管理页面执行如下操作。
在页面右上角单击“对话体验”,展开对话窗口。在窗口中,输入“蓝屏了怎么办”,查看是否可以获得准确答案。您可以根据业务实际情况进行提问,当机器人无法回答时,建议根据实际情况补充语料或补充扩展问。
下面我们在现在的对话机器人基础上实现问答接口调用
这里选择java API调用和PostMan调用
POST:
POST https://{endpoint}/v1/{project_id}/qabots/{qabot_id}/chat
Request Header:
Content-Type: application/json
X-Auth-Token: 认证鉴权的信息
Request Body:
{
"question": "桌面云打不开了"
}
Java语言:
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
public class CBSDemo {
public void cbsDemo() {
try {
//endpoint、projectId、qabot_id需要替换成实际信息。
URL url = new URL("https://{endpoint}/v1/{project_id}/qabots/{qabot_id}/chat");
String token = "用户获取得到的实际token值";
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoInput(true);
connection.setDoOutput(true);
connection.addRequestProperty("Content-Type", "application/json");
connection.addRequestProperty("X-Auth-Token", token);
//输入参数
String body = "{\"question\": \"用户问\"}";
OutputStreamWriter osw = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
osw.append(body);
osw.flush();
InputStream is = connection.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
while (br.ready()) {
System.out.println(br.readLine());
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
CBSDemo CBSDemo = new CBSDemo();
CBSDemo.cbsDemo();
}
}
现在Token的值大家还不知道,继续往下看。
这里遇到的问题就是认证鉴权问题,说一下:华为云的这个token获取,出现错误返回的概率很大,解决和原因下面我会讲解。
这里介绍Token认证:通过Token认证通用请求
POST: https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens
{
"auth": {
"identity": {
"methods": [
"password"
],
"password": {
"user": {
"name": "***",
"password": "***",
"domain": {
"name": "***"
}
}
}
},
"scope": {
"project": {
"name": "cn-north-4"
}
}
}
}
上面的***都是需要替换的,替换成你的。
POST: https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens
{
"auth": {
"identity": {
"methods": [
"password"
],
"password": {
"user": {
"name": "***",
"password": "自己的密码,如果自己以前没印象用过这个,很大概率是你的华为云账号的密码",
"domain": {
"name": "账号名"
}
}
}
},
"scope": {
"project": {
"name": "cn-north-4"
}
}
}
}
这里还有个name的值没有填,但也是很多开发者出现错误返回的原因:当你的统一认证的用户组只有admin时是不行的,这个具体原因我不太清楚,主要是华为云控制台自带的初始admin用户组是不行的,你需要自己创建一个新的用户组,创建一个新的用户添加到新创建的用户组就可,大致流程如下:
这时,上面的name就是haoze了,具体是你创建的用户名。
没有PostMan的可以使用华为云控制台的API Explorer工具
以上就是华为对话机器人服务的体验讲解以及问题解决。