Botframework Facebook messenger机器人-检测用户键入

Botframework Facebook messenger机器人-检测用户键入,botframework,facebook-messenger-bot,Botframework,Facebook Messenger Bot,我感兴趣的是通过DirectLineAPI(REST)捕获用户在我的机器人中键入的事件 表示这是可能的:[……]键入表示会话另一端的用户或机器人正在编译响应[…] 说Facebook Messenger不支持它(2017年) 也许某些频道(Slack、Skype…)可能支持此功能,而其他频道(Facebook)则不支持此功能 也许我只是在文档中找不到合适的位置来让它工作,如果是这样的话,我能找到任何链接吗 Azure/Facebook的任何一位代表,谁能在路线图和ETA中提供关于这一点的见解 提

我感兴趣的是通过DirectLineAPI(REST)捕获用户在我的机器人中键入的事件

表示这是可能的:[……]键入表示会话另一端的用户或机器人正在编译响应[…]

说Facebook Messenger不支持它(2017年)

也许某些频道(Slack、Skype…)可能支持此功能,而其他频道(Facebook)则不支持此功能

也许我只是在文档中找不到合适的位置来让它工作,如果是这样的话,我能找到任何链接吗

Azure/Facebook的任何一位代表,谁能在路线图和ETA中提供关于这一点的见解


提前感谢您的回答

当前,一旦用户点击send/return,BotFramework就会发送整个消息(例如,如果使用C#,则发送到MessageController的“Post”方法)。不幸的是,没有神奇的AJAX在后台向机器人发送单独的击键信息

但是,ActivityTypes枚举中有一个名为“Typing”的值。如果你想争取时间,bot通常会使用它向用户发送一个“我正在键入”指示器。这就是你所指的医生所说的:

        var msg = context.MakeMessage();
        msg.Text = string.Empty;
        msg.Type = ActivityTypes.Typing;
        await context.PostAsync(msg);
但是,对于向bot键入的用户,问题是,您的频道是否支持向bot发送ActivityTypes.Types类型的活动?通过查看MessagesController中的HandleSystemMessage方法并添加一些处理程序代码,尝试找出答案。样板文件处理枚举值的选择,包括键入(但当前不执行任何操作):


截至2018年2月,这似乎是一个限制

目前已确认Facebook Messenger和Slack

我将以@oflahero和我自己的经验+这些线程上的无答案(MS guys已经标记了它)为否,这是不可能做到的:

没有关于路线图/预计到达时间的确认


[编辑]:在Botframework Github现场对话。

感谢@olflahero的回答。我已经做了一些与你建议的相当的事情,但我没有看到任何打字类型的请求。在文档中,我希望至少有一些渠道支持它,有人能确认看到并处理来自用户端的输入请求吗?如果是这样,你能分享你的经验吗?我发现了这个:我在哪里看到C?要处理键入事件的代码段。。。这在过去是有效的,而不是现在吗?Webchat频道提供了一种在查看代码时将键入内容从用户发送到机器人的方法。对于其他渠道,很难确切了解其功能是的,我可以确认Facebook Messenger不支持用户到机器人的键入活动(我目前正在使用Messenger进行我自己的项目)。我的假设是,机器人团队将其包括在规范中,以便兼容渠道能够支持它。我想是未来的证明。
        ....
        else if (message.Type == ActivityTypes.Typing)
        {
            // Handle knowing that the user is typing
        }