我使用频道注册产品和REST API使用Microsoft Bot Framework。我已经设置了#34;消息传递端点"一切都可以正常发送和接收消息。
但我不想发送/接收消息。设置欢迎消息这样简单的事情似乎是不可能的,因为我的端点只接收消息传递事件(当机器人在频道/会话中时)。
我有什么遗漏的吗?
我想设置几个端点,或者使用相同的端点来监听其他类型的事件。
答案 0 :(得分:0)
您需要在MessageController中实现以下内容: 注意其他如果。控制器中的函数是HandleSystemMessage。
else if(message.Type == ActivityTypes.ConversationUpdate) {
// Handle conversation state changes, like members being added and removed
// Use Activity.MembersAdded and Activity.MembersRemoved and Activity.Action for info
// Not available in all channels
IConversationUpdateActivity update = message;
var cliente = new ConnectorClient(new System.Uri(message.ServiceUrl), new MicrosoftAppCredentials());
if (update.MembersAdded != null && update.MembersAdded.Count > 0)
{
foreach(var member in update.MembersAdded)
{
if(member.Id != message.Recipient.Id)
{
//var username = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
var username = message.From.Name;
var reply = message.CreateReply();
//string dir = System.AppDomain.CurrentDomain.BaseDirectory + "Images" + Path.DirectorySeparatorChar + "cajamar.png";
string dir = HttpRuntime.AppDomainAppPath + "Images" + Path.DirectorySeparatorChar + "cajamar.png";
reply.Attachments.Add(new Attachment(
contentUrl: dir,
contentType: "image/png",
name: "cajamar.png"
));
reply.Text = $"Bienvenido {username} al ChatBot de convenios:";
cliente.Conversations.ReplyToActivity(reply);
//var reply = message.CreateReply();
//reply.Text = $"El directorio base es: {HttpRuntime.AppDomainAppPath}";
//cliente.Conversations.ReplyToActivityAsync(reply);
}
}
}
}