@webitel/ui-sdk 26.8.53 → 26.8.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{clients-jhkEj9YI.js → clients-Ck0KwDIR.js} +1 -1
- package/dist/{components-C4rE9PlV.js → components-DNSY1_s4.js} +8 -8
- package/dist/ui-sdk.css +1 -1
- package/dist/ui-sdk.js +1 -1
- package/dist/ui-sdk.umd.cjs +1 -1
- package/dist/{wt-chat-emoji-DVIlMP3o.js → wt-chat-emoji-B13JscVZ.js} +1 -1
- package/dist/{wt-display-chip-items-DwMS-DJc.js → wt-display-chip-items-Cf8L5Upd.js} +1 -1
- package/dist/{wt-send-message-popup-DPjllTAk.js → wt-send-message-popup-CO92UYST.js} +2 -2
- package/dist/{wt-type-extension-value-input-BO44atDh.js → wt-type-extension-value-input-FHQ4bN4j.js} +2 -2
- package/dist/{wt-vidstack-player-BD28KRTU.js → wt-vidstack-player-DcItshB2.js} +1 -1
- package/package.json +2 -1
- package/src/components/on-demand/wt-type-extension-value-input/wt-type-extension-value-input.vue +2 -2
- package/src/components/wt-image/wt-image.vue +4 -4
- package/src/components/wt-multi-select/wt-multi-select.vue +3 -2
- package/src/components/wt-single-select/wt-single-select.vue +6 -3
- package/src/modules/AgentStatusSelect/components/_internals/wt-cc-activity-type-options.vue +52 -0
- package/src/modules/AgentStatusSelect/components/_internals/wt-cc-activity-type-popup.vue +7 -35
- package/src/modules/AgentStatusSelect/components/_internals/wt-cc-pause-cause-popup.vue +2 -2
- package/src/modules/AgentStatusSelect/components/wt-cc-agent-status-select.vue +4 -18
- package/src/modules/AgentStatusSelect/composables/useActivityTypesOptions.ts +37 -0
- package/src/modules/Notifications/assets/audio/self-assigned-call.wav +0 -0
- package/src/modules/Notifications/store/NotificationsStoreModule.js +6 -0
- package/types/.tsbuildinfo +1 -1
- package/types/modules/AgentStatusSelect/components/_internals/wt-cc-activity-type-options.vue.d.ts +17 -0
- package/types/modules/AgentStatusSelect/composables/useActivityTypesOptions.d.ts +18 -0
- package/types/modules/Notifications/store/NotificationsStoreModule.d.ts +1 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C as e, i as t } from "./components-
|
|
1
|
+
import { C as e, i as t } from "./components-DNSY1_s4.js";
|
|
2
2
|
import { t as n } from "./_plugin-vue_export-helper-B3ysoDQm.js";
|
|
3
3
|
import { t as r } from "./displayText-CtaxzaBz.js";
|
|
4
4
|
import { Fragment as i, computed as a, createCommentVNode as o, createElementBlock as s, createTextVNode as c, createVNode as l, defineComponent as u, openBlock as d, renderList as f, renderSlot as p, toDisplayString as m, unref as h, withCtx as g } from "vue";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as e } from "./rolldown-runtime-BEcgMyyN.js";
|
|
2
|
-
import { n as t, r as n } from "./clients-
|
|
3
|
-
import { T as r, n as i, w as a } from "./components-
|
|
2
|
+
import { n as t, r as n } from "./clients-Ck0KwDIR.js";
|
|
3
|
+
import { T as r, n as i, w as a } from "./components-DNSY1_s4.js";
|
|
4
4
|
import { t as o } from "./vue-i18n-Db_oYfO8.js";
|
|
5
5
|
import { n as s } from "./useEventBus-B-ZeklLu.js";
|
|
6
6
|
import { createBlock as c, createTextVNode as l, createVNode as u, defineComponent as d, mergeProps as f, onMounted as p, openBlock as m, ref as h, resolveComponent as g, toDisplayString as _, unref as v, withCtx as y } from "vue";
|
package/dist/{wt-type-extension-value-input-BO44atDh.js → wt-type-extension-value-input-FHQ4bN4j.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as e } from "./clients-
|
|
2
|
-
import { a as t, o as n, r, s as i } from "./components-
|
|
1
|
+
import { t as e } from "./clients-Ck0KwDIR.js";
|
|
2
|
+
import { a as t, o as n, r, s as i } from "./components-DNSY1_s4.js";
|
|
3
3
|
import { t as a } from "./enums-DY3jIXFF.js";
|
|
4
4
|
import { t as o } from "./vue-i18n-Db_oYfO8.js";
|
|
5
5
|
import { computed as s, createBlock as c, createCommentVNode as l, createVNode as u, defineComponent as d, mergeModels as f, mergeProps as p, openBlock as m, renderSlot as h, resolveComponent as g, unref as _, useModel as v } from "vue";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webitel/ui-sdk",
|
|
3
|
-
"version": "26.8.
|
|
3
|
+
"version": "26.8.55",
|
|
4
4
|
"private": false,
|
|
5
5
|
"scripts": {
|
|
6
6
|
"dev": "npm run docs:dev",
|
|
@@ -124,6 +124,7 @@
|
|
|
124
124
|
"@biomejs/biome": "2.4.16",
|
|
125
125
|
"@pinia/testing": "^1.0.3",
|
|
126
126
|
"@regle/core": "^1.16.2",
|
|
127
|
+
"@regle/schemas": "^1.x",
|
|
127
128
|
"@tsconfig/node22": "^22.0.0",
|
|
128
129
|
"@types/deep-equal": "^1.0.4",
|
|
129
130
|
"@types/file-saver-es": "^2.0.3",
|
package/src/components/on-demand/wt-type-extension-value-input/wt-type-extension-value-input.vue
CHANGED
|
@@ -111,7 +111,7 @@ const props = defineProps<{
|
|
|
111
111
|
|
|
112
112
|
const { t } = useI18n();
|
|
113
113
|
|
|
114
|
-
const
|
|
114
|
+
const computedLabel = computed(() => {
|
|
115
115
|
return props.label || t(props.field?.name || 'vocabulary.labels');
|
|
116
116
|
});
|
|
117
117
|
|
|
@@ -125,7 +125,7 @@ const value = computed<any>(() => {
|
|
|
125
125
|
});
|
|
126
126
|
|
|
127
127
|
const sharedChildrenProps = computed(() => ({
|
|
128
|
-
label:
|
|
128
|
+
label: computedLabel.value,
|
|
129
129
|
required: isRequired.value,
|
|
130
130
|
v: props.v,
|
|
131
131
|
}));
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
3
|
class="wt-image" :style="{
|
|
4
|
-
width,
|
|
5
|
-
height,
|
|
4
|
+
width: resolvedWidth,
|
|
5
|
+
height: resolvedHeight,
|
|
6
6
|
minWidth,
|
|
7
7
|
minHeight,
|
|
8
8
|
maxWidth,
|
|
@@ -56,7 +56,7 @@ const emit = defineEmits([
|
|
|
56
56
|
'click',
|
|
57
57
|
]);
|
|
58
58
|
|
|
59
|
-
const
|
|
59
|
+
const resolvedWidth = computed(() => {
|
|
60
60
|
const width = props.size ? sizeToUnits[props.size] : props.width;
|
|
61
61
|
|
|
62
62
|
// if converted to Number without an error, it has no units in it
|
|
@@ -67,7 +67,7 @@ const width = computed(() => {
|
|
|
67
67
|
return width;
|
|
68
68
|
});
|
|
69
69
|
|
|
70
|
-
const
|
|
70
|
+
const resolvedHeight = computed(() => {
|
|
71
71
|
// if (props.aspectRatio) return null;
|
|
72
72
|
|
|
73
73
|
const height = props.size ? sizeToUnits[props.size] : props.height;
|
|
@@ -133,7 +133,7 @@
|
|
|
133
133
|
<script setup lang="ts">
|
|
134
134
|
import type { SuperCompatibleRegleFieldStatus } from '@regle/core';
|
|
135
135
|
import type { SelectProps } from 'primevue';
|
|
136
|
-
import { computed, toRefs, useSlots, useTemplateRef } from 'vue';
|
|
136
|
+
import { computed, ref, toRefs, useSlots, useTemplateRef } from 'vue';
|
|
137
137
|
import { useI18n } from 'vue-i18n';
|
|
138
138
|
import { ChipColor, ComponentSize, MessageVariant } from '../../enums';
|
|
139
139
|
import { useValidation } from '../../mixins/validationMixin/useValidation';
|
|
@@ -142,6 +142,7 @@ import type {
|
|
|
142
142
|
VuelidateFieldLike,
|
|
143
143
|
} from '../../mixins/validationMixin/vuelidate/useVuelidateValidation';
|
|
144
144
|
import type {
|
|
145
|
+
SelectComponentRef,
|
|
145
146
|
SelectOption,
|
|
146
147
|
SelectSearchMethod,
|
|
147
148
|
} from '../_internals/composables/useSelect/types';
|
|
@@ -220,7 +221,7 @@ const MAX_SELECTED_LABELS = 3;
|
|
|
220
221
|
const selectId = `select-${Math.random().toString(36).slice(2, 11)}`;
|
|
221
222
|
|
|
222
223
|
const filterInput = useTemplateRef('filterInput');
|
|
223
|
-
const selectRef =
|
|
224
|
+
const selectRef = ref<SelectComponentRef>();
|
|
224
225
|
|
|
225
226
|
const emit = defineEmits<{
|
|
226
227
|
'add:custom-value': [
|
|
@@ -109,14 +109,17 @@
|
|
|
109
109
|
<script setup lang="ts">
|
|
110
110
|
import type { SuperCompatibleRegleFieldStatus } from '@regle/core';
|
|
111
111
|
import type { SelectProps } from 'primevue';
|
|
112
|
-
import { computed, toRefs, useSlots, useTemplateRef } from 'vue';
|
|
112
|
+
import { computed, ref, toRefs, useSlots, useTemplateRef } from 'vue';
|
|
113
113
|
import { ComponentSize, MessageVariant } from '../../enums';
|
|
114
114
|
import { useValidation } from '../../mixins/validationMixin/useValidation';
|
|
115
115
|
import type {
|
|
116
116
|
CompatCustomValidator,
|
|
117
117
|
VuelidateFieldLike,
|
|
118
118
|
} from '../../mixins/validationMixin/vuelidate/useVuelidateValidation';
|
|
119
|
-
import type {
|
|
119
|
+
import type {
|
|
120
|
+
SelectComponentRef,
|
|
121
|
+
SelectSearchMethod,
|
|
122
|
+
} from '../_internals/composables/useSelect/types';
|
|
120
123
|
import { useSelect } from '../_internals/composables/useSelect/useSelect';
|
|
121
124
|
|
|
122
125
|
interface Props extends Omit<SelectProps, 'size' | 'options'> {
|
|
@@ -195,7 +198,7 @@ const emit = defineEmits<{
|
|
|
195
198
|
const selectId = `select-${Math.random().toString(36).slice(2, 11)}`;
|
|
196
199
|
|
|
197
200
|
const filterInput = useTemplateRef('filterInput');
|
|
198
|
-
const selectRef =
|
|
201
|
+
const selectRef = ref<SelectComponentRef>();
|
|
199
202
|
|
|
200
203
|
const {
|
|
201
204
|
showFooterLoader,
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<form
|
|
3
|
+
class="wt-cc-activity-type-options"
|
|
4
|
+
@submit.prevent
|
|
5
|
+
>
|
|
6
|
+
<ul class="wt-cc-activity-type-options__list">
|
|
7
|
+
<li
|
|
8
|
+
v-for="option of options"
|
|
9
|
+
:key="option.id"
|
|
10
|
+
class="wt-cc-activity-type-options__item"
|
|
11
|
+
>
|
|
12
|
+
<wt-radio
|
|
13
|
+
:label="option.name"
|
|
14
|
+
:selected="model?.id"
|
|
15
|
+
:value="option.id"
|
|
16
|
+
class="wt-cc-activity-type-options__radio"
|
|
17
|
+
@update:selected="model = option"
|
|
18
|
+
/>
|
|
19
|
+
</li>
|
|
20
|
+
</ul>
|
|
21
|
+
</form>
|
|
22
|
+
</template>
|
|
23
|
+
|
|
24
|
+
<script setup lang="ts">
|
|
25
|
+
import type { LookupOption } from '../../../../types';
|
|
26
|
+
|
|
27
|
+
withDefaults(
|
|
28
|
+
defineProps<{
|
|
29
|
+
options?: LookupOption[];
|
|
30
|
+
}>(),
|
|
31
|
+
{
|
|
32
|
+
options: () => [],
|
|
33
|
+
},
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
const model = defineModel<LookupOption | undefined>();
|
|
37
|
+
</script>
|
|
38
|
+
|
|
39
|
+
<style scoped>
|
|
40
|
+
.wt-cc-activity-type-options__list {
|
|
41
|
+
display: flex;
|
|
42
|
+
flex-direction: column;
|
|
43
|
+
gap: var(--spacing-sm);
|
|
44
|
+
padding: var(--spacing-sm);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.wt-cc-activity-type-options__item {
|
|
48
|
+
display: flex;
|
|
49
|
+
justify-content: space-between;
|
|
50
|
+
align-items: center;
|
|
51
|
+
}
|
|
52
|
+
</style>
|
|
@@ -8,23 +8,11 @@
|
|
|
8
8
|
{{ t('webitelUI.agentStatusSelect.activityTypePopup.title') }}
|
|
9
9
|
</template>
|
|
10
10
|
<template #main>
|
|
11
|
-
<
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class="wt-cc-activity-type-popup-option"
|
|
17
|
-
>
|
|
18
|
-
<wt-radio
|
|
19
|
-
:label="option.name"
|
|
20
|
-
:selected="selected?.id"
|
|
21
|
-
:value="option.id"
|
|
22
|
-
class="wt-cc-activity-type-popup-option__radio"
|
|
23
|
-
@update:selected="select(option)"
|
|
24
|
-
/>
|
|
25
|
-
</li>
|
|
26
|
-
</ul>
|
|
27
|
-
</form>
|
|
11
|
+
<wt-cc-activity-type-options
|
|
12
|
+
:model-value="selected"
|
|
13
|
+
:options="options"
|
|
14
|
+
@update:model-value="selected = $event"
|
|
15
|
+
/>
|
|
28
16
|
</template>
|
|
29
17
|
<template #actions>
|
|
30
18
|
<wt-button
|
|
@@ -47,6 +35,7 @@
|
|
|
47
35
|
import { ref } from 'vue';
|
|
48
36
|
import { useI18n } from 'vue-i18n';
|
|
49
37
|
import type { LookupOption } from '../../../../types';
|
|
38
|
+
import WtCcActivityTypeOptions from './wt-cc-activity-type-options.vue';
|
|
50
39
|
|
|
51
40
|
const props = withDefaults(
|
|
52
41
|
defineProps<{
|
|
@@ -66,11 +55,7 @@ const emit = defineEmits<{
|
|
|
66
55
|
|
|
67
56
|
const { t } = useI18n();
|
|
68
57
|
|
|
69
|
-
const selected = ref<LookupOption | undefined>(props.options[0]);
|
|
70
|
-
|
|
71
|
-
function select(option: LookupOption) {
|
|
72
|
-
selected.value = option;
|
|
73
|
-
}
|
|
58
|
+
const selected = ref<LookupOption | undefined>(props.options?.[0]);
|
|
74
59
|
|
|
75
60
|
function close() {
|
|
76
61
|
emit('close');
|
|
@@ -88,17 +73,4 @@ function setActivityType() {
|
|
|
88
73
|
max-height: 500px;
|
|
89
74
|
}
|
|
90
75
|
}
|
|
91
|
-
|
|
92
|
-
.wt-cc-activity-type-popup-option {
|
|
93
|
-
display: flex;
|
|
94
|
-
justify-content: space-between;
|
|
95
|
-
align-items: center;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
.wt-cc-activity-type-popup-option__wrapper {
|
|
99
|
-
display: flex;
|
|
100
|
-
flex-direction: column;
|
|
101
|
-
gap: var(--spacing-sm);
|
|
102
|
-
padding: var(--spacing-sm);
|
|
103
|
-
}
|
|
104
76
|
</style>
|
|
@@ -84,13 +84,13 @@ const emit = defineEmits([
|
|
|
84
84
|
'close',
|
|
85
85
|
]);
|
|
86
86
|
|
|
87
|
-
const
|
|
87
|
+
const optionsRef = toRef(props, 'options');
|
|
88
88
|
|
|
89
89
|
const selected = ref(null);
|
|
90
90
|
|
|
91
91
|
const { t } = useI18n();
|
|
92
92
|
|
|
93
|
-
const { representablePauseCause } = useRepresentableAgentPauseCause(
|
|
93
|
+
const { representablePauseCause } = useRepresentableAgentPauseCause(optionsRef);
|
|
94
94
|
|
|
95
95
|
const pauseCause = computed(() =>
|
|
96
96
|
representablePauseCause.value.map((cause) => ({
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
@update:model-value="toggleCallCenterMode"
|
|
10
10
|
/>
|
|
11
11
|
<wt-status-select
|
|
12
|
-
|
|
12
|
+
:key="status"
|
|
13
13
|
:status="status"
|
|
14
14
|
:status-duration="statusDuration"
|
|
15
15
|
@change="handleStatus"
|
|
@@ -36,7 +36,6 @@
|
|
|
36
36
|
</template>
|
|
37
37
|
|
|
38
38
|
<script setup lang="ts">
|
|
39
|
-
import { OnlineSkillsAPI } from '@webitel/api-services/api';
|
|
40
39
|
import type { EngineForAgentPauseCause } from '@webitel/api-services/gen';
|
|
41
40
|
import { ref } from 'vue';
|
|
42
41
|
import { useI18n } from 'vue-i18n';
|
|
@@ -47,6 +46,7 @@ import { AgentStatus } from '../../../enums';
|
|
|
47
46
|
import type { LookupOption } from '../../../types';
|
|
48
47
|
import AgentStatusAPIFactory from '../api/agent-status.js';
|
|
49
48
|
import PauseCauseAPIFactory from '../api/pause-cause.js';
|
|
49
|
+
import { useActivityTypesOptions } from '../composables/useActivityTypesOptions';
|
|
50
50
|
import { useCCenterModeSwitcher } from '../composables/useCCenterModeSwitcher';
|
|
51
51
|
import type { StatusChangePayload } from '../types/StatusChangePayload.types';
|
|
52
52
|
import ActivityTypePopup from './_internals/wt-cc-activity-type-popup.vue';
|
|
@@ -90,9 +90,9 @@ const pauseCauses = ref<EngineForAgentPauseCause[]>([]);
|
|
|
90
90
|
const error = ref(null);
|
|
91
91
|
|
|
92
92
|
const isActivityTypePopup = ref(false);
|
|
93
|
-
const activityTypes = ref<ActivityType[]>([]);
|
|
94
93
|
|
|
95
|
-
const defaultActivityTypeOption
|
|
94
|
+
const { activityTypes, defaultActivityTypeOption, loadActivityTypes } =
|
|
95
|
+
useActivityTypesOptions();
|
|
96
96
|
|
|
97
97
|
const { callCenterModeChanging, toggleCallCenterMode } = useCCenterModeSwitcher(
|
|
98
98
|
{
|
|
@@ -127,20 +127,6 @@ function closeActivityTypePopup() {
|
|
|
127
127
|
callCenterModeChanging.value = false;
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
-
async function loadActivityTypes(): Promise<void> {
|
|
131
|
-
const response = await OnlineSkillsAPI.getList({
|
|
132
|
-
skipDefault: false,
|
|
133
|
-
});
|
|
134
|
-
defaultActivityTypeOption.value = response.items[0];
|
|
135
|
-
activityTypes.value = [
|
|
136
|
-
{
|
|
137
|
-
id: defaultActivityTypeOption.value?.id,
|
|
138
|
-
name: t('webitelUI.agentStatusSelect.activityTypePopup.defaultOption'),
|
|
139
|
-
},
|
|
140
|
-
...response.items.slice(1),
|
|
141
|
-
];
|
|
142
|
-
}
|
|
143
|
-
|
|
144
130
|
async function updateStatus({
|
|
145
131
|
agentId,
|
|
146
132
|
status,
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { OnlineSkillsAPI } from '@webitel/api-services/api';
|
|
2
|
+
import { ref } from 'vue';
|
|
3
|
+
import { useI18n } from 'vue-i18n';
|
|
4
|
+
|
|
5
|
+
import type { LookupOption } from '../../../types';
|
|
6
|
+
|
|
7
|
+
export const useActivityTypesOptions = () => {
|
|
8
|
+
const { t } = useI18n();
|
|
9
|
+
|
|
10
|
+
const activityTypes = ref<LookupOption[]>([]);
|
|
11
|
+
const defaultActivityTypeOption = ref<LookupOption | null>(null);
|
|
12
|
+
|
|
13
|
+
async function loadActivityTypes(): Promise<void> {
|
|
14
|
+
const response = await OnlineSkillsAPI.getList({
|
|
15
|
+
skipDefault: false,
|
|
16
|
+
});
|
|
17
|
+
if (!response?.items?.length) {
|
|
18
|
+
defaultActivityTypeOption.value = null;
|
|
19
|
+
activityTypes.value = [];
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
defaultActivityTypeOption.value = response.items[0];
|
|
23
|
+
activityTypes.value = [
|
|
24
|
+
{
|
|
25
|
+
id: response.items[0].id,
|
|
26
|
+
name: t('webitelUI.agentStatusSelect.activityTypePopup.defaultOption'),
|
|
27
|
+
},
|
|
28
|
+
...response.items.slice(1),
|
|
29
|
+
];
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return {
|
|
33
|
+
activityTypes,
|
|
34
|
+
defaultActivityTypeOption,
|
|
35
|
+
loadActivityTypes,
|
|
36
|
+
};
|
|
37
|
+
};
|
|
Binary file
|
|
@@ -7,12 +7,16 @@ import newChatSound from '../assets/audio/chat-new.wav';
|
|
|
7
7
|
import newMessageSound from '../assets/audio/chat-new-message.wav';
|
|
8
8
|
import endCallSound from '../assets/audio/end-call.wav';
|
|
9
9
|
import ringingSound from '../assets/audio/ringing.mp3';
|
|
10
|
+
import selfAssignedCallSound from '../assets/audio/self-assigned-call.wav';
|
|
10
11
|
import endTask from '../assets/audio/task-end.wav';
|
|
11
12
|
import newTask from '../assets/audio/task-new.wav';
|
|
12
13
|
import notificationIcon from '../assets/img/notification-icon.png';
|
|
13
14
|
|
|
14
15
|
const NOTIFICATION_VISIBLE_INTERVAL = 2000;
|
|
15
16
|
|
|
17
|
+
// no CallActions member represents this - it is a client-only notification, not a CTI transport event
|
|
18
|
+
export const SELF_ASSIGNED_CALL_ACTION = 'self_assigned_call';
|
|
19
|
+
|
|
16
20
|
const getNotificationSound = (action) => {
|
|
17
21
|
switch (action) {
|
|
18
22
|
case JobState.Distribute:
|
|
@@ -31,6 +35,8 @@ const getNotificationSound = (action) => {
|
|
|
31
35
|
return new Audio(ringingSound);
|
|
32
36
|
case CallActions.Hangup:
|
|
33
37
|
return new Audio(endCallSound);
|
|
38
|
+
case SELF_ASSIGNED_CALL_ACTION:
|
|
39
|
+
return new Audio(selfAssignedCallSound);
|
|
34
40
|
default:
|
|
35
41
|
return false;
|
|
36
42
|
}
|