public static async Task Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, TraceWriter log) { using (BotService.Initialize()) { var subscriptionFacade = new SubscriptionFacade(); var reportsFacade = new ReportsFacade(); var unavailableDevices = await reportsFacade.GetUnavailableDeviceReports(); var subscriptions = (await subscriptionFacade.GetAllSubscriptions()).ToArray(); foreach (var subscription in subscriptions.Where(t => t.LastActivity != null && DateTime.UtcNow.Subtract(t.LastActivity.Created) > TimeSpan.FromDays(1))) { var connector = new ConnectorClient(new Uri(subscription.ServiceUrl), Environment.GetEnvironmentVariable("MicrosoftAppId"), Environment.GetEnvironmentVariable("MicrosoftAppPassword")); await connector.Conversations.DeleteActivityAsync(subscription.LastActivity.ConversationId, subscription.LastActivity.ActitityId); subscription.LastActivity = null; await subscriptionFacade.UpdateBotSubscription(subscription); } foreach (var deviceGroup in unavailableDevices.GroupBy(t => t.Group)) { var message = new DeviceStatusMessage(deviceGroup.ToList()); var recipients = subscriptions.Where(t => t.GroupName == deviceGroup.Key); await message.SendMessageToChannel("Found unavailable devices!", recipients); } } }
public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "spot/{group}/{address}")] HttpRequestMessage req, string group, string address, TraceWriter log) { var reportsFacade = new ReportsFacade(); await reportsFacade.ReportDeviceSpot(group, address); return(req.CreateResponse(HttpStatusCode.OK)); }
protected async Task <string> ReportStatus(IMessageActivity message, string groupName) { var reportsFacade = new ReportsFacade(); var devices = await reportsFacade.GetDeviceReports(); var replyMessage = new ProactiveMessages.DeviceStatusMessage(devices.Where(t => t.Group == groupName)); return(await replyMessage.Build()); }