From 64dde6cb383cb5991307d2db01ce40c722134e1d Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Fri, 9 May 2025 09:47:21 -0400 Subject: [PATCH] MT#62544 add transcription columns Change-Id: Ia1db4faa92b187459fccf3bb50197b52454d04e0 --- db_scripts/diff/15859.down | 13 ++++++++ db_scripts/diff/15859.up | 13 ++++++++ schema/kamailio.json | 66 ++++++++++++++++++++++++++++++++++++-- schema/kamailio.sql | 5 ++- schema/ngcp.sql | 3 +- schema/provisioning.json | 48 +++++++++++++++++++++++++++ schema/provisioning.sql | 3 ++ 7 files changed, 146 insertions(+), 5 deletions(-) create mode 100644 db_scripts/diff/15859.down create mode 100644 db_scripts/diff/15859.up diff --git a/db_scripts/diff/15859.down b/db_scripts/diff/15859.down new file mode 100644 index 00000000..c97d64c5 --- /dev/null +++ b/db_scripts/diff/15859.down @@ -0,0 +1,13 @@ +use provisioning; +alter table recording_streams + drop index transcript_status_call_idx, + drop column transcript_status, + drop column transcript; + +use kamailio; +alter table voicemail_spool + drop index transcript_status_mailboxuser_idx, + drop column transcript_status, + drop column transcript, + drop index mboxuser_msgnum_idx, + add index mailboxuser_idx (mailboxuser); diff --git a/db_scripts/diff/15859.up b/db_scripts/diff/15859.up new file mode 100644 index 00000000..be8b53dc --- /dev/null +++ b/db_scripts/diff/15859.up @@ -0,0 +1,13 @@ +use provisioning; +alter table recording_streams + add column transcript_status enum('none', 'pending', 'done') not null default 'none', + add column transcript text not null default '', + add index transcript_status_call_idx (transcript_status, `call`); + +use kamailio; +alter table voicemail_spool + add column transcript_status enum('none', 'pending', 'done') not null default 'none', + add column transcript text not null default '', + drop index mailboxuser_idx, + add index mboxuser_msgnum_idx (mailboxuser, msgnum), + add index transcript_status_mailboxuser_idx (transcript_status, mailboxuser); diff --git a/schema/kamailio.json b/schema/kamailio.json index 4414f273..badac5f9 100644 --- a/schema/kamailio.json +++ b/schema/kamailio.json @@ -6972,6 +6972,30 @@ "TABLE_NAME" : "voicemail_spool", "key_col" : "voicemail_spool/recording" }, + "voicemail_spool/transcript" : { + "CHARACTER_SET_NAME" : "utf8mb3", + "COLLATION_NAME" : "utf8mb3_general_ci", + "COLUMN_DEFAULT" : "''", + "COLUMN_NAME" : "transcript", + "COLUMN_TYPE" : "text", + "EXTRA" : "", + "IS_NULLABLE" : "NO", + "ORDINAL_POSITION" : 16, + "TABLE_NAME" : "voicemail_spool", + "key_col" : "voicemail_spool/transcript" + }, + "voicemail_spool/transcript_status" : { + "CHARACTER_SET_NAME" : "utf8mb3", + "COLLATION_NAME" : "utf8mb3_general_ci", + "COLUMN_DEFAULT" : "'none'", + "COLUMN_NAME" : "transcript_status", + "COLUMN_TYPE" : "enum('none','pending','done')", + "EXTRA" : "", + "IS_NULLABLE" : "NO", + "ORDINAL_POSITION" : 15, + "TABLE_NAME" : "voicemail_spool", + "key_col" : "voicemail_spool/transcript_status" + }, "voicemail_users/attach" : { "CHARACTER_SET_NAME" : "utf8mb3", "COLLATION_NAME" : "utf8mb3_general_ci", @@ -10586,17 +10610,53 @@ "TABLE_NAME" : "voicemail_spool", "key_col" : "voicemail_spool/dir/1" }, - "voicemail_spool/mailboxuser_idx/1" : { + "voicemail_spool/mboxuser_msgnum_idx/1" : { "COLLATION" : "A", "COLUMN_NAME" : "mailboxuser", - "INDEX_NAME" : "mailboxuser_idx", + "INDEX_NAME" : "mboxuser_msgnum_idx", "INDEX_TYPE" : "BTREE", "NON_UNIQUE" : 1, "NULLABLE" : "YES", "SEQ_IN_INDEX" : 1, "SUB_PART" : null, "TABLE_NAME" : "voicemail_spool", - "key_col" : "voicemail_spool/mailboxuser_idx/1" + "key_col" : "voicemail_spool/mboxuser_msgnum_idx/1" + }, + "voicemail_spool/mboxuser_msgnum_idx/2" : { + "COLLATION" : "A", + "COLUMN_NAME" : "msgnum", + "INDEX_NAME" : "mboxuser_msgnum_idx", + "INDEX_TYPE" : "BTREE", + "NON_UNIQUE" : 1, + "NULLABLE" : "", + "SEQ_IN_INDEX" : 2, + "SUB_PART" : null, + "TABLE_NAME" : "voicemail_spool", + "key_col" : "voicemail_spool/mboxuser_msgnum_idx/2" + }, + "voicemail_spool/transcript_status_mailboxuser_idx/1" : { + "COLLATION" : "A", + "COLUMN_NAME" : "transcript_status", + "INDEX_NAME" : "transcript_status_mailboxuser_idx", + "INDEX_TYPE" : "BTREE", + "NON_UNIQUE" : 1, + "NULLABLE" : "", + "SEQ_IN_INDEX" : 1, + "SUB_PART" : null, + "TABLE_NAME" : "voicemail_spool", + "key_col" : "voicemail_spool/transcript_status_mailboxuser_idx/1" + }, + "voicemail_spool/transcript_status_mailboxuser_idx/2" : { + "COLLATION" : "A", + "COLUMN_NAME" : "mailboxuser", + "INDEX_NAME" : "transcript_status_mailboxuser_idx", + "INDEX_TYPE" : "BTREE", + "NON_UNIQUE" : 1, + "NULLABLE" : "YES", + "SEQ_IN_INDEX" : 2, + "SUB_PART" : null, + "TABLE_NAME" : "voicemail_spool", + "key_col" : "voicemail_spool/transcript_status_mailboxuser_idx/2" }, "voicemail_users/PRIMARY/1" : { "COLLATION" : "A", diff --git a/schema/kamailio.sql b/schema/kamailio.sql index 16027774..792194b5 100644 --- a/schema/kamailio.sql +++ b/schema/kamailio.sql @@ -1040,10 +1040,13 @@ CREATE TABLE `voicemail_spool` ( `flag` varchar(128) DEFAULT '', `msg_id` varchar(40) DEFAULT NULL, `call_id` varchar(255) DEFAULT NULL, + `transcript_status` enum('none','pending','done') NOT NULL DEFAULT 'none', + `transcript` text NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `dir` (`dir`), - KEY `mailboxuser_idx` (`mailboxuser`), KEY `callid_idx` (`call_id`), + KEY `mboxuser_msgnum_idx` (`mailboxuser`,`msgnum`), + KEY `transcript_status_mailboxuser_idx` (`transcript_status`,`mailboxuser`), CONSTRAINT `v_s_mailboxuser_ref` FOREIGN KEY (`mailboxuser`) REFERENCES `voicemail_users` (`customer_id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; /*!40101 SET character_set_client = @saved_cs_client */; diff --git a/schema/ngcp.sql b/schema/ngcp.sql index 5e71dd40..afa973da 100644 --- a/schema/ngcp.sql +++ b/schema/ngcp.sql @@ -24,7 +24,7 @@ CREATE TABLE `db_schema` ( PRIMARY KEY (`id`), UNIQUE KEY `rev_idx` (`revision`,`node`), KEY `release_idx` (`release`) -) ENGINE=InnoDB AUTO_INCREMENT=906 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; +) ENGINE=InnoDB AUTO_INCREMENT=907 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; /*!40101 SET character_set_client = @saved_cs_client */; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8mb4 */; @@ -30956,6 +30956,7 @@ INSERT INTO `db_schema` VALUES (902,15839,'spce','1970-01-01 00:00:01','trunk'); INSERT INTO `db_schema` VALUES (903,15840,'spce','1970-01-01 00:00:01','trunk'); INSERT INTO `db_schema` VALUES (904,15841,'spce','1970-01-01 00:00:01','trunk'); INSERT INTO `db_schema` VALUES (905,15842,'spce','1970-01-01 00:00:01','trunk'); +INSERT INTO `db_schema` VALUES (906,15859,'spce','1970-01-01 00:00:01','trunk'); commit; set autocommit=0; INSERT INTO `timezone` VALUES ('1','localtime','1970-01-01 00:00:01','1970-01-01 00:00:01',NULL); diff --git a/schema/provisioning.json b/schema/provisioning.json index 2fb60051..2dc4bcaa 100644 --- a/schema/provisioning.json +++ b/schema/provisioning.json @@ -1428,6 +1428,30 @@ "TABLE_NAME" : "recording_streams", "key_col" : "recording_streams/tag_label" }, + "recording_streams/transcript" : { + "CHARACTER_SET_NAME" : "utf8mb3", + "COLLATION_NAME" : "utf8mb3_general_ci", + "COLUMN_DEFAULT" : "''", + "COLUMN_NAME" : "transcript", + "COLUMN_TYPE" : "text", + "EXTRA" : "", + "IS_NULLABLE" : "NO", + "ORDINAL_POSITION" : 18, + "TABLE_NAME" : "recording_streams", + "key_col" : "recording_streams/transcript" + }, + "recording_streams/transcript_status" : { + "CHARACTER_SET_NAME" : "utf8mb3", + "COLLATION_NAME" : "utf8mb3_general_ci", + "COLUMN_DEFAULT" : "'none'", + "COLUMN_NAME" : "transcript_status", + "COLUMN_TYPE" : "enum('none','pending','done')", + "EXTRA" : "", + "IS_NULLABLE" : "NO", + "ORDINAL_POSITION" : 17, + "TABLE_NAME" : "recording_streams", + "key_col" : "recording_streams/transcript_status" + }, "rtc_session/id" : { "CHARACTER_SET_NAME" : null, "COLLATION_NAME" : null, @@ -9610,6 +9634,30 @@ "TABLE_NAME" : "recording_streams", "key_col" : "recording_streams/call/1" }, + "recording_streams/transcript_status_call_idx/1" : { + "COLLATION" : "A", + "COLUMN_NAME" : "transcript_status", + "INDEX_NAME" : "transcript_status_call_idx", + "INDEX_TYPE" : "BTREE", + "NON_UNIQUE" : 1, + "NULLABLE" : "", + "SEQ_IN_INDEX" : 1, + "SUB_PART" : null, + "TABLE_NAME" : "recording_streams", + "key_col" : "recording_streams/transcript_status_call_idx/1" + }, + "recording_streams/transcript_status_call_idx/2" : { + "COLLATION" : "A", + "COLUMN_NAME" : "call", + "INDEX_NAME" : "transcript_status_call_idx", + "INDEX_TYPE" : "BTREE", + "NON_UNIQUE" : 1, + "NULLABLE" : "", + "SEQ_IN_INDEX" : 2, + "SUB_PART" : null, + "TABLE_NAME" : "recording_streams", + "key_col" : "recording_streams/transcript_status_call_idx/2" + }, "rtc_session/PRIMARY/1" : { "COLLATION" : "A", "COLUMN_NAME" : "id", diff --git a/schema/provisioning.sql b/schema/provisioning.sql index 0bc9b9fb..035c27fd 100644 --- a/schema/provisioning.sql +++ b/schema/provisioning.sql @@ -283,8 +283,11 @@ CREATE TABLE `recording_streams` ( `end_timestamp` decimal(13,3) DEFAULT NULL, `tag_label` varchar(255) NOT NULL DEFAULT '', `stream` longblob NOT NULL DEFAULT '', + `transcript_status` enum('none','pending','done') NOT NULL DEFAULT 'none', + `transcript` text NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `call` (`call`), + KEY `transcript_status_call_idx` (`transcript_status`,`call`), CONSTRAINT `fk_call_id` FOREIGN KEY (`call`) REFERENCES `recording_calls` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; /*!40101 SET character_set_client = @saved_cs_client */;