IBM watson 部署一个对话机器人,Java调用 Assistant API

整体步骤

  1. 注册一个IBM账户,http://console.bluemix.net
  2. 在控制台(Dashboard)创建资源(Create resource)
  3. 点击 Watson Assistant 服务
  4. 填写服务名称、想要部署的区域,创建一个Watson Assistant服务
  5. 启动工具(Launch tool)
    IBM watson 部署一个对话机器人,Java调用 Assistant API_第1张图片
  6. 创建Skill
    IBM watson 部署一个对话机器人,Java调用 Assistant API_第2张图片
  7. 创建Assistants
  • 创建一个assistant,并把之前建立好的skill添加进assistant。
  • assistant详情页中包含一个分享链接可以在网页上试用,也包含了API调用所需的id、url、username、password。
  • 我的watson asistant 分享试用地址:https://assistant-chat-jp-tok.watsonplatform.net/web/public/c24919e6-ff48-42c1-99c2-63a66df7f75b
    IBM watson 部署一个对话机器人,Java调用 Assistant API_第3张图片

Skill 构建步骤

  • 构建一个skill大致需要创建intents、entities、dialog。
  • intents为用户意图;entities为需要理解的一些实体;dialog串起整个对话。
  • 以预定餐厅为例:用户意图为 “我想订位置”;entities为星期几、时间、几个人这些元素;dialog告诉机器人接收到“我想订位置” 这个意图时,需要问什么、答什么。
  1. Creating Intents
    参考教程:https://cloud.ibm.com/docs/services/assistant?topic=assistant-intents#intents
  2. Creating Entities
    参考教程:https://cloud.ibm.com/docs/services/assistant?topic=assistant-entities#entities
  3. Build Dialog
    参考教程:https://cloud.ibm.com/docs/services/assistant?topic=assistant-dialog-overview#dialog-overview

我参考教程视频建立的Skill的json配置文件:
http://note.youdao.com/noteshare?id=4fb9d8bd65c31c23f1f6a2866bb952c5

机器人发布到web上

参考教程:http://www-31.ibm.com/ibm/cn/ur/event/pdf/integrate_to_web.pdf

Java调用

  • 参考 demo:https://github.com/watson-developer-cloud/java-sdk
  • demo 中关于 assistant 的说明:https://github.com/watson-developer-cloud/java-sdk/blob/master/assistant/README.md
  • 我用的是v2接口,但 demo 没有说明参数都是哪里来的、缺少Endpoint设置、缺少sessionId获取,调试过程中出现过如下问题:
    • Unauthorized: Access is denied due to invalid credentials. Tip: Did you set the Endpoint?
    • {“code”:401, “error”: “Unauthorized”}
    • {“error”:“Resource not found”,“code”:404}
  • 最终运行通过的代码如下:
  • Gradle
compile group: 'com.ibm.watson.developer_cloud', name: 'assistant', version: '6.14.0'
  • 测试函数
public static void main(String[] args) throws Exception {

        String assistantId = "XXXXXXXXXXXXXXXXXXX"; // Assistant 详情页的Assistant ID
        String url = "https://gateway-tok.watsonplatform.net/assistant/api"; // Assistant 详情页的Assistant URL的一部分
        String username = "apikey"; // Assistant 详情页的 Service Credentials 的 Username
        String password = "XXXXXXXXXXXXXXXXXXX"; //  Assistant 详情页的 Service Credentials 的 Password

        Assistant service = new Assistant("2019-03-15"); // 随意
        service.setEndPoint(url);
        service.setUsernameAndPassword(username, password);

        CreateSessionOptions createSessionOptions = new CreateSessionOptions.Builder()
                .assistantId(assistantId)
                .build();
        SessionResponse sessionResponse = service.createSession(createSessionOptions).execute();
        String sessionId = sessionResponse.getSessionId();

        MessageInput input = new MessageInput.Builder()
                .text("Hi")
                .build();
        MessageOptions messageOptions = new MessageOptions.Builder()
                .assistantId(assistantId)
                .sessionId(sessionId)
                .input(input)
                .build();
        MessageResponse messageResponse = service.message(messageOptions).execute();

        System.out.println(messageResponse);
    }

你可能感兴趣的:(机器学习,Java)