我有兴趣通过DirectLine API(REST)捕获用户键入我的机器人的事件。
Reflection Class说这是可能的:[...] 输入表示对话另一端的用户或机器人正在编译响应 [...]
Botframework documentation表示Facebook Messenger不支持它(2017)。
也许某些频道(Slack,Skype ......)可能支持这一点,其他频道不支持(Facebook)。
也许我只是在文档中找不到合适的位置才能使其正常工作,如果有的话,我可以关注哪个链接?
Azure / Facebook的任何代表谁可以在路线图和ETA中提供有关此信息的见解?
提前感谢您的答案!
答案 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
}