【问题标题】:How to respond to message from the Bot Framework (Direct Line Client)?如何响应来自 Bot Framework(直线客户端)的消息?
【发布时间】:2018-02-27 15:29:25
【问题描述】:

我想用机器人框架创建一个对话框。我的步骤:

  1. 使用 Direct Line API 创建新对话(正常工作)(客户端)

  2. 在 Bot 框架(服务器端)中触发以下对话框:

    bot.dialog('*:notification', [
    function (session, args) {
      builder.Prompts.text(session, args)
    },
    function (session, results) {
      logger.info('Results', results)
    }])
    
  3. 我想回复收到的消息(客户端)

    method:'post',
    url:'conversations/' + conversationId + '/activities',
    headers:{
        'Authorization': 'Bearer' + token
    }
    body:{
        replyToId: replyToId,
        type:'message',
        from: { 
            id:'myId'
        },
        text: 'Some simple text',
        textFormat: 'plain'
    }
    

conversationId:我使用创建对话时收到的那个

令牌:我使用创建对话时收到的令牌

replyToId:来自活动对象的那个

实际结果:

  1. Botframework 无法识别这是对消息发送的回复并触发默认处理程序。

预期结果:

  1. Bot Framework 触发对话框的第二步。

【问题讨论】:

  • 我在使用 C# DirectLineClient 时遇到了完全相同的问题。希望答案适用于两者,但至少同时知道你并不孤单。
  • 我认为 HTTP 调用有问题。不知何故,replyToId 被忽略了。可能我需要以另一种方式发送它。我在服务器端找到了其余的 api 集成。但客户端没有类似的:docs.microsoft.com/en-us/bot-framework/rest-api/…
  • 我的评论更新:在我的情况下,问题只是我正在重新生成 from:id 与每条新消息......所以是的,机器人不认为我的回复提示来自同一个人。嗬!原海报中可能有类似的东西?
  • @bojingo 您的请求如何?你如何发送回复id?机器人框架仍会在我的应用程序中创建一个新对话框。
  • @FLG 你还在遇到这个问题吗?只是为了验证,但是用户第二次响应中的地址和 conversationId 是否与机器人第一次响应用户时相同?

标签: node.js botframework direct-line-botframework


【解决方案1】:

首先,您的对话框'*:notification' 没有triggerAction,例如,您可以像这样修改您的对话框:

bot.dialog('*:notification', [
    function (session, args) {
      builder.Prompts.text(session, args)
    },
    function (session, results) {
      logger.info('Results', results)
}]).triggerAction({matches: /^notification/i});

然后您可以使用 DL 将消息从客户端发送到您的机器人并触发此对话框,如下所示:

method:'post',
url:'conversations/' + conversationId + '/activities',
headers:{
    'Authorization': 'Bearer' + token
}
body:{
    type:'message',
    from: { 
        "id": "1234",
        "firstname": "fname",
        "lastname": "lname"
    },
    text: 'notification',
    textFormat: 'plain'
}

【讨论】:

  • 我使用 "bot.beginDialog(address, '*:notification')" 启动对话框,它没有任何问题,第一个函数也被执行并发送一条我通过直线收到的消息.问题是,一旦我回复消息,就会启动一个新对话框。我认为我如何将对 id 的回复从客户端发送到服务器存在问题。
猜你喜欢
  • 2016-02-09
  • 1970-01-01
  • 2012-11-02
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-16
  • 2017-08-14
相关资源
最近更新 更多