Как я могу использовать Botkit Middleware с действиями сервера диалогов Watson Assistant? - PullRequest
0 голосов
/ 26 июня 2018

Я следовал этому руководству , чтобы развернуть Slackbot с Watson Assistant . Учебное пособие использует действия сервера в диалоговом окне для непосредственного взаимодействия с базой данных. Чтобы связать Slack с Watson Assistant, в учебнике используется разъем Conversation. Это прекрасно работает, но меня интересует, как сделать то же самое с Botkit и промежуточным программным обеспечением Botkit, предоставляемым Watson Developer Cloud .

Как использовать действия без сервера, как получить и передать необходимый ключ API?

1 Ответ

0 голосов
/ 26 июня 2018

На самом деле есть код , который демонстрирует, как настроить ключ API для IBM Cloud Functions и передать его в качестве переменной контекста в Watson Assistant . Он использует метод before для добавления ключа API в переменную контекста. Значение настраивается в отдельном файле вместе с другими учетными данными, связанными с приложением. Код проверяет, существует ли переменная контекста и ключ, в противном случае он добавляется:

middleware.before = function(message, conversationPayload, callback) {
  // Code here gets executed before making the call to Conversation.

  // retrieve API Key from environment and split it into user / password
  var arr=process.env.ICF_KEY.split(":");
  // check if context exists
  if (typeof(conversationPayload.context) === 'undefined') {
      var context={context: {}}
      Object.assign(conversationPayload, context);
  }
  // if credentials already exists, we don't have to add them
  // else add credentials under private element in context
  if (typeof(conversationPayload.context.icfcreds) === 'undefined') {
     var privcontext = {"private": {icfcreds: {user: arr[0], password: arr[1]}}};
     Object.assign(conversationPayload.context, privcontext);
  }

  // log the payload structure for debugging
  // console.log(conversationPayload)
  callback(null, conversationPayload);
}
...