///
/// 用户队列服务API
///
public interface ICustomerQueueManager : IService
{
///
/// 创建用户队列
///
/// 队列名称
[OperationContract(Name = "CreateQueue")]
[WebGet(RequestFormat = WebMessageFormat.Json)]
void CreateQueue(string queueName);
///
/// 删除队列
/// - 分强制删除和非强制删除两种模式
/// - 强制删除: 队列如果不为空也会被删除
/// - 非强制删除: 队列如果不为空, 这不会被删除并抛出异常
///
/// 队列名称
/// true: 强制删除; false: 非强制删除
[OperationContract(Name = "DropQueue")]
[WebGet(RequestFormat = WebMessageFormat.Json)]
void DropQueue(string queueName, bool forceDrop);
///
/// 检查队列是否存在
///
/// 要检查的队列名称
///true: 存在, false: 不存在
[OperationContract(Name = "HasQueue")]
[WebGet(RequestFormat = WebMessageFormat.Json)]
bool HasQueue(string queueName);
///
/// 将咨询用户加入队列
///
/// 队列名称
/// 咨询记录对象 - 如果将deskId设置为空则代表是新加入的客户.
/// 入队列模式: 0 - 替换模式, 1 - 重新排队模式
[OperationContract(Name = "Enqueue")]
[WebGet(RequestFormat = WebMessageFormat.Json)]
void Enqueue(string queueName, InquiryRecord record, int enqueueMode);
///
/// 获取某个客户在队列中的位置
///
/// 队列名称
/// 客户ID
///
int Position(string queueName, string customerUserId);
///
/// 将用户拉出队列
///
/// 队列名称
/// 要拉出队列的客户ID, 如果为空则将第一个咨询客户拉出队列.
///被拉出队列的访客记录对象
[OperationContract(Name = "Dequeue")]
[WebGet(RequestFormat = WebMessageFormat.Json)]
InquiryRecord Dequeue(string queueName, string customerUserId);
///
/// 将用户在不同队列间快速移动 (不提供comments)
///
/// 源队列
/// 目标队列
/// 执行快速移动的客服用户ID
/// 要快速移动的客户ID, 如果为空则对源队列的第一个咨询客户进行移动.
/// 附加的备注信息
///被移动的访客记录对象
[OperationContract(Name = "QuickMove")]
[WebGet(RequestFormat = WebMessageFormat.Json)]
InquiryRecord QuickMove(string sourceQueueName, string targetQueueName, string deskUserId, string customerUserId, string attachedComments);
///
/// 查看队列用户列表
///
/// 队列名称
/// 要查看的数量
///访客记录列表
[OperationContract(Name = "ViewQueue")]
[WebGet(RequestFormat = WebMessageFormat.Json)]
ListViewQueue(string queueName, int count);
///
/// 获取队列长度
///
/// 要查询的队列名称
///长度
[OperationContract(Name = "Count")]
[WebGet(RequestFormat = WebMessageFormat.Json)]
int Count(string queueName);
///
/// 获取所有队列名称
///
///队列名称列表
[OperationContract(Name = "GetAllQueues")]
[WebGet(RequestFormat = WebMessageFormat.Json)]
ListGetAllQueues();
}