Created
March 10, 2020 15:13
-
-
Save Akurganow/26180d8405bfe3103cc47532b93583c1 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export type RuleId = number; | |
export type RuleStatus = 'Active' | 'Inactive'; | |
export type RulePASType = 'BusinessHours' | 'AfterHours' | 'Custom'; | |
export type RuleType = 'BusinessHours' | 'MailboxDefault' | 'Custom'; | |
type GreetingType = 'Voicemail' | 'Introductory' | 'ConnectingAudio' | 'ConnectingMessage' | 'HoldMusic'; | |
type PASAction = | |
| 'ForwardCalls' | |
| 'UnconditionalForwarding' | |
| 'AgentQueue' | |
| 'TransferToExtension' | |
| 'TakeMessagesOnly' | |
| 'PlayAnnouncementOnly' | |
| 'SharedLines'; | |
type JEDIAction = | |
| 'Announcement' | |
| 'Forward' | |
| 'RingMe' | |
| 'AgentQueue' | |
| 'SharedLinesGroup' | |
| 'ConnectToExtension' | |
| 'TakeMessages'; | |
type WeekdayKeys = 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday'; | |
type Weekday = 'Monday' | 'Tuesday' | 'Wednesday' | 'Thursday' | 'Friday' | 'Saturday' | 'Sunday'; | |
type IntervalType = 'BusinessHours24' | 'AfterHours'; | |
interface IntervalTimeRanges { | |
from: string; | |
to: string; | |
} | |
interface IntervalSchedule { | |
weeklyRanges: {[k in WeekdayKeys]: IntervalTimeRanges[]}; | |
} | |
interface HoursInterval { | |
startDate: number | null; | |
endDate: number | null; | |
startTime: number; | |
startDay: Weekday; | |
endTime: number; | |
endDay: Weekday; | |
startDateMilliseconds: number; | |
endDateMilliseconds: number; | |
} | |
export interface RuleCompactPAS { | |
id: RuleId; | |
name: string; | |
type: RulePASType; | |
enabled: boolean; | |
} | |
export interface RuleCompact { | |
id: RuleId; | |
name: string; | |
type: RuleType; | |
status: RuleStatus; | |
intervalType: string; | |
} | |
interface RulePhone { | |
orderBy: number; | |
skipFindMeMenu: boolean; | |
askPIN: boolean; | |
playMailboxName: boolean; | |
phoneId: number; | |
forwardPhoneId: number; | |
phoneLineId: number; | |
ringCycle: number; | |
ringDelay: number; | |
addDigitsToCallerId: null; | |
digitsForCallerId: string; | |
phoneNumberInfo: { | |
number: string; | |
formattedNumber: string; | |
name: string; | |
alternate: boolean; | |
details: null; | |
internationalCanonical: string; | |
}; | |
type: string; | |
mailboxId: MailboxIdentifier; | |
firstName: string; | |
lastName: string; | |
pin: string; | |
enabled: boolean; | |
forwarding: boolean; | |
deviceExists: boolean; | |
deviceType: number; | |
ownedByThisMailbox: boolean; | |
editable: boolean; | |
isCommonPhone: boolean; | |
originalMailboxId: MailboxIdentifier; | |
originalUserName: string; | |
originalPin: string; | |
phoneLineType: number; | |
voiceOnly: boolean; | |
} | |
interface RuleCaller { | |
number: string; | |
formattedNumber: string; | |
name: string; | |
} | |
interface RuleCalledNumber { | |
number: string; | |
areaCode: string; | |
formattedNumber: string; | |
mainNumber: boolean; | |
autoReceptionist: boolean; | |
extensionName: string; | |
extensionPIN: string; | |
paymentType: string | null; | |
phoneLabel: string; | |
} | |
export interface RulePAS { | |
id: RuleId; | |
type: RulePASType; | |
name: string; | |
enabled: boolean; | |
schedule?: IntervalSchedule & { | |
ranges: IntervalTimeRanges[]; | |
ref: 'BusinessHours' | 'AfterHours'; | |
}; | |
greetings?: [ | |
{ | |
type: GreetingType; | |
preset: { | |
uri: string; | |
id: string; | |
name: string; | |
}; | |
}, | |
]; | |
calledNumbers?: {phoneNumber: string}[]; | |
callers?: {callerId: string; name: string}[]; | |
callHandlingAction: PASAction; | |
queue?: { | |
transferMode: 'Rotating' | 'Simultaneous' | 'FixedOrder'; | |
fixedOrderAgents: []; | |
holdAudioInterruptionMode: 'Never' | 'WhenMusicEnds' | 'Periodically'; | |
holdAudioInterruptionPeriod: number; | |
holdTimeExpirationAction: 'TransferToExtension' | 'Voicemail'; | |
agentTimeout: number; | |
wrapUpTime: number; | |
holdTime: number; | |
maxCallers: number; | |
maxCallersAction: 'Voicemail' | 'Announcement'; | |
}; | |
unconditionalForwarding?: {phoneNumber: string}; | |
forwarding?: { | |
notifyMySoftPhones: boolean; | |
notifyAdminSoftPhones: boolean; | |
softPhonesRingCount: number; | |
mobileTimeout: boolean; | |
ringingMode: 'Sequentially' | 'Simultaneously'; | |
rules: [ | |
{ | |
index: number; | |
ringCount: number; | |
forwardingNumbers: { | |
uri: string; | |
id: string; | |
phoneNumber: string; | |
label: string; | |
type: string; | |
}[]; | |
}, | |
]; | |
}; | |
voicemail?: { | |
enabled: boolean; | |
recipient: { | |
uri: string; | |
id: number; | |
}; | |
}; | |
transfer?: {}; | |
screening: 'Off' | 'NoCallerId' | 'UnknownCallerId' | 'Always'; | |
} | |
export interface Rule { | |
id: RuleId; | |
ruleName: string; | |
status: RuleStatus; | |
ruleType: RuleType; | |
answering: JEDIAction; | |
readPhoneOrder: 'Simultaneously' | 'Sequentially'; | |
// Done | |
callers: RuleCaller[]; | |
calledNumbers: RuleCalledNumber[]; | |
interval: {type: IntervalType; level: string; intervals: HoursInterval[]}; | |
phones: RulePhone[]; | |
oldPhones: RulePhone[]; | |
receiveSetting: 'Enabled' | 'Disabled'; | |
callerPrompt: string; | |
notifyDefault: boolean; | |
agentNotify: string; | |
ringDelay: number; | |
toMailboxId: MailboxIdentifier; | |
toMailboxPin: string; | |
toMailboxName: string; | |
toMailboxType: number | null; | |
blaMailboxId: MailboxIdentifier; | |
blaMailboxPin: string; | |
blaMailboxName: string; | |
masterMenuAction: null; | |
isMaster: boolean; | |
interruptSeconds: number; | |
ringToPhone: string; | |
agentWaitTime: number; | |
limitAgentWait: boolean; | |
enableWrapUp: boolean; | |
wrapUpTime: number; | |
maxCallers: number; | |
maxCallersVM: number; | |
qoHoldTimeReached: null; | |
agents: []; | |
qoMailboxId: MailboxIdentifier; | |
qoMailboxPin: string; | |
qoMailboxName: string; | |
busyStatus: null; | |
qoBusyMailboxId: MailboxIdentifier; | |
qoBusyMailboxPin: string; | |
qoBusyMailboxName: string; | |
qoFullMailboxId: MailboxIdentifier; | |
qoFullMailboxPin: string; | |
qoFullMailboxName: string; | |
queueFullNumber: string; | |
waitTimeReachedNumber: string; | |
allMembersAreBusyNumber: string; | |
blaMailboxForwarding: number; | |
voiceMailTime: number; | |
voicemailGreetingPreset: string; | |
voicemailGreetingCustomId: number; | |
introductoryGreetingPreset: string; | |
introductoryGreetingCustomId: number; | |
mohGreetingPreset: string; | |
mohGreetingCustomId: number; | |
announcementGreetingPreset: string; | |
announcementGreetingCustomId: number; | |
unavailableGreetingPreset: string; | |
unavailableGreetingCustomId: number; | |
interruptPromptPreset: string; | |
interruptPromptCustomId: number; | |
connectPromptPreset: string; | |
connectPromptCustomId: number; | |
companyGreetingPreset: null; | |
companyGreetingCustomId: number; | |
templateId: number; | |
internetOutageInfo: { | |
enabled: boolean; | |
mailboxId: MailboxIdentifier; | |
phoneNumber: string; | |
destinationType: string; | |
errorsMask: number; | |
}; | |
mobileTimeout: number; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment