server_watson.js 1.79 KB
const express = require("express");
const router = express.Router();
const AssistantV2 = require("ibm-watson/assistant/v2");
const { IamAuthenticator } = require("ibm-watson/auth");

const request = require('request');
const parser = require('xml2json');
const coronaUrl = "http://openapi.data.go.kr/openapi/service/rest/Covid19/getCovid19InfStateJson";
const queryParams = '?' + encodeURIComponent('ServiceKey') + '=AZrC9RiqrxwllsI6PMbA9orNqoHCHvmriEKYHfdcpewFnbChIrmKpdehGjBt6fVGDbIAcwS0UVd7Ms5AMX29ig%3D%3D';

const authenticator = new IamAuthenticator({
  apikey: process.env.WATSON_ASSISTANT_APIKEY,
});

const assistant = new AssistantV2({
  version: "2019-02-28",
  authenticator: authenticator,
  url: process.env.WATSON_ASSISTANT_URL,
});

router.get("/session", async (req, res) => {
  try {
    const session = await assistant.createSession({
      assistantId: process.env.WATSON_ASSISTANT_ID,
    });
    res.json(session["result"]);
  } catch (err) {
    res.send("There was an error processing your request.");
    console.log(err);
  }
});

router.post("/message", async (req, res) => {
  let payload = {
    assistantId: process.env.WATSON_ASSISTANT_ID,
    sessionId: req.headers.session_id,
    input: {
      message_type: "text",
      text: req.body.input,
    },
  };

  try {
    const message = await assistant.message(payload);
    res.json(message["result"]);
  } catch (err) {
    res.send("There was an error processing your request.");
    console.log(err);
  }
});

router.get("/corona", async (req, res) => {
  await request({
    url: coronaUrl + queryParams,
    method: 'GET'
  }, (err, r, body) => {
    // console.log("err : ", err);
    // console.log("res : ", res);
    // console.log("body : ", body);
    const json = parser.toJson(body);
    res.send(json);
  });
});

module.exports = router;