C#中bot框架的键入指示器

时间:2017-12-19 15:11:34

标签: botframework

我在Bot框架中有一个机器人。一旦用户响应机器人并且机器人正在处理它,我想同时向用户显示打字指示器。

这里可以在Nodejs中使用https://docs.microsoft.com/en-us/bot-framework/nodejs/bot-builder-nodejs-send-typing-indicator

但我怎样才能在C#中实现它?

6 个答案:

答案 0 :(得分:7)

您必须发送Typing类型的活动。

你可以这样做:

// Send "typing" information
Activity reply = activity.CreateReply();
reply.Type = ActivityTypes.Typing;
reply.Text = null;
ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));
await connector.Conversations.ReplyToActivityAsync(reply);

答案 1 :(得分:1)

这是使用 C#、JavaScript 或 Python 中的机器人框架实现 send a typing indicator 的另一种方法。

答案 2 :(得分:0)

试试这个:

var reply = activity.CreateReply();
reply.Text = null;
reply.Type = ActivityTypes.Typing;

await context.PostAsync(reply);

答案 3 :(得分:0)

如果您需要立即在对话框的context.MakeMessage回复,也可以使用MessageReceivedAsync创建邮件。

var typingMsg = context.MakeMessage();
typingMsg.Type = ActivityTypes.Typing;
typingMsg.Text = null;
await context.PostAsync(typingMsg);

键入指示符将被发送的下一条消息替换(至少在Bot Framework模拟器中)。这似乎在Slack中无效。

答案 4 :(得分:0)

要在机器人处理过程中显示键入指示符,只需在等待base.OnTurnAsync(turnContext,cancellingToken)之前添加OnTurnAsync函数; :

await turnContext.SendActivityAsync(new Activity { Type = ActivityTypes.Typing }, cancellationToken);

答案 5 :(得分:-1)

如果是V4,则以下代码行可以提供帮助。将此代码保存在这样一个地方,以便在对话流程中每次都能执行。

        IMessageActivity reply1 = innerDc.Context.Activity.CreateReply();
        reply1.Type = ActivityTypes.Typing;
        reply1.Text = null;
        await innerDc.Context.SendActivityAsync( reply1, cancellationToken: cancellationToken);
        await Task.Delay(1000);