/// <summary>

/// 用户队列服务API

/// </summary>

public interface ICustomerQueueManager : IService

{

    /// <summary>

    /// 创建用户队列

    /// </summary>

    /// <param name="queueName">队列名称</param>

    [OperationContract(Name = "CreateQueue")]

    [WebGet(RequestFormat = WebMessageFormat.Json)]

    void CreateQueue(string queueName);

 

    /// <summary>

    /// 删除队列

    ///  - 分强制删除和非强制删除两种模式

    ///  - 强制删除: 队列如果不为空也会被删除

    ///  - 非强制删除: 队列如果不为空, 这不会被删除并抛出异常

    /// </summary>

    /// <param name="queueName">队列名称</param>

    /// <param name="forceDrop">true: 强制删除; false: 非强制删除</param>

    [OperationContract(Name = "DropQueue")]

    [WebGet(RequestFormat = WebMessageFormat.Json)]

    void DropQueue(string queueName, bool forceDrop);

 

    /// <summary>

    /// 检查队列是否存在

    /// </summary>

    /// <param name="queueName">要检查的队列名称</param>

    /// <returns>true: 存在, false: 不存在</returns>

    [OperationContract(Name = "HasQueue")]

    [WebGet(RequestFormat = WebMessageFormat.Json)]

    bool HasQueue(string queueName);

 

    /// <summary>

    /// 将咨询用户加入队列

    /// </summary>

    /// <param name="queueName">队列名称</param>

    /// <param name="record">咨询记录对象 - 如果将deskId设置为空则代表是新加入的客户.</param>

    /// <param name="enqueueMode">入队列模式: 0 - 替换模式, 1 - 重新排队模式</param>

    [OperationContract(Name = "Enqueue")]

    [WebGet(RequestFormat = WebMessageFormat.Json)]

    void Enqueue(string queueName, InquiryRecord record, int enqueueMode);

 

    /// <summary>

    /// 获取某个客户在队列中的位置

    /// </summary>

    /// <param name="queueName">队列名称</param>

    /// <param name="customerUserId">客户ID</param>

    /// <returns></returns>

    int Position(string queueName, string customerUserId);

 

    /// <summary>

    /// 将用户拉出队列

    /// </summary>

    /// <param name="queueName">队列名称</param>

    /// <param name="customerUserId">要拉出队列的客户ID, 如果为空则将第一个咨询客户拉出队列.</param>

    /// <returns>被拉出队列的访客记录对象</returns>

    [OperationContract(Name = "Dequeue")]

    [WebGet(RequestFormat = WebMessageFormat.Json)]

    InquiryRecord Dequeue(string queueName, string customerUserId);

 

    /// <summary>

    /// 将用户在不同队列间快速移动 (不提供comments)

    /// </summary>

    /// <param name="sourceQueueName">源队列</param>

    /// <param name="targetQueueName">目标队列</param>

    /// <param name="deskUserId">执行快速移动的客服用户ID</param>

    /// <param name="customerUserId">要快速移动的客户ID, 如果为空则对源队列的第一个咨询客户进行移动.</param>

    /// <param name="attachedComments">附加的备注信息</param>

    /// <returns>被移动的访客记录对象</returns>

    [OperationContract(Name = "QuickMove")]

    [WebGet(RequestFormat = WebMessageFormat.Json)]

    InquiryRecord QuickMove(string sourceQueueName, string targetQueueName, string deskUserId, string customerUserId, string attachedComments);

 

    /// <summary>

    /// 查看队列用户列表

    /// </summary>

    /// <param name="queueName">队列名称</param>

    /// <param name="count">要查看的数量</param>

    /// <returns>访客记录列表</returns>

    [OperationContract(Name = "ViewQueue")]

    [WebGet(RequestFormat = WebMessageFormat.Json)]

    List<InquiryRecord> ViewQueue(string queueName, int count);

 

    /// <summary>

    /// 获取队列长度

    /// </summary>

    /// <param name="queueName">要查询的队列名称</param>

    /// <returns>长度</returns>

    [OperationContract(Name = "Count")]

    [WebGet(RequestFormat = WebMessageFormat.Json)]

    int Count(string queueName);

 

    /// <summary>

    /// 获取所有队列名称

    /// </summary>

    /// <returns>队列名称列表</returns>

    [OperationContract(Name = "GetAllQueues")]

    [WebGet(RequestFormat = WebMessageFormat.Json)]

    List<string> GetAllQueues();

}

用户队列服务API的更多相关文章

  1. 如何设计提高服务API的安全性(二)API密钥方式详解

    在上文已经讲述了基础介绍,这篇文章详细讲解API密钥方式. 利用何种加密方式呢? 经过上面加密算法的理解,单向加密不仅性能高,而且有压缩性,即长度一致,有效减少网络传输过程中的字节大小.适合我们这种调 ...

  2. 【阿里云产品公测】消息队列服务MQS java SDK 机器人应用初体验

    [阿里云产品公测]消息队列服务MQS java SDK 机器人应用初体验 作者:阿里云用户啊里新人   初体验 之 测评环境 由于MQS支持外网访问,因此我在本地做了一些简单测试(可能有些业余),之后 ...

  3. day102:MoFang:后端完成对短信验证码的校验&基于celery完成异步短信发送&flask_jwt_extended&用户登录的API接口

    目录 1.用户注册 1.后端完成对短信验证码的校验 2.基于celery实现短信异步发送 2.用户登录 1.jwt登录验证:flask_jwt_extended 2.服务端提供用户登录的API接口 1 ...

  4. NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例

    一.消息队列场景简介 “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更复杂,可能包含嵌入对象.消息被发送到队列中,“消息队列”是在消息的传输过程中保存消息的容器 ...

  5. Redis作为消息队列服务场景应用案例

    NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例   一.消息队列场景简介 “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更 ...

  6. 快速入门系列--WCF--06并发限流、可靠会话和队列服务

    这部分将介绍一些相对深入的知识点,包括通过并发限流来保证服务的可用性,通过可靠会话机制保证会话信息的可靠性,通过队列服务来解耦客户端和服务端,提高系统的可服务数量并可以起到削峰的作用,最后还会对之前的 ...

  7. 【转】NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例

    一.消息队列场景简介 “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更复杂,可能包含嵌入对象.消息被发送到队列中,“消息队列”是在消息的传输过程中保存消息的容器 ...

  8. C# 调用百度地图Web服务API

    最近公司项目中需要根据两个地点的交通路径和距离做一些数据推荐,为了程序的稳定和用户体验所以想从百度地图 API 采集数据保存到数据库中,经过一翻研究之后选定了百度地图 Web 服务 API 中的 Di ...

  9. (转载)Linux系统调用及用户编程接口(API)

    (转载)http://www.farsight.com.cn/news/emb167.htm 1 Linux系统调用 所谓系统调用是指操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组 ...

随机推荐

  1. YARN的笔记

  2. echarts图片保存

    一.js: function updateChart(versionList,rateList) { option = { title: { text: '拖动频次' }, tooltip : { t ...

  3. oracle创建视图时一些问题

    这几天创建视图的时候,遇见的问题. 一:创建视图的时候Oracle-报错:文字与格式字符串不匹配(ORA-01861) 我创建的时候用的 是to_date 然后我改成了to_char select X ...

  4. JS 验证输入框输入 只允许输入正实数(正整数,正小数),其他情况下不能输入 oninput事件

    input标签的oninput事件 要求输入框只输入正实数,包括整数和小数. 具体要求:整数部分不超过7位,可以没有小数,若有位数不超过2位. <input type="text&qu ...

  5. JavaScript中的函数和C#中的匿名函数(委托、lambda表达式)

    在js中function是一个一个引用类型,所以可以出现这样的代码: 'use strict'; var compare=function(value1, value2) { if (value1&l ...

  6. JavaScript中变量、执行环境、作用域与C#中的异同

    首先需要明确一个执行环境的概念,执行环境这个概念是用来理解作用域的,在js中,执行环境分为全局执行环境和局部(function)执行环境,而在C#这类的C类语言中,还有一个块级别的执行环境,如if语句 ...

  7. mysql_linux(centos7 mysql 5.7.19)

    centos7  mysql 5.7.19安装 1.解压文件 [root@centos3 ~]# tar -zxvf mysql-5.7.19-linux-glibc2.12-x86_64.tar.g ...

  8. Springboot自定义过滤器Filter

    前言:自己写了个Springboot项目,最近写的功能越来越多,结合业务已经要写过滤器Filter来过滤处理一些请求. 在网上看了几篇博客,总结如下: 过滤器配置方式有两种: 1.通过@WebFilt ...

  9. day 7-20 视图,触发器,事务

    一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...

  10. mac下virtualbox中centos6.5虚拟机实现全屏和调整分辨率

    在visualbox里安装好centos后,发现不能分辨率与原屏幕不一致,很多解决方法是:安装增强包.可是安装增强包后依然达不到效果. 究其原因,原来因为没有安装显卡驱动导致安装了增强包后无法实现分辨 ...