diff --git a/src/api/ngcp-call.js b/src/api/ngcp-call.js index 05bc3d36..a127083b 100644 --- a/src/api/ngcp-call.js +++ b/src/api/ngcp-call.js @@ -158,6 +158,9 @@ export function callRegister ({ instanceId }) { $incomingRtcSession.on('unhold', (unholdEvent) => { callEvent.emit('incomingUnHold', unholdEvent) }) + $incomingRtcSession.on('refer', (event) => { + callEvent.emit('incomingRefer', event) + }) } } }) @@ -209,7 +212,11 @@ export async function callStart ({ number }) { } else { callEvent.emit('outgoingUnHolded', event) } + }, + refer (event) { + callEvent.emit('outgoingRefer', event) } + }, mediaStream: $localMediaStream }) @@ -438,3 +445,28 @@ export function callToggleHold () { } } } +/** + * Blind Transfer. + */ +export function callBlindTransfer (numberToTransfer) { + return new Promise((resolve, reject) => { + const rtcSession = callGetRtcSession() + const eventHandlers = { + requestFailed: function (e) { + console.log('Transfer failed') + reject(new Error('Transfer failed')) + }, + requestSucceeded: function (e) { + console.log('Success', e) + resolve(true) + } + } + try { + rtcSession.refer(numberToTransfer, { + eventHandlers + }) + } catch (err) { + reject(err) + } + }) +} diff --git a/src/boot/ngcp-call.js b/src/boot/ngcp-call.js index 02bf6755..97fe6d23 100644 --- a/src/boot/ngcp-call.js +++ b/src/boot/ngcp-call.js @@ -9,7 +9,8 @@ import { callMute, callMuteRemote, callUnMute, - callUnMuteRemote + callUnMuteRemote, + callStart } from 'src/api/ngcp-call' import { i18n } from 'boot/i18n' @@ -109,4 +110,18 @@ export default async ({ app, store }) => { store.commit('call/toggleHold') store.commit('call/setLocalOnHold', false) }) + callEvent.on('outgoingRefer', (event) => { + const number = event.request.refer_to._uri._user + store.commit('call/startCalling', number) + callStart({ + number + }) + }) + callEvent.on('incomingRefer', (event) => { + const number = event.request.refer_to._uri._user + store.commit('call/startCalling', number) + callStart({ + number + }) + }) } diff --git a/src/components/CscCallDialpad.vue b/src/components/CscCallDialpad.vue index 84608b86..c74847cc 100644 --- a/src/components/CscCallDialpad.vue +++ b/src/components/CscCallDialpad.vue @@ -32,8 +32,11 @@ /> +
+ {{ dialedNumber }} +
@@ -46,9 +49,18 @@ color="default" round small - @click="click(key)" + @click="transferCall ? clickTransfer(key) : click(key)" > - {{ key }} + +
@@ -58,6 +70,9 @@