Skip to Content
Technical Articles

SAP Cloud SDK for JavaでCAIのWebhookを返す

SAP Cloud SDK for JavaWebhookResponseWrapperを使ってSAP Conversational AIへWebhook Responseを返してみます。

今回のプログラムはGitHubに置いています(今回以外の内容もあるので注意)。

開発環境

以下の環境で実行しています。

  • OS: Windows10 64-bit
  • openJDK: 1.8.0_242
  • Chocolatey: 0.10.15
  • maven: 3.6.3
  • IDE: IntelliJ IDEA Community Edition 2019.3.3
  • CF cli: 6.37.0+a40009753.2018-05-25
  • SAP Cloud SDK for Java: 3.15.1

手順

0. 前提

1. POM.xml調整

<project-root>/application/POM.xmlのdependenciesパス配下にServices Recast AI (Beta)を追加します。

※ベータ版のサービスなので利用にはご注意ください。

        <!-- https://mvnrepository.com/artifact/com.sap.cloud.sdk.services/recast-ai -->
        <!-- for recast-ai -->
        <dependency>
            <groupId>com.sap.cloud.sdk.services</groupId>
            <artifactId>recast-ai</artifactId>
            <version>3.15.1</version>
        </dependency>

2. サーブレット作成

<project-root>/application/src/main/java/com/sap/cloud/sdkにChatServlet のJava Classを作成します。

package com.sap.cloud.sdk;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class ServletUtilities {

    private static final Logger logger = LoggerFactory.getLogger(ServletUtilities.class);
    private final HttpServletRequest request;

    public ServletUtilities(final HttpServletRequest request) {
        this.request = request;
    }

    public String startGetMethod(final String name){

        logger.info("Start get method: " + this.request.getRequestURI());
        return getParameter(name);
    }

    public String getParameter(final String name){
        String parameter = this.request.getParameter(name);
        logger.info("Get parameter '" + name + "': " + parameter);
        return parameter;
    }

    public void endServlet(final HttpServletResponse response, final String body)
            throws IOException {

        response.setCharacterEncoding("UTF-8");
        response.setContentType("application/json");
        response.getWriter().write(body);

        logger.info("Response body:" + body);
        logger.info("End servlet:" + this.request.getRequestURI());
    }
}

3. CFにデプロイ

SAP Cloud Platform の Cloud Foundry にデプロイします。

※省略しますが”mvn clean package && mvn tomee:run”でローカル起動して http://localhost:8080/chat?name=test をブラウザで開いて試しています。

cf login
cf push

デプロイ先(https://<route><domain>/chat?name=test)をブラウザで開くと以下のようなJSONが返ってきます。

{
  "replies": [
    {
      "type": "text",
      "content": "入力:test"
    },
    {
      "type": "list",
      "content": {
        "elements": [
          {
            "title": "タイトル",
            "subtitle": "サブタイトル",
            "buttons": [

            ]
          }
        ]
      }
    }
  ]
}

4. CAI作成

SAP Conversational AIでbotを作ります。

今回は通信だけが目的なのでfallbackスキルでActionにWebhookコールを設定します。

メモリのtestに「あああ」と設定してWebhookにその値をURLパラメータとして設定しています。

試すと、こんな感じで返ってきます。

 

参考情報

CAIのフォーマット

Send rich messagesを見てどのようにフォーマットを組み立てるか確認。

JSONテスト

JSONテストにmyjsonを使うと手っ取り早くJSONのRESTを作れます。myjsonのエンドポイントをCAIで呼び出して、意図しているフォーマットになっているかを確認。

SAP Cloud SDK for Java関連記事

Be the first to leave a comment
You must be Logged on to comment or reply to a post.