我的机器人服务中有一个类,可以在英雄卡片的旋转木马中返回任务。我发现在本地调试时,这可以工作,并且在天蓝色门户网站上使用测试客户端时,它也能正常工作。然而,通过Skype,我发现在几次调用相同功能“获取所有任务”后,僵尸程序永远不会返回响应消息。它的前几次会起作用。用户的请求消息将说“发送”然后“发送”,但机器人将永远不会响应。
var tasksFound = false;
var stringBuilder = new StringBuilder();
var message = context.MakeMessage();
message.Attachments = new List<Attachment>();
message.AttachmentLayout = AttachmentLayoutTypes.Carousel;
foreach (var contact in contacts)
{
if (contact.Tasks.Count > 0)
{
foreach (var task in contact.Tasks)
{
if (task.Completed == false)
{
tasksFound = true;
var cardButtons = new List<CardAction>();
var plButtonComplete = new CardAction()
{
Value = $"buttonevent,task,complete,{contact.id},{task.Id}",
Type = "postBack",
Title = "Complete"
};
cardButtons.Add(plButtonComplete);
var plButtonDelete = new CardAction()
{
Value = $"buttonevent,task,delete,{contact.id},{task.Id}",
Type = "postBack",
Title = "Delete"
};
cardButtons.Add(plButtonDelete);
var plCard = new HeroCard()
{
Title = contact.FullName,
Subtitle = $"Due: {task.DueDate.ToString("MMM dd")}",
Text = $"{task.Description}",
Buttons = cardButtons
};
message.Attachments.Add(plCard.ToAttachment());
}
}
stringBuilder.AppendLine("");
}
}
我已经尝试删除所有卡功能,并且一个简单的字符串构建器可以在Skype和测试客户端中组合消息。
我有什么遗失的吗?我确保使用context.Wait调用DispatchDialog调用堆栈。我也很确定等待等等。