Pubnub Android中的多个私人聊天频道

时间:2015-07-26 05:51:59

标签: android chat real-time publish-subscribe pubnub

您好我正在使用pubnub制作聊天应用,需要一些指导。我已经浏览了所有教程,并使用android SDK了解了发布/订阅/多索引/发送推送通知/在线API的概念,并制作了示例公共聊天应用程序。

将我的应用视为客户服务。我将在一端拥有多个用户,他们可以选择在另一端与我们的员工进行对话。客户只能与我们的员工(不是彼此之间)聊天,只有客户才能发起对话。我如何构建这个?

我曾想过在员工和客户之间定义每个可能的渠道(在每次注册时)使用他们的令牌(或一些UUID)作为渠道名称,cust1_empl1,cust1_empl2。假设我有5个员工,那么每个客户拥有的渠道将是5个但是对于我们这边,我们需要的渠道和用户一样多,这是不实际的。(根据我的估计,3000个用户/员工)

如果用户1与employee1进行对话

1)我是否必须首先定义cust1_empl1并让它们都发布并订阅该频道?

2)有没有办法在飞行中制作这些?当cust1开始聊天时,我总是可以创建一个频道并发布,订阅它,但是另一端的主管如何知道该用户想要聊天并创建了一个新频道,因为他必须被提示加入频道如果它是在飞行中制作的。

3)我是否必须使用某种公共频道在设备之间发送信息,以便通知他们正在进行的频道?

提前致谢

1 个答案:

答案 0 :(得分:4)

Varun的,

您可以让客户和您的代理订阅其个人频道(例如channel-customer1)。除此之外,如果代理可以进行对话,代理可以订阅全球渠道(例如available_agents)。

作为用户,当我想与代理商发起聊天时,我会在全球频道上发布消息

PUBNUB.publish({
    channel: 'available_agents',
    message: {"customerID":"customer1", "personalChannel": "channel-customer1"}
});

订阅该频道的所有可用座席都会收到此请求,并可以通过我的个人信息回复我。在消息中标识的频道。要关闭循环,我可以在available-agents频道上发送另一条消息,宣布我已成功开始与代理进行对话。当客户与代理商之间的配对完成后,您可以创建一个动态渠道,让他们在" customer1-agent1-chat"或者只是让双方互相发布个人频道。例如,

  • 当我想向代理发送消息时,我发布在channel-agent1
  • 当代理想要给我发消息时,他会在channel-customer1
  • 上发布

所以回答你的问题:

  1. 你没有必要"创造" cust1_empl1频道从头开始。您只有在将客户和员工配对时才能这样做。
  2. 您可以通过在全球渠道上宣布您的所有可用代理订阅的对话请求来执行此操作。您还可以让他们知道他们可以与您联系的频道以开始聊天。
  3. 如果您使用服务器作为中间人来创建动态频道,您的服务器可以只在客户和员工的私人频道上发布,让他们知道他们必须订阅额外的新会话的频道
  4. 需要考虑的其他事项:

    1. 出于安全考虑,我建议您查看PubNub Access Manager。例如,您可以通过仅提供对客户的写访问权限和对员工(代理商)的读访问权来锁定available-agents渠道。
    2. 管理动态创建的渠道并让客户或员工订阅它的另一种方法是使用Channel Groups。使用频道组,您可以让每个用户只订阅个人频道组。您可以通过向渠道组添加/删除单个渠道来管理各个渠道的订阅。