Display transcriptions in a separate dialog accessible by the 3 dots menu in the voicebox tables and by the document icon in the call recordings list. Change-Id: I6ad42760dc65b3df178afe23ac4c5f19a7c4cf43mr13.5
parent
88aacb7fcb
commit
8aa3c2707c
@ -0,0 +1,69 @@
|
||||
<template>
|
||||
<csc-dialog
|
||||
ref="dialog"
|
||||
:title="$t('Transcript')"
|
||||
title-icon="description"
|
||||
@hide="$emit('hide')"
|
||||
@before-hide="$emit('before-hide')"
|
||||
>
|
||||
<template #content>
|
||||
<div class="q-pa-md">
|
||||
<div
|
||||
v-if="isLoading"
|
||||
class="flex flex-center"
|
||||
>
|
||||
<q-spinner
|
||||
color="primary"
|
||||
size="3em"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<p
|
||||
v-else-if="status === 'done'"
|
||||
>
|
||||
{{ text }}
|
||||
</p>
|
||||
<p
|
||||
v-else
|
||||
class="text-grey"
|
||||
>
|
||||
{{ $t('No transcript available.') }}
|
||||
</p>
|
||||
</div>
|
||||
</template>
|
||||
</csc-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import CscDialog from 'components/CscDialog'
|
||||
|
||||
export default {
|
||||
name: 'CscDialogTranscript',
|
||||
components: {
|
||||
CscDialog
|
||||
},
|
||||
props: {
|
||||
text: {
|
||||
type: String,
|
||||
default: null
|
||||
},
|
||||
status: {
|
||||
type: String,
|
||||
default: null
|
||||
},
|
||||
isLoading: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
emits: ['hide', 'before-hide'],
|
||||
methods: {
|
||||
show () {
|
||||
this.$refs.dialog.show()
|
||||
},
|
||||
hide () {
|
||||
this.$refs.dialog.hide()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@ -0,0 +1,63 @@
|
||||
import { getVoicemail } from 'src/api/conversations'
|
||||
import { RequestState } from 'src/store/common'
|
||||
|
||||
export default {
|
||||
namespaced: true,
|
||||
state: {
|
||||
transcriptState: RequestState.initiated,
|
||||
transcriptError: null,
|
||||
transcript: null
|
||||
},
|
||||
getters: {
|
||||
getTranscriptText (state) {
|
||||
return state.transcript?.transcript
|
||||
},
|
||||
getTranscriptStatus (state) {
|
||||
return state.transcript?.transcriptStatus
|
||||
}
|
||||
},
|
||||
mutations: {
|
||||
transcriptRequesting (state) {
|
||||
state.transcriptState = RequestState.requesting
|
||||
},
|
||||
transcriptSucceeded (state, { transcript, transcriptStatus }) {
|
||||
state.transcriptState = RequestState.succeeded
|
||||
state.transcript = {
|
||||
transcript,
|
||||
transcriptStatus
|
||||
}
|
||||
},
|
||||
transcriptFailed (state, error) {
|
||||
state.transcriptState = RequestState.failed
|
||||
state.transcriptError = error
|
||||
},
|
||||
clearTranscriptData (state) {
|
||||
state.transcriptState = RequestState.initiated
|
||||
state.transcriptError = null
|
||||
state.transcript = null
|
||||
}
|
||||
},
|
||||
actions: {
|
||||
getVoicemailTranscript (context, voicemailId) {
|
||||
context.commit('transcriptRequesting')
|
||||
getVoicemail(voicemailId).then((data) => {
|
||||
context.commit('transcriptSucceeded', {
|
||||
transcript: data.transcript,
|
||||
transcriptStatus: data.transcript_status
|
||||
})
|
||||
}).catch((err) => {
|
||||
context.commit('transcriptFailed', err.message)
|
||||
})
|
||||
},
|
||||
getCallRecordingsTranscript (context, data) {
|
||||
context.commit('transcriptSucceeded', {
|
||||
transcript: data.transcript,
|
||||
transcriptStatus: data.transcriptStatus
|
||||
})
|
||||
},
|
||||
clearTranscriptData (context) {
|
||||
context.commit('clearTranscriptData')
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Loading…
Reference in new issue