Socket.io / ARI error: Emit Alert

Socket.io / ARI error: Emit Alert

我目前正在尝试添加一些错误处理,这会出现在我的 Web 应用程序的前端,但我不知道如何让 socket.io 发出警告框到目前为止的前端示例,我输入了一个扩展号码来桥接呼叫,如果该呼叫不存在则显示警报。

代码应该让它看起来更清晰一些。

客户端

点击按钮时将输入框中找到的数据发送到服务器端

$(document).on('click', '.bridge', function () {
    var bridge = $('input').val();
    socket.emit('bridge', bridge);
    console.log(bridge)
});

服务器端

将从客户端接收到的数据存储到一个var中,然后调用stasis函数。

io.sockets.on('connection', function (socket) {
socket.on('bridge', function (data) {
  bridgeCall(data);
  console.log("Reached listener for bridge")
});
    });

停滞功能

使用 ARI 客户端命令桥接您刚刚从客户端传递到服务器端的通道,用户将被桥接并显示在 stasis 应用程序中。如果出现错误,我正在尝试以某种方式向前端网页发出警报。

function bridgeCall(exeten) {
    console.log("Extension being bridged: " + exeten);
    client.channels.originate({
      endpoint : "SIP/" + exeten,
      app : 'bridge-hold'
    },
      function (err, channel) {
      console.log("Channel: " + exeten + " does not exist");
      alert("Channel: " + exeten + " does not exist");
    });

  }

我只是想在前端出现错误时发出警报。

您必须发出一个客户端可以收听然后根据它采取行动的事件。

首先在您的客户端有:

socket.on("my_error",function(err){alert(err)}

然后在服务器端,将套接字传递给 bridgeCall 函数:

bridgeCall(data,socket);

然后在 bridgeCall 中,执行:

function bridgeCall(exeten,socket) {
    console.log("Extension being bridged: " + exeten);
    client.channels.originate({
      endpoint : "SIP/" + exeten,
      app : 'bridge-hold'
    },
      function (err, channel) {
          console.log("Channel: " + exeten + " does not exist");
          socket.emit("my_error","Channel: " + exeten + " does not exist");
    });

  }

我是如何根据原始答案最终让它工作的!

首先在您的客户端上,您必须插入以下内容以接收事件以显示错误(如果有):

socket.on("error", function (err) {
$("<div title='Error'>" + err + "</div>").dialog({
    modal : true,
    buttons : {
        Ok : function () {
            $(this).dialog("close");
        }
    }
});

});

然后在服务器端,将套接字传递给 bridgeCall 函数:

bridgeCall(数据,套接字);

然后在 bridgeCall 中,您需要将错误消息存储在全局变量中,然后在错误函数中使用它,ARI/Stasis 这样做很奇怪,所以请执行以下操作:

  function bridgeCall(exeten) {
    console.log("Extension being bridged: " + exeten);
    client.channels.originate({
      endpoint : "SIP/" + exeten,
      app : 'ARI-Web-App'
    },
      function (err) {
              if (err) {
      console.log("Channel: " + exeten + " does not exist");
      error = ("Channel: " + exeten + " does not exist");
      Error();
      }
    });

  }

您在 bridgeCall 末尾调用的错误函数如下所示,与服务器端套接字逻辑一起插入:

 function Error() {
io.sockets.emit("error",error);

}