Facebook messenger bot - 检测用户输入

时间:2018-02-07 17:38:30

标签: botframework facebook-messenger-bot

我有兴趣通过DirectLine API(REST)捕获用户键入我的机器人的事件。

Reflection Class说这是可能的:[...] 输入表示对话另一端的用户或机器人正在编译响应 [...]

Botframework documentation表示Facebook Messenger不支持它(2017)。

也许某些频道(Slack,Skype ......)可能支持这一点,其他频道不支持(Facebook)。

也许我只是在文档中找不到合适的位置才能使其正常工作,如果有的话,我可以关注哪个链接?

Azure / Facebook的任何代表谁可以在路线图和ETA中提供有关此信息的见解?

提前感谢您的答案!

2 个答案:

答案 0 :(得分:1)

这看起来像2018年2月的限制。

现在确认Facebook Messenger和Slack。

我将采取@oflahero和我自己的经验+这些线程上没有答案(MS人员已经标记了它)作为NO,这是不可能做到的:

没有确认它在路线图/ ETA中。

[编辑]:在Botframework Github here进行对话。

答案 1 :(得分:0)

目前BotFramework的工作方式是,一旦用户点击发送/返回,就会发送整个消息(例如,如果使用C#,则为MessageController' Post'方法)。不幸的是,在后台发送单独的击键信息给机器人没有神奇的AJAX。

但是,ActivityTypes枚举中有一个名为'打字'的值。这通常被机器人用来发送“我打字”。指示给用户,如果你想买时间。这就是你所指的文件所说的:

        var msg = context.MakeMessage();
        msg.Text = string.Empty;
        msg.Type = ActivityTypes.Typing;
        await context.PostAsync(msg);

但是,对于输入到机器人的用户 - 问题是,您的频道是否支持向机器人发送类型为ActivityTypes.Typing的活动?尝试通过查看MessagesController中的HandleSystemMessage方法并添加一些处理程序代码来查找。样板文件处理枚举值的选择,包括键入(但目前不执行任何操作):

        ....
        else if (message.Type == ActivityTypes.Typing)
        {
            // Handle knowing that the user is typing
        }