# Copyright (c) 2010 Flowerfire, Inc. All Rights Reserved. norstar_prelude_and_cinphony_acd = { plugin_version = "1.0.1" # Initial creation - 1.0 # 2011-07-08 - 1.0.1 - MSG - Edited info lines. info.1.manufacturer = "Norstar" info.1.device = "PRELUDE and CINPHONY ADC" info.1.version.1 = "" # The name of the log format log.format.format_label = "Norstar PRELUDE and CINPHONY ADC Log Format" log.miscellaneous.log_data_type = "generic" log.miscellaneous.log_format_type = "other" # The log is in this format if any of the first ten lines match this regular expression log.format.autodetect_expression = ` matches_regular_expression(volatile.log_data_line, '^"AGENT","[0-9]+","[^"]+","[^"]+","[0-9][0-9]/[0-9][0-9]/[0-9][0-9]","[0-9][0-9]:[0-9][0-9] [AP]M","[A-Z]+","[0-9]+","[0-9]+","[0-9]+","[NY]+"$') or matches_regular_expression(volatile.log_data_line, '^"CALL","[0-9][0-9]/[0-9][0-9]/[0-9][0-9]","[0-9]+","[0-9][0-9]:[0-9][0-9] [AP]M","[0-9]+","[A-Z]+","[0-9]+","[0-9]+","[0-9]+","[0-9]+","[0-9]+","[0-9]+","[0-9]+","[0-9]+","[0-9]+","[A-Z]+","[0-9]+","[0-9]+","[0-9]+","[0-9]+","[0-9]+","[0-9]+","[0-9]+","[0-9]+","[0-9]+","[0-9]+","[0-9]+","[0-9]+","[0-9]+","[0-9]+","[0-9]+","[0-9]+","[0-9]*","[a-zA-z0-9]*","[0-9]*"') or matches_regular_expression(volatile.log_data_line, '^"CATEGORY","[0-9]+","[a-zA-Z0-9]+","[0-9][0-9]/[0-9][0-9]/[0-9][0-9]","[0-9][0-9]:[0-9][0-9] [AP]M","[0-9]+","[0-9]+"') ` log.format.parse_only_with_filters = "true" # The format of dates and times in this log log.format.date_format = "auto" log.format.time_format = "auto" # Log fields log.fields = { record_type = "" agent_id = "" agent_first_name = "" agent_last_name = "" date = "" time = "" logout_type = "" login_duration = "" available_duration = "" unavailable_duration = "" logged_groups = "" call = "" line = "" type = "" group_number = "" origination_group = "" duration_to_answer = "" talk_duration = "" hold_duration = "" wrap_duration = "" abandoned_duration = "" ringing_duration = "" supervisor_help_count = "" routing_type = "" routing_step_counts = "" originating_number = "" originating_name = "" destination_number = "" category = "" description = "" group_number = "" } # log.fields log.parsing_filters.parse = ` if (matches_regular_expression(current_log_line(), '^"(AGENT)","([0-9]+)","([^"]+)","([^"]+)","([0-9][0-9]/[0-9][0-9]/[0-9][0-9])","([0-9][0-9]:[0-9][0-9] [AP]M)","([A-Z]+)","([0-9]+)","([0-9]+)","([0-9]+)","([NY]+)"$')) then ( set_collected_field('', 'record_type', $1); set_collected_field('', 'agent_id', $2); set_collected_field('', 'agent_first_name', $3); set_collected_field('', 'agent_last_name', $4); set_collected_field('', 'date', $5); set_collected_field('', 'time', $6); set_collected_field('', 'logout_type', $7); set_collected_field('', 'login_duration', $8); set_collected_field('', 'available_duration', $9); set_collected_field('', 'unavailable_duration', $10); set_collected_field('', 'logged_groups', $11); accept_collected_entry('', false); ) else if (matches_regular_expression(current_log_line(), '^"(CALL)","([0-9][0-9]/[0-9][0-9]/[0-9][0-9])","([0-9]+)","([0-9][0-9]:[0-9][0-9] [AP]M)","([0-9]+)","([A-Z]+)","([0-9]+)","([0-9]+)","([0-9]+)","([0-9]+)","([0-9]+)","([0-9]+)","([0-9]+)","([0-9]+)","([0-9]+)","([A-Z]+)","([0-9]+)","([0-9]+)","([0-9]+)","([0-9]+)","([0-9]+)","([0-9]+)","([0-9]+)","([0-9]+)","([0-9]+)","([0-9]+)","([0-9]+)","([0-9]+)","([0-9]+)","([0-9]+)","([0-9]+)","([0-9]+)","([0-9]*)","([a-zA-z0-9]*)","([0-9]*)"')) then ( set_collected_field('', 'record_type', $1); set_collected_field('', 'date', $2); set_collected_field('', 'line', $3); set_collected_field('', 'time', $4); set_collected_field('', 'agent_id', $5); set_collected_field('', 'type', $6); set_collected_field('', 'group_number', $7); set_collected_field('', 'origination_group', $8); set_collected_field('', 'duration_to_answer', $9); set_collected_field('', 'talk_duration', $10); set_collected_field('', 'hold_duration', $11); set_collected_field('', 'wrap_duration', $12); set_collected_field('', 'abandoned_duration', $13); set_collected_field('', 'ringing_duration', $14); set_collected_field('', 'supervisor_help_count', $15); set_collected_field('', 'routing_type', $16); set_collected_field('', 'routing_step_counts', $17 . ',' . $18 . ',' . $19 . ',' . $20 . ',' . $21 . ',' . $22 . ',' . $23 . ',' . $24 . ',' . $25 . ',' . $26 . ',' . $27 . ',' . $28 . ',' . $29 . ',' . $30 . ',' . $31 . ',' . $32); set_collected_field('', 'originating_number', $33); set_collected_field('', 'originatin_name', $34); set_collected_field('', 'destination_number', $35); accept_collected_entry('', false); ) else if (matches_regular_expression(current_log_line(), '^"(CATEGORY)","([0-9]+)","([a-zA-Z0-9]+)","([0-9][0-9]/[0-9][0-9]/[0-9][0-9])","([0-9][0-9]:[0-9][0-9] [AP]M)","([0-9]+)","([0-9]+)"')) then ( set_collected_field('', 'record_type', $1); set_collected_field('', 'category', $2); set_collected_field('', 'description', $3); set_collected_field('', 'date', $4); set_collected_field('', 'time', $5); set_collected_field('', 'agent_id', $6); set_collected_field('', 'group_number', $7); accept_collected_entry('', false); ) ` # Database fields database.fields = { date_time = "" day_of_week = "" hour_of_day = "" record_type = "" agent_id = "" agent_first_name = "" agent_last_name = "" logout_type = "" logged_groups = "" call = "" line = "" type = "" group_number = "" origination_group = "" routing_step_counts = "" routing_type = "" originating_number = "" originating_name = "" destination_number = "" category = "" description = "" group_number = "" } # database.fields database.numerical_fields = { events = { label = "$lang_stats.field_labels.events" default = true requires_log_field = false type = "int" display_format_type = "integer" entries_field = true } # events login_duration = { label = $lang_stats.field_labels.login_duration default = true requires_log_field = true type = float display_format_type = duration_compact } # login_duration available_duration = { label = $lang_stats.field_labels.available_duration default = false requires_log_field = true type = float display_format_type = duration_compact } # available_duration unavailable_duration = { label = $lang_stats.field_labels.unavailable_duration default = false requires_log_field = true type = float display_format_type = duration_compact } # unavailable_duration duration_to_answer = { label = $lang_stats.field_labels.duration_to_answer default = false requires_log_field = true type = float display_format_type = duration_compact } # duration_to_answer talk_duration = { label = $lang_stats.field_labels.talk_duration default = false requires_log_field = true type = float display_format_type = duration_compact } # talk_duration hold_duration = { label = $lang_stats.field_labels.hold_duration default = false requires_log_field = true type = float display_format_type = duration_compact } # hold_duration wrap_duration = { label = $lang_stats.field_labels.wrap_duration default = false requires_log_field = true type = float display_format_type = duration_compact } # wrap_duration abandoned_duration = { label = $lang_stats.field_labels.abandoned_duration default = false requires_log_field = true type = float display_format_type = duration_compact } # abandoned_duration ringing_duration = { label = $lang_stats.field_labels.ringing_duration default = false requires_log_field = true type = float display_format_type = duration_compact } # ringing_duration supervisor_help_count = { label = $lang_stats.field_labels.supervisor_help_count default = false requires_log_field = true type = "int" display_format_type = "integer" } # supervisor_help_count } # database.numerical_fields log.filters = { mark_entry = { label = '$lang_admin.log_filters.mark_entry_label' comment = '$lang_admin.log_filters.mark_entry_comment' value = 'events = 1;' } # mark_entry } # log.filters create_profile_wizard_options = { date_time_tracking = true # How the reports should be grouped in the report menu report_groups = { date_time_group = "" record_type = true agent_id = true agent_first_name = true agent_last_name = true logout_type = true logged_groups = true call = true line = true type = true group_number = true origination_group = true duration_to_answer = true routing_step_counts = true routing_type = true originating_number = true originating_name = true destination_number = true category = true description = true group_number = true } # report_groups } # create_profile_wizard_options } # norstar_prelude_and_cinphony_acd