Officially documented release
This commit is contained in:
parent
1bb7661f94
commit
4c58351635
@ -2,6 +2,19 @@ package models
|
||||
|
||||
import "time"
|
||||
|
||||
// DBAmendment is used to store any changes made to interpreter or client processed calls in the database, although theoretically it could be tailored to any table, as long as the amendments queue handles the application logic..
|
||||
//
|
||||
// - Id is an auto-incrementing integer, with no practical application.
|
||||
// - ConversationId references the conversation ID of either the client or interpreter processed call.
|
||||
// - AmendmentColumn is the name of the column to be amended.
|
||||
// - AmendmentValue is the value to overwrite the amendment column's existing value with.
|
||||
// - Requestor is a string reference as to who created the amendment.
|
||||
// - RequestedAt is the creation time of the amendment.
|
||||
//
|
||||
// Table Schema:
|
||||
//
|
||||
// Primary Key: Id
|
||||
// Indexes: Id, ConversationId, RequestedAt
|
||||
type DBAmendment struct {
|
||||
Id int `gorm:"primaryKey;autoIncrement"`
|
||||
ConversationId string `gorm:"index"`
|
||||
|
||||
@ -1,30 +0,0 @@
|
||||
package models
|
||||
|
||||
/*
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
type BaseCall struct {
|
||||
ClientConversationId string `gorm:"primaryKey;index"`
|
||||
CallType string `gorm:"index"`
|
||||
GenderPreference string
|
||||
ClientId int `gorm:"index"`
|
||||
LanguageId int
|
||||
CustomerDnis string
|
||||
CustomerAni string
|
||||
SearchStartTime *time.Time
|
||||
P1ConnectTime time.Time `gorm:"index"`
|
||||
P1DisconnectTime time.Time `gorm:"index"`
|
||||
P3ConnectTime *time.Time
|
||||
P3DisconnectTime *time.Time
|
||||
BookingRequestNumber *int `gorm:"index"`
|
||||
IvrData *int
|
||||
UtsEntries int
|
||||
InterpreterCount int
|
||||
}
|
||||
|
||||
func (BaseCall) TableName() string {
|
||||
return "gc_base_calls"
|
||||
}
|
||||
*/
|
||||
@ -2,6 +2,31 @@ package models
|
||||
|
||||
import "time"
|
||||
|
||||
// Booking is used to store data relating to any interpreter booking. It is the output of the bookings formatter, and contains re-maps of existing ticket data.
|
||||
//
|
||||
// - BookingReference is the reference number the client will use when they call in. It is also the numeric ticket ID from Zoho.
|
||||
// - BookingTime is the nominated time for the booking in TODO: what timezone is BookingTime in?
|
||||
// - Timezone is the customer specified timezone for the above booking time.
|
||||
// - Language is the foreign language requirement from the customer.
|
||||
// - CustomData contains any special customer data, typically from the cost code field in the ticket.
|
||||
// - Method is the type of booking: audio, video, in-person, etc.
|
||||
// - Duration is the currently specified length of the booking after any changes.
|
||||
// - BookedDuration is the initially nominated length of the booking.
|
||||
// - ConversationId is an optional field for a GenesysCloud conversation ID to be manually linked to the ticket.
|
||||
// - CancellationTime is the optional timestamp at which the customer or agent cancelled the request for the booking.
|
||||
// - InterpreterId is the 4-digit identifier of the interpreter selected for the prebooking.
|
||||
// - ClientId is the 5-digit identifier of the client who placed the prebooking.
|
||||
// - AgentName is the customer supplied name of the individual who requested the prebooking.
|
||||
// - AgentEmail is the customer supplied email address of the individual who requested the prebooking.
|
||||
// - AgentPhone is the customer supplied phone number of the individual who requested the prebooking.
|
||||
// - Comments contains any additional information supplied by the individual who requested the prebooking.
|
||||
// - BillingCode is an internal use field that indicates the current billing status and who should be paid/charged.
|
||||
// - TicketId is the Zoho internal use ID (not to be confused with the BookingReference or ticket number).
|
||||
//
|
||||
// Table Schema:
|
||||
//
|
||||
// Primary Key: BookingReference
|
||||
// Indexes: BookingReference, BookingTime, Method, ConversationId, InterpreterId, ClientId
|
||||
type Booking struct {
|
||||
BookingReference int `gorm:"primaryKey;index"`
|
||||
BookingTime *time.Time `gorm:"index"`
|
||||
|
||||
@ -4,6 +4,15 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// DBCall is a model that stores raw 'call' payloads from GenesysCloud websockets.
|
||||
//
|
||||
// - The ExtractLive function handles the conversion from JSON data (map) into formatted JSON string.
|
||||
//
|
||||
// Table Schema:
|
||||
//
|
||||
// Primary Key: Id
|
||||
// Indexes: ConnectedTime, DisconnectedTime, Id, ParticipantId
|
||||
// JSON Fields: DisconnectReasons, Other, Self
|
||||
type DBCall struct {
|
||||
AfterCallWorkRequired bool
|
||||
Confined bool
|
||||
|
||||
@ -1,29 +0,0 @@
|
||||
package models
|
||||
|
||||
/*
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
type CallStat struct {
|
||||
ClientConversationId string `gorm:"primaryKey;index"`
|
||||
CallType string `gorm:"index"`
|
||||
ClientId int `gorm:"index"`
|
||||
CustomerDnis string
|
||||
CustomerAni string
|
||||
P1ConnectTime time.Time `gorm:"index"`
|
||||
P1DisconnectTime time.Time `gorm:"index"`
|
||||
BookingRequestNumber *int `gorm:"index"`
|
||||
UtsQueue bool
|
||||
InterpreterCount int
|
||||
InterpreterConnected bool
|
||||
ClientDisconnected bool
|
||||
UtsDuration int
|
||||
UtsEntries int
|
||||
Status string
|
||||
}
|
||||
|
||||
func (CallStat) TableName() string {
|
||||
return "gc_call_stats"
|
||||
}
|
||||
*/
|
||||
@ -4,6 +4,16 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// DBConversation is a model that stores raw 'conversation' payloads from GenesysCloud websockets and API requests.
|
||||
//
|
||||
// - The ExtractLive function handles the conversion from JSON data (map) into formatted JSON string for websocket payloads.
|
||||
// - The ExtractWithoutAttributes function handles the conversion from JSON data (map) into formatted JSON string for gcq-details requests.
|
||||
//
|
||||
// Table Schema:
|
||||
//
|
||||
// Primary Key: Id
|
||||
// Indexes: End, Id, Start
|
||||
// JSON Fields: DivisionIds, RecentTransfers
|
||||
type DBConversation struct {
|
||||
Address *string
|
||||
DivisionIds *string `gorm:"type:json"`
|
||||
|
||||
@ -4,6 +4,16 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// CrmClient is a model that stores Client/Account records from CRM.
|
||||
//
|
||||
// - The intention of the model is to map JSON -> struct -> JSON
|
||||
// - To improve usability, GORM 'column' tags have been used to map CRM API names into more descriptive names.
|
||||
//
|
||||
// Table Schema:
|
||||
//
|
||||
// Primary Key: ID
|
||||
// Indexes: ID
|
||||
// JSON Fields: Attributes, MediaRoles, Wrapup
|
||||
type CrmClient struct {
|
||||
ID int `gorm:"primaryKey;column:id" json:"id"`
|
||||
BillingGroupNumber *int `gorm:"column:billing_group_number" json:"billing_group_number"`
|
||||
|
||||
@ -4,6 +4,15 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// CrmInterpreter is a model that stores Interpreter records from CRM.
|
||||
//
|
||||
// - The intention of the model is to map JSON -> struct -> JSON
|
||||
// - To improve usability, GORM 'column' tags have been used to map CRM API names into more descriptive names.
|
||||
//
|
||||
// Table Schema:
|
||||
//
|
||||
// Primary Key: ID
|
||||
// Indexes: ID
|
||||
type CrmInterpreter struct {
|
||||
ID int `gorm:"primaryKey;column:id" json:"id"`
|
||||
ABN *string `gorm:"column:abn" json:"abn"`
|
||||
|
||||
@ -2,6 +2,15 @@ package models
|
||||
|
||||
import ()
|
||||
|
||||
// CrmInvoiceConfig is a model that stores Invoice Configuration records from CRM.
|
||||
//
|
||||
// - The intention of the model is to map JSON -> struct -> JSON
|
||||
// - To improve usability, GORM 'column' tags have been used to map CRM API names into more descriptive names.
|
||||
//
|
||||
// Table Schema:
|
||||
//
|
||||
// Primary Key: ID
|
||||
// Indexes: ID
|
||||
type CrmInvoiceConfig struct {
|
||||
ID string `gorm:"primaryKey;column:id" json:"id"`
|
||||
Name string `gorm:"column:name;not null" json:"name"`
|
||||
|
||||
@ -1,5 +1,14 @@
|
||||
package models
|
||||
|
||||
// CrmLanguage is a model that stores Language records from CRM.
|
||||
//
|
||||
// - The intention of the model is to map JSON -> struct -> JSON
|
||||
// - To improve usability, GORM 'column' tags have been used to map CRM API names into more descriptive names.
|
||||
//
|
||||
// Table Schema:
|
||||
//
|
||||
// Primary Key: ID
|
||||
// Indexes: ID
|
||||
type CrmLanguage struct {
|
||||
ID int `gorm:"primaryKey;column:id" json:"id"`
|
||||
Name *string `gorm:"column:name" json:"name"`
|
||||
|
||||
@ -2,6 +2,15 @@ package models
|
||||
|
||||
import "time"
|
||||
|
||||
// CrmLanguageLookup is a model that stores Language Lookup records from CRM.
|
||||
//
|
||||
// - The intention of the model is to map JSON -> struct -> JSON
|
||||
// - To improve usability, GORM 'column' tags have been used to map CRM API names into more descriptive names.
|
||||
//
|
||||
// Table Schema:
|
||||
//
|
||||
// Primary Key: ID
|
||||
// Indexes: ID
|
||||
type CrmLanguageLookup struct {
|
||||
ID string `gorm:"primaryKey;column:id" json:"id"`
|
||||
Language *string `gorm:"column:language" json:"language"`
|
||||
|
||||
@ -1,5 +1,14 @@
|
||||
package models
|
||||
|
||||
// CrmPaymentConfig is a model that stores Payment Configuration records from CRM.
|
||||
//
|
||||
// - The intention of the model is to map JSON -> struct -> JSON
|
||||
// - To improve usability, GORM 'column' tags have been used to map CRM API names into more descriptive names.
|
||||
//
|
||||
// Table Schema:
|
||||
//
|
||||
// Primary Key: ID
|
||||
// Indexes: ID
|
||||
type CrmPaymentConfig struct {
|
||||
ID string `gorm:"primaryKey;column:id" json:"id"`
|
||||
Name string `gorm:"column:name;not null" json:"name"`
|
||||
|
||||
@ -2,6 +2,25 @@ package models
|
||||
|
||||
import "time"
|
||||
|
||||
/*
|
||||
All structs/models within this file are used by the gcq-formatter queue.
|
||||
Specific definitions as to what each model is used for should be found in the gcq-formatter documentation.
|
||||
The following file contains just a brief overview, and any documentation on gorm_models itself should reference that the specifics are also stored in gcq-formatter docs.
|
||||
*/
|
||||
|
||||
// BaseCall is used to store data on a client's attempt to create a billable record.
|
||||
//
|
||||
// This struct is part of the three primary components used for creating billable records:
|
||||
// - BaseCall
|
||||
// - InterpreterAttempt
|
||||
// - InterpreterConnection
|
||||
//
|
||||
// It is eventually merged with the other two to create a 'full' billing record that we can derive a $ amount from.
|
||||
//
|
||||
// Table Schema:
|
||||
//
|
||||
// Primary Key: ClientConversationId
|
||||
// Indexes: ClientConversationId, CallType, ClientId, P1ConnectTime, P1DisconnectTime, BookingRequestNumber
|
||||
type BaseCall struct {
|
||||
ClientConversationId string `gorm:"primaryKey;index"`
|
||||
CallType string `gorm:"index"`
|
||||
@ -26,6 +45,21 @@ func (BaseCall) TableName() string {
|
||||
return "gc_base_calls"
|
||||
}
|
||||
|
||||
// InterpreterAttempt is used to store data on the system's attempt to find an interpreter for a client's base call.
|
||||
// An interpreter attempt call involves the system dialling an interpreter, and providing them with the option to 'respond' in which they specify if they are available to take the call or not.
|
||||
// ClientConversationId is a reference to the client BaseCall which the system is attempting to connect the interpreter to.
|
||||
//
|
||||
// This struct is part of the three primary components used for creating billable records:
|
||||
// - BaseCall
|
||||
// - InterpreterAttempt
|
||||
// - InterpreterConnection
|
||||
//
|
||||
// It is eventually merged with the other two to create a 'full' billing record that we can derive a $ amount from.
|
||||
//
|
||||
// Table Schema:
|
||||
//
|
||||
// Primary Key: InterpreterConversationId
|
||||
// Indexes: InterpreterConversationId, InterpreterId, ClientConversationId
|
||||
type InterpreterAttempt struct {
|
||||
InterpreterConversationId string `gorm:"primaryKey;index"`
|
||||
InterpreterResponseTime time.Time
|
||||
@ -44,6 +78,22 @@ func (InterpreterAttempt) TableName() string {
|
||||
return "gc_interpreter_attempts"
|
||||
}
|
||||
|
||||
// InterpreterConnection is used to store data on an interpreter's connection to a BaseCall.
|
||||
// An interpreter connection is not its own call, it's a summation of data related to an interpreter's time spent on a base call.
|
||||
// ClientConversationId is a reference to the client BaseCall, which is the call this data is derived from.
|
||||
// InterpreterConversationId is a reference to the interpreter's acceptance call, which is a unique identifier for the interpreter's time on the call.
|
||||
//
|
||||
// This struct is part of the three primary components used for creating billable records:
|
||||
// - BaseCall
|
||||
// - InterpreterAttempt
|
||||
// - InterpreterConnection
|
||||
//
|
||||
// It is eventually merged with the other two to create a 'full' billing record that we can derive a $ amount from.
|
||||
//
|
||||
// Table Schema:
|
||||
//
|
||||
// Primary Key: InterpreterConversationId
|
||||
// Indexes: InterpreterConversationId, InterpreterId, ClientConversationId
|
||||
type InterpreterConnection struct {
|
||||
InterpreterConversationId string `gorm:"primaryKey;index"`
|
||||
InterpreterAccepted bool
|
||||
@ -61,6 +111,14 @@ func (InterpreterConnection) TableName() string {
|
||||
return "gc_interpreter_connections"
|
||||
}
|
||||
|
||||
// CallStat stored statistics & metrics on a client's attempt to create a billable record by finding an interpreter (BaseCall).
|
||||
// The stats collected are important for billing data as the CallStat object indicates whether or not the call was successfully serviced.
|
||||
// The stats are also used extensively for reporting purposes, and measure the company's defined SLAs, including UTS (unable to service) duration and the time taken to find & connect to an interpreter..
|
||||
//
|
||||
// Table Schema:
|
||||
//
|
||||
// Primary Key: ClientConversationId
|
||||
// Indexes: ClientConversationId, CallType, ClientId, ConversationStart, ConversationEnd, P1ConnectTime, P1DisconnectTime, BookingRequestNumber
|
||||
type CallStat struct {
|
||||
ClientConversationId string `gorm:"primaryKey;index"`
|
||||
CallType string `gorm:"index"`
|
||||
@ -92,6 +150,16 @@ func (CallStat) TableName() string {
|
||||
return "gc_call_stats"
|
||||
}
|
||||
|
||||
// Breakdown is used to store data relating to the call in a segment-by-segment basis.
|
||||
// The Breakdown is a translation of the technical data into domain specific language that non-technical members of the company can understand.
|
||||
// Not every segment is translated into a breakdown, only key events.
|
||||
// The breakdowns are also used extensively in terms of reporting, as they provide a very fine-grain overview of what happened on a given call.
|
||||
//
|
||||
// Table Schema:
|
||||
//
|
||||
// Primary Key: ClientConversationId, Timestamp, Task
|
||||
// Indexes: ClientConversationId, InterpreterConversationId, Timestamp, Task
|
||||
// JSON Fields: Metadata
|
||||
type Breakdown struct {
|
||||
ClientConversationId string `gorm:"primaryKey;index"`
|
||||
InterpreterConversationId string `gorm:"index"`
|
||||
@ -106,6 +174,15 @@ func (Breakdown) TableName() string {
|
||||
return "gc_call_breakdown"
|
||||
}
|
||||
|
||||
// CallMetrics store data relating to the call, specifically to do with duration/timing metadata.
|
||||
// The CallMetrics give an overview as to how the duration of any given call was spent, in terms of non-technical domain specific language.
|
||||
//
|
||||
// Table Schema:
|
||||
//
|
||||
// Primary Key: ClientConversationId
|
||||
// Indexes: ClientConversationId
|
||||
// JSON Fields: Metadata
|
||||
|
||||
type CallMetrics struct {
|
||||
ClientConversationId string `gorm:"primaryKey;index"`
|
||||
//
|
||||
|
||||
@ -1,10 +1,21 @@
|
||||
package models
|
||||
|
||||
// AnalyticsConversationWithAttributesQuery is used to bind the results of a paginated GenesysCloud API request.
|
||||
type AnalyticsConversationWithAttributesQuery struct {
|
||||
Conversations []AnalyticsConversationWithAttributes `json:"conversations"`
|
||||
Cursor *string `json:"cursor"`
|
||||
}
|
||||
|
||||
// AnalyticsConversationWithAttributes is used to bind the results of a GenesysCloud API request.
|
||||
//
|
||||
// It is a hierarchical structure (Participants has many Sessions has many Segments) and needs to be flattened into multiple tables prior to being saved in the database.
|
||||
//
|
||||
// The following payload JSON fields have an expected structure:
|
||||
// - Participants
|
||||
// - Participants.Sessions
|
||||
// - Participants.Sessions.MediaEndpointStats
|
||||
// - Participants.Sessions.Metrics
|
||||
// - Participants.Sessions.Segments
|
||||
type AnalyticsConversationWithAttributes struct {
|
||||
ConversationEnd string `json:"conversationEnd"`
|
||||
ConversationId string `json:"conversationId"`
|
||||
@ -58,10 +69,23 @@ type AnalyticsConversationWithAttributes struct {
|
||||
} `json:"participants"`
|
||||
}
|
||||
|
||||
// AnalyticsConversationWithoutAttributesQuery is used to bind the results of a paginated GenesysCloud API request.
|
||||
type AnalyticsConversationWithoutAttributesQuery struct {
|
||||
Conversations []AnalyticsConversationWithoutAttributes `json:"conversations"`
|
||||
TotalHits int `json:"totalHits"`
|
||||
}
|
||||
|
||||
// AnalyticsConversationWithoutAttributes is used to bind the results of a GenesysCloud API request.
|
||||
//
|
||||
// It is a hierarchical structure (Participants has many Sessions has many Segments) and needs to be flattened into multiple tables prior to being saved in the database.
|
||||
//
|
||||
// The following payload JSON fields have an expected structure:
|
||||
// - Participants
|
||||
// - Participants.Sessions
|
||||
// - Participants.Sessions.Segments
|
||||
// - Participants.Sessions.Flow
|
||||
// - Participants.Sessions.Metrics
|
||||
// - Participants.Sessions.MediaEndpointStats
|
||||
type AnalyticsConversationWithoutAttributes struct {
|
||||
ConversationId string `json:"conversationId"`
|
||||
ConversationStart string `json:"conversationStart"`
|
||||
@ -127,6 +151,16 @@ type AnalyticsConversationWithoutAttributes struct {
|
||||
} `json:"participants"`
|
||||
}
|
||||
|
||||
// NotificationConversationWithAttributes is used to bind the results of a GenesysCloud websocket notification.
|
||||
//
|
||||
// It is a hierarchical structure (Participants has many Sessions has many Segments) and needs to be flattened into multiple tables prior to being saved in the database.
|
||||
//
|
||||
// The following payload JSON fields have an expected structure:
|
||||
// - Divisions
|
||||
// - Divisions.Division
|
||||
// - Divisions.Entities
|
||||
// - Participants
|
||||
// - Participants.Calls
|
||||
type NotificationConversationWithAttributes struct {
|
||||
Address string `json:"address"`
|
||||
Divisions []struct {
|
||||
@ -185,12 +219,16 @@ type NotificationConversationWithAttributes struct {
|
||||
UtilizationLabelId string `json:"utilizationLabelId"`
|
||||
}
|
||||
|
||||
// UsersQuery is used to bind the results of an GenesysCloud API request to get all users.
|
||||
type UsersQuery struct {
|
||||
Entities []GCUser `json:"entities"`
|
||||
PageSize int `json:"pageSize"`
|
||||
Total int `json:"total"`
|
||||
}
|
||||
|
||||
// GCUser is a model used to store the results of GenesysCloud users.
|
||||
//
|
||||
// Given the similarity between the API requests returned value and the desired database schema, the DB model is used in UsersQuery, and also to upload directly to the database. No additional formatting work is required.
|
||||
type GCUser struct {
|
||||
Id string `json:"id" gorm:"primaryKey"`
|
||||
Name string `json:"name"`
|
||||
|
||||
@ -1,25 +0,0 @@
|
||||
package models
|
||||
|
||||
/*
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
type InterpreterAttempt struct {
|
||||
InterpreterConversationId string `gorm:"primaryKey;index"`
|
||||
InterpreterResponseTime time.Time
|
||||
InterpreterAccepted bool
|
||||
InterpreterId int `gorm:"index"`
|
||||
CallType string
|
||||
CallConnected string
|
||||
ClientConversationId string `gorm:"index"`
|
||||
LanguageId int
|
||||
InterpreterPhone string
|
||||
ConversationStart time.Time
|
||||
ConversationEnd time.Time
|
||||
}
|
||||
|
||||
func (InterpreterAttempt) TableName() string {
|
||||
return "gc_interpreter_attempts"
|
||||
}
|
||||
*/
|
||||
@ -1,24 +0,0 @@
|
||||
package models
|
||||
|
||||
/*
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
type InterpreterConnection struct {
|
||||
InterpreterConversationId string `gorm:"primaryKey;index"`
|
||||
InterpreterAccepted bool
|
||||
InterpreterId int `gorm:"index"`
|
||||
CallType string
|
||||
CallConnected string
|
||||
ClientConversationId string `gorm:"index"`
|
||||
LanguageId int
|
||||
InterpreterPhone string
|
||||
ConferenceStart time.Time
|
||||
ConferenceEnd time.Time
|
||||
}
|
||||
|
||||
func (InterpreterConnection) TableName() string {
|
||||
return "gc_interpreter_connections"
|
||||
}
|
||||
*/
|
||||
@ -6,6 +6,22 @@ import (
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// DBParticipant is a model that stores raw 'participant' payloads from GenesysCloud websockets and API requests.
|
||||
//
|
||||
// - The ExtractLive function handles the conversion from JSON data (map) into formatted JSON string for websocket payloads.
|
||||
// - The ExtractWithoutAttributes function handles the conversion from JSON data (map) into formatted JSON string for gcq-details requests.
|
||||
//
|
||||
// Table Schema:
|
||||
//
|
||||
// Primary Key: Id
|
||||
// Indexes: ConnectedTime, ConversationId, EndTime, Id, Name, Purpose
|
||||
// JSON Fields: Attributes, MediaRoles, Wrapup
|
||||
//
|
||||
// GORM Specifics:
|
||||
// - Can be preloaded with Sessions []DBSession
|
||||
// - Can be preloaded with Calls []DBCall
|
||||
// - Can be preloaded with User *GCUser
|
||||
// - BeforeSave function, converts UserId into 'nil' if an empty string is returned, this prevents foreign key violations.
|
||||
type DBParticipant struct {
|
||||
Address *string
|
||||
Attributes *string `gorm:"type:json"`
|
||||
|
||||
@ -140,45 +140,3 @@ type DBInterpreterProcessed struct {
|
||||
func (DBInterpreterProcessed) TableName() string {
|
||||
return "gc_interpreter_processed"
|
||||
}
|
||||
|
||||
/*
|
||||
type Processed struct {
|
||||
ClientConversationId string `gorm:"index"`
|
||||
InterpreterConversationId string `gorm:"primaryKey;index"`
|
||||
CallType string `gorm:"index"`
|
||||
GenderPreference string
|
||||
LanguageId int
|
||||
ClientId int `gorm:"index"`
|
||||
CustomerDnis string
|
||||
CustomerAni string
|
||||
InterpreterId int
|
||||
SearchStartTime time.Time `gorm:"index"`
|
||||
ClientIndex int
|
||||
NesIndex int
|
||||
P2ConnectTimeUtc time.Time `gorm:"index"`
|
||||
P2DisconnectTimeUtc time.Time `gorm:"index"`
|
||||
P1ConnectTimeUtc time.Time `gorm:"index"`
|
||||
P1DisconnectTimeUtc time.Time `gorm:"index"`
|
||||
P3ConnectTimeUtc *time.Time
|
||||
P3DisconnectTimeUtc *time.Time
|
||||
BookingRequestNumber *int `gorm:"index"`
|
||||
IvrData *int
|
||||
UtsEntries int
|
||||
InterpreterCount int
|
||||
Flags *string `gorm:"type:json"`
|
||||
Metadata *string `gorm:"type:json"`
|
||||
// Client data
|
||||
ClientCrmData string `gorm:"type:json"`
|
||||
InvoiceConfigCrmData string `gorm:"type:json"`
|
||||
LanguageCrmData string `gorm:"type:json"`
|
||||
InterpreterCrmData string `gorm:"type:json"`
|
||||
LanguageLookupCrmData string `gorm:"type:json"`
|
||||
VicTimezoneData string `gorm:"type:json"`
|
||||
NzTimezoneData string `gorm:"type:json"`
|
||||
LocalTimezoneData string `gorm:"type:json"`
|
||||
}
|
||||
|
||||
func (Processed) TableName() string {
|
||||
return "gc_processed"
|
||||
}
|
||||
*/
|
||||
|
||||
@ -2,6 +2,12 @@ package models
|
||||
|
||||
import "time"
|
||||
|
||||
// DBQueueLog is a model used to store metrics and information about a conversation's consumption within a queue.
|
||||
// - Queue is the name of the queue that processed the conversation.
|
||||
// - Start is the time that the queue consumer started processing the conversation.
|
||||
// - End is the time that the queue consumer finished processing the conversation.
|
||||
// - NextQueue is the name of the queue that the consumer attempted to forward the conversation ID into.
|
||||
// - Result is a map of metadata about the conversation's time in the consumer, including any potential error messages.
|
||||
type DBQueueLog struct {
|
||||
Queue string `gorm:"primaryKey"`
|
||||
ConversationId string `gorm:"primaryKey"`
|
||||
|
||||
@ -2,6 +2,7 @@ package models
|
||||
|
||||
import "time"
|
||||
|
||||
// WARNING: This table is **deprecated** and is no longer used for anything.
|
||||
type GCRaw struct {
|
||||
ClientConversationId string
|
||||
InterpreterConversationId string
|
||||
|
||||
@ -4,6 +4,15 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// DBSegment is a model that stores raw 'segment' payloads from GenesysCloud API requests.
|
||||
//
|
||||
// - The ExtractWithoutAttributes function handles the conversion from JSON data (map) into formatted JSON string for gcq-details requests.
|
||||
//
|
||||
// Table Schema:
|
||||
//
|
||||
// Primary Key: Id
|
||||
// Indexes: Id, SegmentEnd, SegmentStart, SegmentType, SessionId
|
||||
// JSON Fields: q950ResponseCodes
|
||||
type DBSegment struct {
|
||||
Id string `gorm:"primaryKey;index"`
|
||||
Conference bool
|
||||
|
||||
@ -1,5 +1,17 @@
|
||||
package models
|
||||
|
||||
// DBSession is a model that stores raw 'session' payloads from GenesysCloud API requests.
|
||||
//
|
||||
// - The ExtractWithoutAttributes function handles the conversion from JSON data (map) into formatted JSON string for gcq-details requests.
|
||||
//
|
||||
// Table Schema:
|
||||
//
|
||||
// Primary Key: Id
|
||||
// Indexes: Id, ParticipantId
|
||||
// JSON Fields: MediaEndpointStats, Metrics, Flow
|
||||
//
|
||||
// GORM Specifics:
|
||||
// - Can be preloaded with Segments []DBSegment
|
||||
type DBSession struct {
|
||||
Ani string
|
||||
Direction string
|
||||
|
||||
@ -2,6 +2,17 @@ package models
|
||||
|
||||
import "time"
|
||||
|
||||
// DBTicket is a model that stores Ticket records from Zoho Desk.
|
||||
//
|
||||
// - The intention of the model is to map JSON -> struct -> JSON
|
||||
//
|
||||
// Table Schema:
|
||||
//
|
||||
// Primary Key: Id
|
||||
// Indexes: Id
|
||||
// JSON Fields: Assignee, CF, Contact, DescAttachment, EntitySkills, FirstThread, LayoutDetails, SecondaryContacts, SharedDepartments, Source
|
||||
//
|
||||
// NOTE: CF stands for Custom Fields and stores all layout fields that are not in this struct (this struct contains only the defaults).
|
||||
type DBTicket struct {
|
||||
AccountId int
|
||||
ApprovalCount int
|
||||
@ -68,67 +79,3 @@ type DBTicket struct {
|
||||
func (DBTicket) TableName() string {
|
||||
return "zoho_live_tickets"
|
||||
}
|
||||
|
||||
type Ticket struct {
|
||||
TicketID string `gorm:"primaryKey;column:ticket_id" json:"ticket_id"`
|
||||
TicketReferenceID *string `gorm:"column:ticket_reference_id" json:"ticket_reference_id"`
|
||||
DepartmentID *string `gorm:"column:department_id" json:"department_id"`
|
||||
AccountID *string `gorm:"column:account_id" json:"account_id"`
|
||||
ContactID *string `gorm:"column:contact_id" json:"contact_id"`
|
||||
Email *string `gorm:"column:email" json:"email"`
|
||||
Phone *string `gorm:"column:phone" json:"phone"`
|
||||
Subject *string `gorm:"column:subject" json:"subject"`
|
||||
Description *string `gorm:"column:description" json:"description"`
|
||||
Status *string `gorm:"column:status" json:"status"`
|
||||
ProductID *string `gorm:"column:product_id" json:"product_id"`
|
||||
TicketOwnerID *string `gorm:"column:ticket_owner_id" json:"ticket_owner_id"`
|
||||
CreatedBy *string `gorm:"column:created_by" json:"created_by"`
|
||||
ModifiedBy *string `gorm:"column:modified_by" json:"modified_by"`
|
||||
CreatedTime *time.Time `gorm:"column:created_time" json:"created_time"`
|
||||
OnHoldTime *time.Time `gorm:"column:on_hold_time" json:"on_hold_time"`
|
||||
ClosedTime *time.Time `gorm:"column:closed_time" json:"closed_time"`
|
||||
ModifiedTime *time.Time `gorm:"column:modified_time" json:"modified_time"`
|
||||
TeamID *string `gorm:"column:team_id" json:"team_id"`
|
||||
DueDate *time.Time `gorm:"column:due_date" json:"due_date"`
|
||||
Tags *string `gorm:"column:tags" json:"tags"`
|
||||
Priority *string `gorm:"column:priority" json:"priority"`
|
||||
IsOverdue *bool `gorm:"column:is_overdue" json:"is_overdue"`
|
||||
IsEscalated *bool `gorm:"column:is_escalated" json:"is_escalated"`
|
||||
Classification *string `gorm:"column:classification" json:"classification"`
|
||||
Resolution *string `gorm:"column:resolution" json:"resolution"`
|
||||
TimeToRespond *int `gorm:"column:time_to_respond" json:"time_to_respond"`
|
||||
Category *string `gorm:"column:category" json:"category"`
|
||||
Subcategory *string `gorm:"column:subcategory" json:"subcategory"`
|
||||
Subclassification *string `gorm:"column:subclassification" json:"subclassification"`
|
||||
BookingNumber *int `gorm:"column:booking_number" json:"booking_number"`
|
||||
CostCode *string `gorm:"column:cost_code" json:"cost_code"`
|
||||
LanguageRequired *string `gorm:"column:language_required" json:"language_required"`
|
||||
TimeZone *string `gorm:"column:time_zone" json:"time_zone"`
|
||||
DeliveryMethod *string `gorm:"column:delivery_method" json:"delivery_method"`
|
||||
DurationInMinutes *int `gorm:"column:duration_in_minutes" json:"duration_in_minutes"`
|
||||
InterpreterID *int `gorm:"column:interpreter_id" json:"interpreter_id"`
|
||||
InterpreterEmail *string `gorm:"column:interpreter_email" json:"interpreter_email"`
|
||||
InterpreterName *string `gorm:"column:interpreter_name" json:"interpreter_name"`
|
||||
ClientID *int `gorm:"column:client_id" json:"client_id"`
|
||||
ClientName *string `gorm:"column:client_name" json:"client_name"`
|
||||
InterpreterNaati *int `gorm:"column:interpreter_naati" json:"interpreter_naati"`
|
||||
SecondaryInterpreterID *int `gorm:"column:secondary_interpreter_id" json:"secondary_interpreter_id"`
|
||||
PayCycle *int `gorm:"column:pay_cycle" json:"pay_cycle"`
|
||||
BookingTime *time.Time `gorm:"column:booking_time" json:"booking_time"`
|
||||
BillingGroup *string `gorm:"column:billing_group" json:"billing_group"`
|
||||
VideoLink *string `gorm:"column:video_link" json:"video_link"`
|
||||
ConversationID *string `gorm:"column:conversation_id" json:"conversation_id"`
|
||||
DNIS *string `gorm:"column:dnis" json:"dnis"`
|
||||
ClientAgentName *string `gorm:"column:client_agent_name" json:"client_agent_name"`
|
||||
ClientAgentPhone *string `gorm:"column:client_agent_phone" json:"client_agent_phone"`
|
||||
ClientAgentEmail *string `gorm:"column:client_agent_email" json:"client_agent_email"`
|
||||
BillingCode *string `gorm:"column:billing_code" json:"billing_code"`
|
||||
MBIEFeedback *string `gorm:"column:mbie_feedback" json:"mbie_feedback"`
|
||||
BookingComments *string `gorm:"column:booking_comments" json:"booking_comments"`
|
||||
AdditionalPrebookingInformation *string `gorm:"column:additional_prebooking_information" json:"additional_prebooking_information"`
|
||||
ForceUpdate *bool `gorm:"column:force_update" json:"force_update"`
|
||||
}
|
||||
|
||||
func (Ticket) TableName() string {
|
||||
return "live_tickets"
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user