是否可以使用opentok检查用户消耗的通话时间

时间:2014-07-03 12:50:15

标签: php webrtc opentok

我在做什么

我将opentok与我们的会员网站整合在一起,它的工作非常好。我们的网站是一个会员网站,您可以与安排与您会面的客户注册并举行一对一的视频会议。

我对opentok的理解是什么

据我所知,有月费,然后根据我使用的分钟数,我会收到费用。 (当然是在前10K分钟后)

我想知道的事情

由于人们将注册使用我们的服务,我想跟踪哪个用户消耗了多少分钟。那么有没有办法跟踪哪个用户在OpenTok上消耗了多少通话时间?

我将非常感谢这里的任何指导。

1 个答案:

答案 0 :(得分:1)

抄袭@ benjamintrent的评论,这里有一些OpenTok特定的示例代码。这实际上取决于您希望如何向用户收费,这里有两种情况:

如果您想在用户进入聊天时开始为用户收费,您可以向服务器发送一个帖子请求,指明开始时间:

session.on("sessionConnected", function(err){
  if(!err){
    $.post("/server/userId", {startTime: date.now()}, function(){...});
  }
});

在大多数情况下,您可能希望在用户实际连接到他们应该连接的用户时开始计费:

session.on("streamCreated", function(stream){
  if(stream.connection.connectionData == "username I was supposed to connect to"){
    $.post("/server/userId", {startTime: date.now()}, function(){...});
  }
});

您可能希望在与会话断开连接时结束视频聊天会话,或者您应该与之交谈的人离开聊天室:

session.on("streamDestroyed", function(stream){
  if(stream.connection.connectionData == "username I was supposed to connect to"){
    $.post("/server/userId", {endTime: date.now()}, function(){...});
  }
});

不幸的是,如果用户关闭浏览器,您将无法获得sessionDisconnected或streamDestroyed事件。要解决此问题,您可以每5秒向服务器发送一次心跳发送请求。如果用户停止接收心跳请求并相应地结束计费,您的服务器将知道用户已关闭浏览器。

setInterval(function(){
  $.post("/heartbeat/userId", {currentTime: date.now()}, function(){...});
}, 5000);

希望有所帮助,祝你好运!