【问题标题】:How can I retrieve mention entities from a Microsoft Teams message as well as LUIS intent entities?如何从 Microsoft Teams 消息以及 LUIS 意图实体中检索提及实体?
【发布时间】:2017-04-04 02:07:41
【问题描述】:

我目前正在开发一个机器人,它利用LuisRecognizer 来匹配我的模型中定义的意图。启动机器人的初始消息使用提及来识别后续操作的目标。

LUIS 模型正确识别意图的主题,但其实体显然仅引用已识别用户的原始字符串值。从文档中,我被告知原始消息应该有一个自己的实体数组,其中包括原始提及。我应该可以在我的 NodeJS 机器人实现中通过 session.message.entities 访问它。但是,session.message 不存在于任何与 LUIS 意图匹配的传入消息中。

如何检索原始邮件的实体列表?

这是我的机器人的初始化方式:

const recognizer = new builder.LuisRecognizer(config.get('bot.model'))
const intents = new builder.IntentDialog({ recognizers: [recognizer] })

intents.matches('reward', '/reward')
bot.dialog('/', intents)

bot.dialog('/reward', [(session, context, next) => {
  // session.message does not exist here
}])

【问题讨论】:

  • 这很奇怪。您能否将您的代码与github.com/Microsoft/BotBuilder-Samples/blob/master/Node/… 进行比较,看看您是否发现那里有任何重大差异?
  • @EzequielJadib 编辑了原件以包含我的机器人如何初始化的示例。这似乎是我们两个代码库之间唯一的实质性区别。我会试试你的风格。
  • 顺便说一句,示例使用的是 botbuilder v3.7.0(以防万一),这就是我们使用新样式的原因。
  • 太好了,也许我引用的例子已经过时了。只是出于好奇,什么品质将其识别为较新的版本?使用.triggerAction() 链等? IntentDialog 是否已弃用?
  • 成功了吗?我可以按照我们讨论的内容发布一些内容作为答案吗?我不记得在哪个版本中添加了新样式。肯定是在 v3.7 之前。我记得的事情是:不再在对话框中使用 /,使用 triggerAction,intentDialog 不被弃用,我认为 LuisDialog 就是它。

标签: botframework microsoft-teams


【解决方案1】:

为了解决您关于实体列表的问题,您是否尝试过使用 context.entities 而不是 session.message.entities?虽然 session.message 确实具有“实体”属性,但与上下文对象不同,会话对象本身不会从 LUIS 调用接收数据。

您在瀑布步骤中作为第二个参数传入的上下文(或 args、results)对象包含从 LUIS 生成的意图和实体。

我创建了一个机器人,其中包含 Cortana 为其 LUIS 应用程序的预构建警报应用程序。下面是对话框“/set_alarm”的第一个瀑布步骤的代码。它将控制台记录来自 LUIS 调用的 session.message 和上下文对象(此处称为 args):

bot.dialog('/', intents);
intents.matches('builtin.intent.alarm.set_alarm', '/set_alarm');

bot.dialog('/set_alarm', [
    function (session, args, next) {
        if (session.message) {
            console.log('===\n1st waterfall step, session.message object found:');
            console.log(session.message);
        } else {
            console.log('session.message object not found.');
        }
        if (args) {
            console.log('===\nargs object found:');
            console.log(args);
        }
        ...
    }, 
    // additional waterfall steps
])

这是the 1st waterfall step的控制台输出。这是screencap 通过模拟器进行的聊天机器人交互。

如果您仍然遇到问题,您可以记录您的上下文对象以便我们查看它包含的内容吗? 关于缺少 session.message 对象,您是否收到任何错误消息?您发布的代码看起来没有任何问题。

你可以在 github 上找到这个聊天机器人的 repo:https://github.com/stevengum97/SO_Q43146320

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多