我正在使用Visual Studio基于他们的Bot Builder SDK并使用Skype模拟器创建Skype机器人。(我正在使用此页面(我成功地让机器人连接并接收常规短信,并且它正确响应:
您发送的 [消息] 是 [长度] 字符
但是,我尝试添加一个事件以在添加用户时触发,它应该只发送"欢迎"。
public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
if (activity.Type == ActivityTypes.Message)
{
ConnectorClient connector = new ConnectorClient(new System.Uri(activity.ServiceUrl));
int length = (activity.Text ?? string.Empty).Length;
Activity reply = activity.CreateReply($"You sent {activity.Text} which was {length} characters");
await Conversation.SendAsync(activity, () => new Dialogs.RootDialog());
}
else
{
HandleSystemMessage(activity);
}
var response = Request.CreateResponse(HttpStatusCode.OK);
return response;
}
private Activity HandleSystemMessage(Activity message)
{
//The other if statements are the rest of the activity types
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
Activity reply = message.CreateReply("Welcome");
}
这是我目前拥有的代码。我尝试在第 17 行的 else
语句中添加相同的Connector
和await
行,但这只会使机器人响应
您发送了 0 个字符
如果需要任何其他信息来解决此问题,我很乐意提供。
任何帮助不胜感激!
编辑:我目前拥有的代码没有响应任何内容。它看到对话更新事件,但不对其执行任何操作
我从未使用过Skype SDK,但我想如果你做得好,它看起来像这样:
public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
var connector = new ConnectorClient(new Uri(activity.ServiceUrl));
Activity reply = null;
if (activity.Type == ActivityTypes.Message)
{
int length = (activity.Text ?? string.Empty).Length;
reply = activity.CreateReply($"You sent {activity.Text} which was {length} characters");
}
else if (activity.Type == ActivityTypes.ConversationUpdate)
{
reply = message.CreateReply("Welcome");
}
if (reply != null)
{
await connector.Conversations.SendToConversationAsync((Activity)reply);
}
}
我建议你学习一个C#教程,也许阅读Skype文档?https://learn.microsoft.com/en-us/bot-framework/dotnet/bot-builder-dotnet-connector
以上可能仍然不起作用,如果您查看我发布的文档链接,您可能需要使用
CreateDirectConversationAsync
方法开始对话(如果尚不存在(。