@signalwire/core
Version:
Shared code for the SignalWire JS SDK
74 lines (66 loc) • 2 kB
text/typescript
import { makeRPCRequest, makeRPCResponse } from './helpers'
import { VertoMethod } from '../utils/interfaces'
type VertoParams = { [key: string]: any }
const tmpMap: VertoParams = {
id: 'callID',
destinationNumber: 'destination_number',
remoteCallerName: 'remote_caller_id_name',
remoteCallerNumber: 'remote_caller_id_number',
callerName: 'caller_id_name',
callerNumber: 'caller_id_number',
fromFabricAddressId: 'from_fabric_address_id',
}
/**
* Translate SDK fields into verto variables
*/
const filterVertoParams = (params: VertoParams) => {
if (params.hasOwnProperty('dialogParams')) {
// prettier-ignore
const {
remoteSdp,
localStream,
remoteStream,
...dialogParams
} = params.dialogParams
for (const key in tmpMap) {
if (key && dialogParams.hasOwnProperty(key)) {
// @ts-ignore
dialogParams[tmpMap[key]] = dialogParams[key]
delete dialogParams[key]
}
}
params.dialogParams = dialogParams
}
return params
}
const buildVertoRPCMessage = (method: VertoMethod) => {
return (params: VertoParams = {}) => {
return makeRPCRequest({
method,
params: filterVertoParams(params),
})
}
}
export const VertoInvite = buildVertoRPCMessage('verto.invite')
export const VertoBye = buildVertoRPCMessage('verto.bye')
export const VertoAttach = buildVertoRPCMessage('verto.attach')
export const VertoModify = buildVertoRPCMessage('verto.modify')
export const VertoInfo = buildVertoRPCMessage('verto.info')
export const VertoAnswer = buildVertoRPCMessage('verto.answer')
export const VertoSubscribe = buildVertoRPCMessage('verto.subscribe')
export const VertoPong = buildVertoRPCMessage('verto.pong')
export const VertoResult = (id: string, method: VertoMethod) => {
return makeRPCResponse({
id,
result: {
method,
},
})
}
export interface VertoModifyResponse {
action: string
callID: string
holdState: 'held' | 'active'
node_id?: string
sdp?: string
}