public static async Task <EndUserAndAgentConversationMappingState> GetFromVso(int vsoId) { using (WorkItemTrackingHttpClient workItemTrackingHttpClient = VsoHelper.GetWorkItemTrackingHttpClient()) { try { TeamFoundation.WorkItemTracking.WebApi.Models.WorkItem workitem = await workItemTrackingHttpClient.GetWorkItemAsync(vsoId); return(new EndUserAndAgentConversationMappingState(vsoId.ToString(), workitem.Fields[VsoHelper.EndUserNameFieldName].ToString(), workitem.Fields[VsoHelper.EndUserIdFieldName].ToString(), workitem.Fields[VsoHelper.EndUserConversationIdFieldName].ToString(), workitem.Fields[VsoHelper.AgentConversationIdFieldName].ToString())); } catch (Exception ex) { WebApiConfig.TelemetryClient.TrackException(ex, new Dictionary <string, string> { { "function", "CreateAConversation" }, { "debugNote", "error closing task" }, { "vsoId", vsoId.ToString() }, }); throw; } } }
public async Task SaveInVso(string vsoId) { Uri uri = new Uri(VsoHelper.Uri); JsonPatchDocument patchDocument = new JsonPatchDocument { new JsonPatchOperation { Operation = Operation.Add, Path = $"/fields/{VsoHelper.EndUserConversationIdFieldName}", Value = EndUserConversationId }, new JsonPatchOperation { Operation = Operation.Add, Path = $"/fields/{VsoHelper.AgentConversationIdFieldName}", Value = AgentConversationId }, new JsonPatchOperation { Operation = Operation.Add, Path = $"/fields/{VsoHelper.EndUserIdFieldName}", Value = EndUserId }, new JsonPatchOperation { Operation = Operation.Add, Path = $"/fields/{VsoHelper.EndUserNameFieldName}", Value = EndUserName }, }; using (WorkItemTrackingHttpClient workItemTrackingHttpClient = VsoHelper.GetWorkItemTrackingHttpClient()) { try { TeamFoundation.WorkItemTracking.WebApi.Models.WorkItem result = await workItemTrackingHttpClient.UpdateWorkItemAsync(patchDocument, Convert.ToInt32(vsoId)); Trace.TraceInformation($"Project {vsoId} successfully updated. {this}"); } catch (Exception ex) { WebApiConfig.TelemetryClient.TrackException(ex, new Dictionary <string, string> { { "function", "SaveInVso" }, { "debugNote", "Failed to update project" }, { "vsoId", vsoId }, }); throw; } } }
private static Attachment BuildOptionsForExistingProject(TeamFoundation.WorkItemTracking.WebApi.Models.WorkItem workItem) { var heroCard = new HeroCard { Title = "Hello! I am Expert Intelligence Bot.", Subtitle = "I am supported by experts who can work for you." + $"You can also reach out to me by sending SMS at {ConfigurationManager.AppSettings["BotPhoneNumber"]}", Text = $"I am tracking project #{workItem.Id} " + $"due on {workItem.Fields["Microsoft.VSTS.Scheduling.TargetDate"]} " + $"Description: {workItem.Fields[VsoHelper.DescriptionFieldName]}). " + "Before we begin working on new one, we need to first close existing project one", Buttons = new List <CardAction> { new CardAction(ActionTypes.ImBack, $"Get details of project #{workItem.Id}", value: $"getproject {workItem.Id}"), new CardAction(ActionTypes.ImBack, $"Close project #{workItem.Id}", value: $"closeproject {workItem.Id}") } }; return(heroCard.ToAttachment()); }