UNPKG

@signalwire/core

Version:
74 lines (66 loc) 2 kB
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 }