使用 Microsoft bot 框架在 Microsoft 团队中显示欢迎消息
show welcome message in Microsoft teams using Microsoft bot framework
我使用以下代码向用户显示欢迎消息。
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,如果activity类型不是消息。
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 团队中添加相同的机器人时,它不会显示欢迎消息。
现在 (2016-12-30) 当您向 "contact list" 添加机器人时,MSFT Teams 根本不发送任何消息。正如 MSFT 人员所说,这是一个已知的限制,将在不久的将来解决。
In the meantime to get a ConversationUpdate message to the bot, the user will have to first initiate a conversation with the bot.
作为解决方法,您可以处理从用户发送的特殊文本,例如 "start",或者如果您的机器人足够有状态,则只处理第一条传入消息。
我使用以下代码向用户显示欢迎消息。
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,如果activity类型不是消息。
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 团队中添加相同的机器人时,它不会显示欢迎消息。
现在 (2016-12-30) 当您向 "contact list" 添加机器人时,MSFT Teams 根本不发送任何消息。正如 MSFT 人员所说,这是一个已知的限制,将在不久的将来解决。
In the meantime to get a ConversationUpdate message to the bot, the user will have to first initiate a conversation with the bot.
作为解决方法,您可以处理从用户发送的特殊文本,例如 "start",或者如果您的机器人足够有状态,则只处理第一条传入消息。