【问题标题】:use HTML date picker in IBM watson conversation dialog to get date as input from user在 IBM watson 对话对话框中使用 HTML 日期选择器从用户获取日期作为输入
【发布时间】:2020-07-26 23:56:01
【问题描述】:

我正在尝试使用 <input type="date" id="birthday" name="birthday"> 在 IBM 对话框中显示供用户选择的日历。因此,当此日历将在聊天机器人中询问日期,然后在用户选择日期后,它应该将所选日期存储为变量或任何上下文变量。 我必须如何在 IBM Watson 聊天机器人中实现它。 谢谢

【问题讨论】:

  • Watson Assistant 返回文本,并且根据界面的不同,可能会返回一些 HTML。你用的是什么接口?网络聊天集成支持 HTML
  • IBM Chat Bot默认界面
  • @data_henrik 我可以看到日期选择器并选择日期,但是如何进一步移动以存储到选定的上下文变量中?

标签: javascript html calendar ibm-watson watson-assistant


【解决方案1】:

这实际上取决于您的前端应用程序是如何构建以调用 IBM Watson API。为了更通用,您需要这样做:

首先,您需要将 html 语法添加到 Watson Conversation 上的应答/响应节点中:

Please select your date: <br /> 
<input type="date" id="birthday" name="birthday">

在您的前端代码(可能包含您的 UI 的 index.html)中,您需要一个函数来识别选择的内容,例如:

document.getElementById("birthday").addEventListener("change", function() {
    let inputDate = this.value;
    let ifYouWantEntireDateFormat = new Date(inputDate);
    console.log(inputDate); // 2020-04-20
    console.log(ifYouWantEntireDateFormat); //e.g. Mon April 20 2020 00:00:00 etc
});

您也可以使用querySelector 函数。此外,如果没有选择任何值,它将返回“无效日期”

考虑到所有这些,您还需要知道 Watson API 接受带有 context 变量的 payload,这正是您所需要的。我建议先检查API docs 以了解更多信息。但据我了解,您的有效载荷可能类似于:

const AssistantV2 = require('ibm-watson/assistant/v2');
const { IamAuthenticator } = require('ibm-watson/auth');

const assistant = new AssistantV2({
  version: '2020-04-01',
  authenticator: new IamAuthenticator({
    apikey: '{apikey}',
  }),
  url: '{url}',
});

assistant.message({
  assistantId: '{assistant_id}',
  sessionId: '{session_id}',
  input: {
    'message_type': 'text',
    'text': 'Hello',
    'options': {
      'return_context': true
    }
  },
  context: {
    'global': {
      'myDatePicker': inputDate,
      'system': {
        'user_id': 'my_user_id'
      }
    },
    'skills': {
      'main skill': {
        'user_defined': {
          'account_number': '123456'
        }
      }
    }
  }
})
  .then(res => {
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.log(err);
  });

注意只有当您在消息请求中return_context=true 时,context 才会包含在消息响应中。

重要链接:

  • 输入类型日期 - MDN
  • Watson 助理 API doc - IBM Watson

【讨论】:

  • 嘿,非常感谢您的详细回答。但是,我只使用集成到某些网站页面的预览链接,没有别的。所以,基本上我使用的是预览链接中显示的默认 UI。你的建议是我有一个明确的用户前端。
  • 所以当我使用预览链接时,我可以让 ChatBot 玩。在那里我可以使用选项和文本作为输入提供的默认值,但是如何使用要设置为对话节点响应的 DatePicker。
猜你喜欢
  • 2023-03-07
  • 1970-01-01
  • 2014-03-23
  • 2018-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多