"Typing..." 指示在 bot 框架 + facebook messenger 中不会消失

"Typing..." indication doesn't disappear in bot framework + facebook messenger

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

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

所以在 bot 发送消息后,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

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

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

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

我用我的测试机器人验证了这个行为。 Bot 框架不发送 "end typing" 消息,只发送开始输入消息。