=任务=
每一个任务都需要具备以下的属性：
* 任务显示名称: 用于显示任务在选折时候的text
* 任务优先级名称： 优先级时候的text
* 终端发起方显示名称： 如果这个终端是发起方，终端里面看到的这个任务的text
* 终端接收方显示名称： 如果这个终端是接收方，终端里面看到这个任务的text,注意，这个是单一的接受方时候的定义。
* 终端多方接受时显示名称： 如果这个终端不是唯一的接收方，终端里面看到这个任务的text.
* 主机执行任务列表里显示名称： 在server段的活跃会话里面看到的任务显示的名称。
* 任务的描述: 用于描述任务的特点，属于类似于help的东西。
注意：这里面的“终端发起方显示名称”，“终端接收方显示名称”，“终端多方接受时显示名称”，“主机执行任务列表里显示名称”都可以是prefix + action_text。
==任务优先级的相关配置信息==
对于优先级来说，我们定义了如下的处理方式：
# 正常处理： 按照任务的正常逻辑进行执行
# 呼叫策略：按照被叫终端的呼叫策略配置系数进行逻辑判断/执行
# 混音：指硬件上声音的混合（数字和ana)
# 级别高不能操作：就是操作界面屏蔽操作。如果出现误操作或者系统错误发出操作，将终止
# 跳过&恢复：就是跳过这一段等待时间音频，然后进行恢复。
# 暂停&恢复：保持在暂停时的进度，然后进行恢复
# 提醒&发起失败：提醒发起方，他发起任务失败
# 终止：暂停这个任务。
# 提醒&跳过&恢复：不需要提醒的跳过&恢复
# 提醒所有：针对所有任务的终端进行提醒，任务被高优先级的打断。
# 提醒发起方：只提醒发起方，任务被高优先级的打断。
# 保持：保持目前的任务或者连接
# 后优先，前终止：后面进来的任务终止前面的任务。
# 不处理：不需要做任何特别的处理，忽略
这些处理，针对如下情况作为选择：
# 发起新任务时候，处理方式选折有：
#* 发起新任务处于低优先级，操作是
#* 发起新任务处于同等优先级，操作是
#* 发起新任务处于高优先级，操作是
# 正在执行的任务中，在新的任务呼入时的情况有：
#* 执行中的任务处于低优先级，操作是：
#* 执行中的任务处于同等优先级，操作是：
#* 执行中的任务处于高优先级，操作是：
针对上面的每一种情况都可以配置两个提示音：
# 一个是提示给发起方
# 一个是提示给接收方
==任务和硬件相关配置==
针对不同的硬件配置，我们可以控制一个终端的部分功能，下面就定义了基本的属性：
* 对讲属性：控制了下面的几个任务可否执行
*# 发起对讲/接收对讲/参与对讲
*# 一键对讲
*# 一键求助
* 发起广播
*# 发起广播
*# 一键发起广播
* 被录音，被监听
* 下载是否支持

=actions=
属性有：
* action显示名称：
* action在任务时候，替换名称
* action的类别属性： 主要是指我们目前的类别，如：broadcast/channel/unicast/conference/record/airplay/local_play/media/spy/schedule/real_time_media
下面是每一个action需要的基本属性值
==broadcast==
指的是广播。他的类别是：
* conv_type: broadcast.
===client端发起参数===
需要知道的参数有：
* name of this broadcast: should be generated(uuid).
* target of terminals: 
*# dial no：在主机端会被translate成所有的终端
*# a list of targets: 和sip url一起过来的terminals,目前最多支持2048个字符串，好像。
===server端发起参数===
需要知道的参数有
* name of this broadcast: should be generated(uuid).
* target of terminals: same as client side.
* 发起方的选折：
*# 选折一个发起终端
*# 选折使用web browser：使用flash control。
==channel==
主要是频道.他的类别是：
* conv_type: channel.
===client端发起参数===
* 名称：这个指的是 频道的名称定义。
* 或者是号码：号码必须被转移到名称。
===server端发起参数===
* 需要知道所有的频道名称
* 需要知道让他们终端接听这个频道。
==unicast==
主要指的2人双工对讲。类别是：
* conv_type: unicast.
===client端发起参数===
* 对方的呼叫号码
===server端发起参数===
* 对方的呼叫号码
* 发起方的呼叫号码
==conference==
主要指的是会议。类别是:
* conv_type: conference
===client端发起参数===
* 所有需要参与的会议人员号码，长度目前是2048.
===server端发起参数===
* 发起人
*# 发起人的号码
*# 从网页上面拨打（使用flash控件）
* 参与人员的号码
==record==
录音。类别是：
* conv_type: record
===client端发起参数===
* 无，只需要呼叫record的号码：就是以*#RECORD#_+[any string]开始的字符串。any string可以使用uuid.
===server端发起参数===
* 需要知道让哪台终端开始录音。
==airplay==
就是苹果音乐功能。类别是：
* conv_type: airplay.
===client端发起参数===
* 苹果音乐的拨号号码。
===server端发起参数===
* 无。
==local_play==
本地音乐播放或者是下载的播放,此处只考虑下载播放。类别是：
* conv_type: local_play.
===client端发起参数===
* 拨号的dialno.
* 本地播放的文件列表。
===server端发起参数===
* 哪些终端需要进行下载播放
* 下载播放的文件列表。
==media==
媒体库点播。类别是：
× conv_type: 媒体库文件点播
===client端发起参数===
* 需要知道的点播文件有哪些。（目前只支持单一文件，考虑支持多文件）。
===server端发起参数===
* 需要点播的终端有哪些
* 需要点播的文件选折。
==spy==
监听哪台终端。类型：
* conv_type: spy
===client端发起参数===
* 被监听的终端号码
===server端发起参数===
* 被监听的终端号码
* 发起监听的终端
*# 选折一个终端号码
*# 使用web browser(flash)
==schedule==
调度，目前系统里面 好像基本没有什么，不知道femto怎么处理的。
===client端发起参数===
===server端发起参数===
==SMS==
发送短信，目前无。
===client端发起参数===
===server端发起参数===
==mail==
发送邮件。类别：
* conv_type: mail
===client端发起参数===
* 收件人
* 邮件内容
* 发送人
===server端发起参数===
* 收件人
* 邮件内容
* 发送人
==GPIO==
GPIO输出。类型：
*conv_type:gpio
===client端发起参数===
* 选折gpio pin
* 选折gpio的name
* 选折gpio输出的方式：
*# 恒定输出：
*#* 高
*#* 低
*# 固定频率闪烁：
*#* 周期时间
*# 任意方式闪烁：
*#* 周期时间
*#* 在这个周期内，闪烁的次数
*#* 在这个周期内，闪烁时高电平的时间。
*#* 在这个周期内，闪烁时的低电平时间。

===server端发起参数===
* 选折激发gpio的终端
* 选折gpio pin
* 选折gpio的name
* 选折gpio输出的方式：
*# 恒定输出：
*#* 高
*#* 低
*# 固定频率闪烁：
*#* 周期时间
*# 任意方式闪烁：
*#* 周期时间
*#* 在这个周期内，闪烁的次数
*#* 在这个周期内，闪烁时高电平的时间。
*#* 在这个周期内，闪烁时的低电平时间。

==dial_call==
就是对讲，自动切换unicast/conference.类别：
* conv_type: dial_call
===client端发起参数===
* 接受端的号码
*# 如果是单一号码，就是unicast
*# 如果是多个号码，就是conference.
===server端发起参数===
* 发送方的信息
*# 终端号码
*# web browser(flash).
* 接受端的号码
*# 如果是单一号码，就是unicast
*# 如果是多个号码，就是conference.
==real_time_media==
就是临时文件播放。类别：
* conv_type: real_time_media
===client端发起参数===
无
===server端发起参数===
* 被接受方的终端
* 上传并且播放的文件是哪些。

=Some commands hint from freeswitch=
* play multiple music files from media: 
<pre>
originate {sip_rh_X-play_list=1:1:1:2,sip_auto_answer=true}user/0001 *#CHANNEL#_#MEDIA#_10_?#*#ch_n=10
</pre>