“正在输入...”指示在 bot 框架 + facebook Messenger 中不会消失

Posted

技术标签:

【中文标题】“正在输入...”指示在 bot 框架 + facebook Messenger 中不会消失【英文标题】:"Typing..." indication doesn't disappear in bot framework + facebook messenger 【发布时间】:2016-09-08 02:46:24 【问题描述】:

当我的机器人进行一些处理时,我正在使用下面的代码向用户发送“正在输入...”指示符。这是在反序列化和启动任何对话框之前在任何消息上发送的第一件事。

根据 facebook 的说法,问题是指示器并没有消失,即使 6 秒后也是如此。

因此,在机器人发送消息后,Typing... 指示器仍然永远存在。

这只会发生在 FB Messenger 上,但不会发生在 Telegram 或模拟器等其他渠道上。

    if (activity.Type == ActivityTypes.Message)
    
        Activity typing = activity.CreateReply(null);
        typing.ServiceUrl = activity.ServiceUrl; //bug in ms bot framework? otherwise service URL is null
        typing.Type = ActivityTypes.Typing;
        ConnectorClient connector = new ConnectorClient(new Uri(typing.ServiceUrl));
        await connector.Conversations.SendToConversationAsync(typing);

        //do the actual bot's work here

【问题讨论】:

【参考方案1】:

根据 Facebook,他们输入消息的实际超时时间是 20 秒:

https://developers.facebook.com/docs/messenger-platform/send-api-reference/sender-actions

此外,当机器人以实际消息响应时,键入指示符将被删除。

我用我的测试机器人验证了这种行为。 Bot 框架不发送“结束输入”消息,只发送开始输入消息。

【讨论】:

经过进一步测试,我发现我的问题仅出现在android Messenger应用程序(最新版本)中。相同的机器人在 iPhone 和 Windows Phone 以及桌面应用程序和 Web 版本上运行良好。所以我想问题出在 Facebook 这边。感谢您的检查。

以上是关于“正在输入...”指示在 bot 框架 + facebook Messenger 中不会消失的主要内容,如果未能解决你的问题,请参考以下文章

Cortana 与 Bot 框架的集成

Microsoft Lync 聊天机器人

在bot框架v4中,如何通过评论框和提交按钮实施评分卡

Firebase 聊天用户正在输入指示单元格

Microsoft bot 框架 - Bot 频道注册。无法将录制的视频从 Skype 保存到 Azure 存储帐户

Nodejs 和 microsoft bot 框架