Pubnub 中的多个私人聊天频道 Android
Multiple Private Chat channels in Pubnub Android
您好,我正在使用 pubnub 制作聊天应用程序,需要一些指导。我已经阅读了所有教程并理解了发布/订阅/多索引/发送推送通知/状态 API 使用 android SDK 的概念,并制作了示例 public 聊天应用程序。
将我的应用视为客户服务。我将在一端有多个用户,他们可以选择在另一端与我们的员工发起对话。客户只能与我们的员工聊天(彼此之间不能),并且只有客户可以发起对话。我该如何构建它?
我曾考虑过使用他们的令牌(或一些 UUID)组合作为渠道名称来定义员工和客户之间的每个可能的渠道(在每次注册时),cust1_empl1,cust1_empl2。假设我有 5 名员工,那么每个客户拥有的渠道将是 5,但对于我们而言,我们需要与不实际的用户一样多的渠道。(根据我的估计,假设 3000 个用户/员工)
如果用户 1 与员工 1 交谈
1) 我是否必须首先定义 cust1_empl1 然后让他们都发布和订阅频道?
2) 有没有办法即时制作这些?当 cust1 开始聊天时,我总是可以创建一个频道并发布、订阅它,但是另一端的执行人员如何知道这个用户想要聊天并创建了一个新频道,因为必须提示他加入频道如果它是即时制作的。
3) 我是否必须使用某种 public 通道在设备之间发送信息以及通知它们正在运行的通道?
提前致谢
瓦伦,
您可以先让客户和您的代理订阅他们的个人频道(例如 channel-customer1
)。除此之外,代理可以订阅全局频道(例如 available_agents
),如果他们可以进行对话的话。
作为用户,当我想和代理发起聊天时,我会在全局频道发布消息
PUBNUB.publish({
channel: 'available_agents',
message: {"customerID":"customer1", "personalChannel": "channel-customer1"}
});
订阅该频道的所有可用代理都将收到此请求,并可以在消息中标识的我的 "personal" 频道上回复我。要关闭循环,我可以在 available-agents
频道上发送另一条消息,宣布我已成功开始与代理的对话。当客户和代理之间的配对完成后,您可以创建一个动态频道让他们在“customer1-agent1-chat
”上聊天,或者让双方在彼此的个人频道上发布。例如,
- 当我想给代理发消息时,我发布在
channel-agent1
- 当代理要给我发消息时,他会在
channel-customer1
上发布
所以回答你的问题:
- 您不必从头开始 "create" cust1_empl1 频道。只有当您将客户和员工配对时,您才会这样做。
- 您可以通过在所有可用代理都订阅的全球频道上发送通知您的对话请求来执行此操作。您还将让他们知道他们可以通过哪个频道与您联系以开始聊天。
- 如果您将服务器用作创建动态频道的中间人,您的服务器可以只在客户和员工的私人频道上发布,让他们知道他们必须为新对话订阅一个额外的频道
其他需要考虑的事项:
- 出于安全原因,我建议您查看 PubNub Access Manager。例如,您可以通过仅向客户提供写权限和向员工(代理)提供读权限来锁定
available-agents
通道。
- 管理动态创建的频道并让客户或员工订阅它的另一种方法是使用 Channel Groups。使用频道组,您可以让每个用户只订阅一个个人频道组。您可以通过 adding/removing 个频道到频道组来管理对各个频道的订阅。
您好,我正在使用 pubnub 制作聊天应用程序,需要一些指导。我已经阅读了所有教程并理解了发布/订阅/多索引/发送推送通知/状态 API 使用 android SDK 的概念,并制作了示例 public 聊天应用程序。
将我的应用视为客户服务。我将在一端有多个用户,他们可以选择在另一端与我们的员工发起对话。客户只能与我们的员工聊天(彼此之间不能),并且只有客户可以发起对话。我该如何构建它?
我曾考虑过使用他们的令牌(或一些 UUID)组合作为渠道名称来定义员工和客户之间的每个可能的渠道(在每次注册时),cust1_empl1,cust1_empl2。假设我有 5 名员工,那么每个客户拥有的渠道将是 5,但对于我们而言,我们需要与不实际的用户一样多的渠道。(根据我的估计,假设 3000 个用户/员工)
如果用户 1 与员工 1 交谈
1) 我是否必须首先定义 cust1_empl1 然后让他们都发布和订阅频道?
2) 有没有办法即时制作这些?当 cust1 开始聊天时,我总是可以创建一个频道并发布、订阅它,但是另一端的执行人员如何知道这个用户想要聊天并创建了一个新频道,因为必须提示他加入频道如果它是即时制作的。
3) 我是否必须使用某种 public 通道在设备之间发送信息以及通知它们正在运行的通道?
提前致谢
瓦伦,
您可以先让客户和您的代理订阅他们的个人频道(例如 channel-customer1
)。除此之外,代理可以订阅全局频道(例如 available_agents
),如果他们可以进行对话的话。
作为用户,当我想和代理发起聊天时,我会在全局频道发布消息
PUBNUB.publish({
channel: 'available_agents',
message: {"customerID":"customer1", "personalChannel": "channel-customer1"}
});
订阅该频道的所有可用代理都将收到此请求,并可以在消息中标识的我的 "personal" 频道上回复我。要关闭循环,我可以在 available-agents
频道上发送另一条消息,宣布我已成功开始与代理的对话。当客户和代理之间的配对完成后,您可以创建一个动态频道让他们在“customer1-agent1-chat
”上聊天,或者让双方在彼此的个人频道上发布。例如,
- 当我想给代理发消息时,我发布在
channel-agent1
- 当代理要给我发消息时,他会在
channel-customer1
上发布
所以回答你的问题:
- 您不必从头开始 "create" cust1_empl1 频道。只有当您将客户和员工配对时,您才会这样做。
- 您可以通过在所有可用代理都订阅的全球频道上发送通知您的对话请求来执行此操作。您还将让他们知道他们可以通过哪个频道与您联系以开始聊天。
- 如果您将服务器用作创建动态频道的中间人,您的服务器可以只在客户和员工的私人频道上发布,让他们知道他们必须为新对话订阅一个额外的频道
其他需要考虑的事项:
- 出于安全原因,我建议您查看 PubNub Access Manager。例如,您可以通过仅向客户提供写权限和向员工(代理)提供读权限来锁定
available-agents
通道。 - 管理动态创建的频道并让客户或员工订阅它的另一种方法是使用 Channel Groups。使用频道组,您可以让每个用户只订阅一个个人频道组。您可以通过 adding/removing 个频道到频道组来管理对各个频道的订阅。