我在Bot框架中有一个机器人。一旦用户响应机器人并且机器人正在处理它,我想同时向用户显示打字指示器。
这里可以在Nodejs中使用https://docs.microsoft.com/en-us/bot-framework/nodejs/bot-builder-nodejs-send-typing-indicator
但我怎样才能在C#中实现它?
答案 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);