Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagec#
firstline22
titleCreate the client
linenumberstrue
			string url = "https://myWebPortalAdress.com";
			string token = "myApiTicketToken";
			string secret = "myApiTicketSecret";

			var meridixClient = MeridixStudioClient.Create(url, token, secret();

Retrieve the data needed to create the parameter object that is used to generate the report

Code Block
languagec#
firstline28
titleExample code
linenumberstrue
            /*
             * Retrieves the data needed to create the ReportV11ParametersDto object that is being sent to generate the report
            */
            // Retrieves the customer id from the ticket
            var customerId = meridixClient.GetTicketCustomerId();

            // Retrieves the modules names activated
            var modules = meridixClient.ReportApiV11().GetAvailableModules();

            // Retrieves the report name identifier
            var reportNames = meridixClient.ReportApiV11().GetAvailableReports(modules["theModuleIWantReportsFrom"]);

            // Optional
            // Retrieves the different types of measurement objects
            var measurementObjectTypes = meridixClient.ReportApiV11().GetAvailableMeasurementObjectTypes(modules["theModuleIWantReportsFrom"], reportNames["theNameOfTheReport"]);

            // Retrieves the measurement objects that the report should be based on
            // The argument is the key in the measurementObjectTypes
            var listOfMeasurementObjects = meridixClient.ReportApiV11().GetAvailableMeasurementObjects(measurementObjectTypes.Keys.First());

            // Optional
            // Retrieves the groups the measurement objects might belong to
            var listOfGroups = meridixClient.ReportApiV11().GetAvailableGroups();


            // There are to types of groupings result and interval and they are both used indifferently of each other

            // Result grouping groups the result based on measurement objects or the groups the measurement objects belong to
            // Is a list containing [Total|Objects|Groups|GroupsObjects]
            var resultGroupings = meridixClient.ReportApiV11().GetAvailableResultGroupings();

            // Optional
            // Interval grouping sets the time grouping [Time|Weekday|Month|Date|Week|YearMonth|Quarter|Year|Period]
            var intervalGrouping = meridixClient.ReportApiV11().GetAvailableIntervalGroupings();


            // Retrieves any custom parameters on the report if they exist
            var customParameters = meridixClient.ReportApiV11()
                .GetAvailableCustomParameters(modules["theModuleIWantReportsFrom"], reportNames["theNameOfTheReport"]);


            /*
             * Create the ReportV11ParametersDto object
             */
            var parameters = new ReportV11ParametersDto()
            {
                CustomerId = customerId,
                ModuleName = modules["theModuleIWantReportsFrom"],
                ReportName = reportNames["theNameOfTheReport"],
                FromDate = "20190415",
                ToDate = "20190419",
                Dates = null, // OPTIONAL: Used to create report for specific dates, is an array of date-strings
                FromMinute = 420, // The time of day to start measure in minutes from 00:00 in the morning
                ToMinute = 1019, // The time of day to stop measure in minutes from 00:00 in the morning
                IntervalMinutes = 30,
                TimeFormat = "hhmmss", // OPTIONAL
                ResultGrouping = "GroupsObjects",
                CollectionPointIdentifier = "CollectionPointIdentifier", // OPTIONAL: Can be excluded if there is only one and you are not using a system ticket. Can be found in the web portal Administration => Collection Points
                MeasurementObjectType = measurementObjectTypes.Keys.First(), // OPTIONAL
                MeasurementObjectIdentifiers = new List<string>() // Specifies the measurement object that the report is based on. 
                {
                    listOfMeasurementObjects[0].ObjectIdentifier,
                    listOfMeasurementObjects[1].ObjectIdentifier // And so on
                },
                MeasurementObjectGroupIdentifiers = new List<string>() // OPTIONAL: The group identifiers
                {
                    listOfGroups[0].Name,
                    listOfGroups[1].Name
                },
                CustomParameters = { }, // OPTIONAL: Custom parameters are defined here if they exist
                IgnoreNonExistingMeasurementObjectIdentifiers = false, // OPTIONAL: Specifies if the API should ignore any exceptions thrown if a measurement object is specified but does not exist or is accessible
                IncludeColumns = new List<string>() // OPTIONAL: An array of strings with the column names that you would like to return in the result. Leave empty or skip to include all.
                {
                    "Incoming",
                    "IncFromExternal",
                    "IncFromInternal",
                    "IncFromQueues",
                    "IncAnswered",
                    "IncAbandoned",
                    "Outgoing",
                    "OutToExternal",
                    "OutToInternal",
                    "OutAnswered",
                    "OutAbandoned",
                },
                IncludeGroupings = new List<string>() // OPTIONAL: An array of strings with the interval grouping that you would like to return in the result. Leave empty or skip to include all.
                {
                    "Time",
                    "Weekday",
                    "Month",
                    "Date",
                    "Week",
                    "YearMonth",
                    "Quarter",
                    "Year",
                    "Period"
                },
                IncludeSpecificationLists = true // OPTIONAL: A boolean value specifying if a the call specification should be included (if possible). Note that there are a max limit of items configured on the system level that cannot be overridden through the API.
            };

            /*
             * Generate the report using the ReportV11ParametersDto
             */
            ReportV11ResultDto result = meridixClient.ReportApiV11().Generate(parameters, new CultureInfo("en-GB"));

            /*
             * Extract data from the report
             */
            var totalPeriod = result.Presentations.Groupings["period"]; // Gets the data from the period grouping
			var columns = result.PresentaiontsPresentations.Columns["incoming"]; // Gets metadata about the columns (name and description)


...