Как получить текущее имя библиотеки из объекта сеанса - PullRequest
0 голосов
/ 28 июня 2018

Я хотел бы получить текущее имя библиотеки из объекта Session на любом этапе диалога с водопадом. В настоящее время я звоню session.dialogStack() и извлекаю идентификатор из верхнего диалога в стеке. Есть ли лучший способ?

1 Ответ

0 голосов
/ 05 июля 2018

Как вы упомянули в своем вопросе и как прокомментировал Гэри Лю, правильный способ получить идентификатор библиотеки текущего диалога - использовать session.dialogStack(). Для UniversalBot без аргумента name значением по умолчанию является "*".

UniversalBot ссылка

Пример:

bot.dialog('greeting', [
  (session, args) => {
      let currentStack = session.dialogStack()
      // [ { id: '*:greeting', state: { 'BotBuilder.Data.WaterfallStep': 0 } } ]

      console.log(currentStack[currentStack.length - 1])
      // { id: '*:greeting', state: { 'BotBuilder.Data.WaterfallStep': 0 } }

      console.log(currentStack[currentStack.length - 1].id)
      // '*:greeting'

      // Separate the library name from the dialogId by calling 
      // String.prototype.split() on the stack.id. The splitter we'll use is ":".
      console.log(currentStack[currentStack.length - 1].id.split(':'))
      // [ '*', 'greeting' ]

      session.endDialog('Bye from "greeting"!')
  }
]).triggerAction({matches: /hi/ig})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...