You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Voximplant呼叫转接方法确认:是否需通过callUser与easyProcess实现?

Voximplant通话转接实现说明

你的理解是正确的——通过VoxEngine.callUser呼叫目标号码,再用VoxEngine.easyProcess接通双方是可行的通话转接方案,同时也有更简洁的实现方式,以下是具体说明:

方案一:按你的思路实现

  • 第一步:在当前通话的触发事件(比如用户输入DTMF指令、自定义业务逻辑触发)中,调用VoxEngine.callUser发起对目标电话号码的呼叫
  • 第二步:监听目标呼叫的Connected事件,一旦接通,调用VoxEngine.easyProcess将原通话与新呼叫桥接,自动处理媒体流和通话状态

示例代码:

let originalCall;

// 监听来电并接听
VoxEngine.addEventListener(AppEvents.CallAlerting, (e) => {
  originalCall = e.call;
  originalCall.answer();

  // 监听用户DTMF按键触发转接(示例按1键转接)
  originalCall.addEventListener(CallEvents.DtmfReceived, (dtmfEvt) => {
    if (dtmfEvt.dtmf === "1") {
      // 呼叫目标号码,需替换为实际参数
      const targetCall = VoxEngine.callUser("目标电话号码", "你的Voximplant应用名", "你的Voximplant用户名");

      // 目标接通后桥接通话
      targetCall.addEventListener(CallEvents.Connected, () => {
        VoxEngine.easyProcess(originalCall, targetCall);
      });

      // 处理转接失败场景
      targetCall.addEventListener(CallEvents.Failed, () => {
        originalCall.say("转接失败,请稍后重试");
        originalCall.hangup();
      });
    }
  });
});

方案二:直接媒体连接的简洁方案

也可以跳过easyProcess,直接通过媒体连接方法实现转接,逻辑更灵活:

let originalCall;

VoxEngine.addEventListener(AppEvents.CallAlerting, (e) => {
  originalCall = e.call;
  originalCall.answer();

  originalCall.addEventListener(CallEvents.DtmfReceived, (dtmfEvt) => {
    if (dtmfEvt.dtmf === "1") {
      // 直接呼叫目标号码
      const targetCall = VoxEngine.call("目标电话号码");

      targetCall.addEventListener(CallEvents.Connected, () => {
        // 双向连接媒体流
        originalCall.connectMedia(targetCall);
        targetCall.connectMedia(originalCall);
      });

      // 目标挂断后结束原通话
      targetCall.addEventListener(CallEvents.Disconnected, () => {
        originalCall.hangup();
      });
    }
  });
});

内容的提问来源于stack exchange,提问作者Ksenia Cherkasova

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 20:20:19