This PR introduces a new channel type for voice conversations. ref: #11481 ## Changes - Add database migration for channel_voice table with phone_number and provider_config - Create Channel::Voice model with E.164 phone number validation and Twilio config validation - Add voice channel association to Account model - Extend inbox helpers and types to support voice channels - Add voice channel setup UI with Twilio configuration form - Include voice channel in channel factory and list components - Add API routes and store actions for voice channel creation - Add comprehensive translations for voice channel management --------- Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com> Co-authored-by: iamsivin <iamsivin@gmail.com>
58 lines
1.4 KiB
Vue
58 lines
1.4 KiB
Vue
<script setup>
|
|
import { useI18n } from 'vue-i18n';
|
|
import { useStoreGetters } from 'dashboard/composables/store';
|
|
import { computed } from 'vue';
|
|
|
|
const props = defineProps({
|
|
channelType: {
|
|
type: String,
|
|
required: true,
|
|
},
|
|
medium: {
|
|
type: String,
|
|
default: '',
|
|
},
|
|
});
|
|
const getters = useStoreGetters();
|
|
const { t } = useI18n();
|
|
const globalConfig = computed(() => getters['globalConfig/get'].value);
|
|
|
|
const i18nMap = {
|
|
'Channel::FacebookPage': 'MESSENGER',
|
|
'Channel::WebWidget': 'WEB_WIDGET',
|
|
'Channel::TwitterProfile': 'TWITTER_PROFILE',
|
|
'Channel::TwilioSms': 'TWILIO_SMS',
|
|
'Channel::Whatsapp': 'WHATSAPP',
|
|
'Channel::Sms': 'SMS',
|
|
'Channel::Email': 'EMAIL',
|
|
'Channel::Telegram': 'TELEGRAM',
|
|
'Channel::Line': 'LINE',
|
|
'Channel::Api': 'API',
|
|
'Channel::Instagram': 'INSTAGRAM',
|
|
'Channel::Voice': 'VOICE',
|
|
};
|
|
|
|
const twilioChannelName = () => {
|
|
if (props.medium === 'whatsapp') {
|
|
return t(`INBOX_MGMT.CHANNELS.WHATSAPP`);
|
|
}
|
|
return t(`INBOX_MGMT.CHANNELS.TWILIO_SMS`);
|
|
};
|
|
|
|
const readableChannelName = computed(() => {
|
|
if (props.channelType === 'Channel::Api') {
|
|
return globalConfig.value.apiChannelName || t('INBOX_MGMT.CHANNELS.API');
|
|
}
|
|
if (props.channelType === 'Channel::TwilioSms') {
|
|
return twilioChannelName();
|
|
}
|
|
return t(`INBOX_MGMT.CHANNELS.${i18nMap[props.channelType]}`);
|
|
});
|
|
</script>
|
|
|
|
<template>
|
|
<span>
|
|
{{ readableChannelName }}
|
|
</span>
|
|
</template>
|