我正在 c#.net 和 LUIS 认知服务上使用 MicrofsoftBotFramework 开发聊天机器人。
我希望当用户键入时它应该回复为键入或机器人正在键入..
public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
Trace.TraceInformation($"Type={activity.Type} Text={activity.Text}");
if (activity.Type == ActivityTypes.Message)
{
//await Microsoft.Bot.Builder.Dialogs.Conversation.SendAsync(activity, () => new ContactOneDialog());
//Implementation of typing indication
ConnectorClient connector = new ConnectorClient(new System.Uri(activity.ServiceUrl));
Activity isTypingReply = activity.CreateReply("Shuttlebot is typing...");
isTypingReply.Type = ActivityTypes.Typing;
await connector.Conversations.ReplyToActivityAsync(isTypingReply);
await Conversation.SendAsync(activity, () =>
new ExceptionHandlerDialog<object>(new ShuttleBusDialog(), displayException: true));
}
else
{
HandleSystemMessage(activity);
}
var response = Request.CreateResponse(System.Net.HttpStatusCode.OK);
return response;
}
此代码也有效,但它以动画形式显示“TYPING”并转到下一条消息。但我希望它应该显示我设置为“Shuttlebot 正在输入...”的消息
"
最佳答案
大多数 channel 本身就支持“正在输入”通知。只需将打字事件作为消息发送:
var reply = activity.CreateReply(String.Empty);
reply.Type = ActivityTypes.Typing;
await activityContext.SendResponse(reply);
关于c# - 在 Microsoft botframework 中回复 "Is Typing"消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41553491/