используйте HTML средство выбора даты в диалоговом окне диалога IBM watson, чтобы получить дату в качестве ввода от пользователя - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь использовать <input type="date" id="birthday" name="birthday"> для отображения календаря, который будет выбран пользователем в диалоговом окне IBM. Таким образом, когда этот календарь будет запрашивать дату в боте чата, а затем после того, как пользователь выберет дату, он должен сохранить выбранную дату в качестве переменной или любой контекстной переменной. Как мне реализовать это в чатботе IBM Watson. Спасибо

1 Ответ

0 голосов
/ 20 апреля 2020

Это действительно зависит от того, как ваше внешнее приложение создано для вызова IBM Watson API. Чтобы быть более обобщенным c, вам нужно будет сделать:

Сначала вам нужно будет добавить синтаксис html в ваш узел ответа / ответа на Watson Conversation:

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

А в вашем коде переднего плана (вероятно, 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 принимает payload с переменными context, что это то, что вам нужно. Я бы рекомендовал сначала проверить API документы , чтобы понять больше. Но, как я понял, ваша полезная нагрузка может быть похожа на:

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);
  });

Примечание context включается в ответы на сообщения, только если вы return_context=true в запросе на сообщение.

Важные ссылки:

  • Тип ввода Дата - MDN
  • Watson Assistant API do c - IBM Watson
...