【发布时间】:2016-12-30 20:04:07
【问题描述】:
我使用下面的代码向用户显示欢迎信息。
private Activity HandleSystemMessage(Activity message)
{
if (message.Type == ActivityTypes.DeleteUserData)
{
// Implement user deletion here
// If we handle user deletion, return a real message
}
else if (message.Type == ActivityTypes.ConversationUpdate)
{
string replyMessage = string.Empty;
replyMessage = Responses.Greeting;
return message.CreateReply(replyMessage);
}
else if (message.Type == ActivityTypes.ContactRelationUpdate)
{
// Handle add/remove from contact lists
// Activity.From + Activity.Action represent what happened
}
else if (message.Type == ActivityTypes.Typing)
{
// Handle knowing tha the user is typing
}
else if (message.Type == ActivityTypes.Ping)
{
}
return null;
}
如果活动类型不是消息,则使用以下方法调用HandleSystemMessage。
public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
string reply = "";
ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));
if (activity.Type == ActivityTypes.Message)
{
stLuis = await LuisHelper.ParseUserInput(activity.Text);
string userResponse = activity.Text.ToLower();
switch (stLuis.topScoringIntent.intent)
{
case "Greetings":
reply = Responses.Greeting;
break;
case "None":
reply = Responses.None;
break;
default:
break;
}
}
if (reply != "")
await connector.Conversations.ReplyToActivityAsync(activity.CreateReply(reply));
}
else
{
var reply1 = HandleSystemMessage(activity);
if (reply1 != null)
await connector.Conversations.ReplyToActivityAsync(reply1);
}
var response = Request.CreateResponse(HttpStatusCode.OK);
return response;
}
此代码适用于 Skype。但是当我在 Microsoft 团队中添加相同的机器人时,它不会显示欢迎消息。
【问题讨论】:
-
你能分享调用HandleSystemMessage的代码吗?当用户发起新对话时,您是否检查过您的机器人收到的活动的类型属性?
-
@SidUppal-MSFT 我添加了调用 HandleSystemMessage 的代码。正如你现在看到的,我只在活动类型不是消息时调用 HandleSystemMessage。
-
确认您看到了可靠交付会话更新活动类型的错误。我们正在调查。
-
你对这个问题有可靠的重现吗?
-
@SidUppal-MSFT 不幸的是,我无法与您分享确切的代码。但是骨架和我上面分享的一样。
标签: botframework microsoft-teams