AOFAX服务器数据库开发接口说明一、接口概述AOFAX数据库接口是为满足企业更多收发传真方式的一种扩展机制,实现了AOFAX传真系统与企业应用系统(如ERP、MIS、OA办公等)之间的交互和集成,从而达到扩展和自定义企业收发传真模式的目的。AOFAX数据库接口系统由企业应用服务器、中间数据库以及AOFAX传真服务器组成,结构如下图所示:企业应用服务器数据库DBAOFAX传真服务器3G-FAX接口实现了传真的收发功能,收发过程如下:发送传真:企业应用系统将待发送的传真任务信息写入中间数据库系统,AOFAX传真服务器从中间数据库读取发送任务,转换后提交发送,发送完成后将发送结果回写到中间数据库,企业应用系统从数据库中读取发送结果并进行后续处理。接收传真:AOFAX传真服务器收到新传真后,自动将传真信息写入到中间数据库系统,企业应用系统从中间数据库读取接收传真信息并进行后续处理。二、系统部署1、准备软硬件环境:传真服务器:AOFAX企业型、服务器型。数据库系统:MySQL、SQLServer、Oracle等数据库系统。企业应用系统:确保系统运作正常,并支持相应数据库系统的存取操作。2、配置数据库:在已正常运作的数据库系统中创建所需的接口数据库和接口表:发送任务表(aofax_send_task)、接收任务表(aofax_recv_task)。表结构和创建脚本参考后续说明。3、创建ODBC数据源:在AOFAX传真服务器上创建相应接口数据库的ODBC数据源DSN项,并确保连接测试成功。4、配置AOFAX传真服务器:启动AOFAX传真系统,在AOFAX管理器“工具”-“选项”菜单的“系统选项”对话框中的“扩展任务”属性页中,选择“启用扩展任务调度”和“启用数据库接口收发传真”,并输入正确的DSN、UID和PWD信息,确保连接测试成功。三、开发说明1、发送传真:在AOFAX传真服务器上创建临时文件夹(如C:\fSendFax),用以保存企业应用软件提交的待发送传真的文档(文档格式参考下面说明)。企业用户在企业应用软件(如ERP、OA办公管理等)中发送传真时,发送界面中需要把要发送传真的相关信息体现出来,主要包括收发件人名、区号、传真号码、要发送的文档名等信息。在提交发送时把这些信息保存到中间数据库的AOFAX发送任务表(aofax_send_task)中,同时把要发送传真的文档提交到AOFAX传真服务器上的临时文件夹中,即上述在AOFAX传真服务器上创建的临时文件夹(注意,在填写发送文档路径字段时,要填写绝对路径,例如:AOFAX传真服务器上新建的临时文件夹为“C:\fSendFax”,提交的待发送的文档名称为“abc.doc”,则在填写发送任务表的“sendfile”字段时,应填写“C:\fSendFax\abc.doc”)。文档提交以后,AOFAX传真服务器定时扫描发送任务表,如果有待发送的文档,将自动读出发送任务信息、转换并完成发送,同时把发送结果回写到发送任务表中。如果企业用户要安装AOFAX传真客户端,请安装AOFAX企业型或服务器型中的客户端软件即可。2、接收传真:AOFAX传真服务器在接收到新传真后,自动把传真相关信息保存到中间数据库的接收任务表(aofax_recv_task)中,用户可以通过读取接收任务表中的内容来查看接收到的传真文件和传真信息。传真文件默认以TIF格式保存在AOFAX传真服务器软件安装目录下的用户数据目录中。3、文档格式:所有通过数据库接口提交的待发送传真文档,都是在AOFAX传真服务器端转换成传真格式文件(.sfx)的,因此,如果要发送某种格式的文档时,这种格式的浏览器或编辑软件必须安装在AOFAX传真服务器上,比如常用的OFFICE软件等等。能实现自动转换的常用格式有:.doc、.xls、.txt、.pdf、.wri等。另外有些软件不支持自动转换功能,如WPS等,即使安装了这种格式的软件,也不能实现自动发送。同时建议提交的文档不要感染病毒,不要有密码等。四、数据库表结构发送传真任务表表名:aofax_send_task字段名类型长度(字节)说明taskidINTEGER4任务ID,主键,自增长titleVARCHAR200传真主题icINTEGER4国际区号(必填,如86,即时传真时填0)ldcINTEGER4长途区号(必填,如755,即时传真或没有长途区号时填0)faxVARCHAR64传真号码(发送有线传真时必填,如83235170)accountVARCHAR20傲发帐号(发送即时传真时必填,如AF90000099)sender1VARCHAR100发件人1,标识传真发件人,如公司名sender2VARCHAR30发件人2,标识传真发件人,如人名等receiver1VARCHAR100收件人1,标识传真收件人,如公司名receiver2VARCHAR30收件人2,标识传真收件人,如人名等sendfileVARCHAR500待发送文件名(必填,绝对路径),多个文件之间用“|”相隔(例如:“C:\fax1.txt|D:\fax2.txt”)sendflagINTEGER4发送标志(必填):0:普通发送1:优先发送(排到当前发送队列的首部)lineINTEGER4选择线路(必填):0:自动调度(先尝试即时传真,失败后由电话线发送)1:仅电话线发送(fax不能为空)2:仅即时传真发送(account不能为空)statusINTEGER4任务状态:0:提交(等待转换)1:发送(已转换并排队发送)2:成功(传真发送成功)3:失败(传真发送失败)4:取消(传真发送被取消)添加新任务时固定填写为0,发送完成后状态由系统回写extinfoVARCHAR200扩展信息retcodeINTEGER4结果码,发送完成后由系统回写sendtimeINTEGER4发送时间(标准Ctime_t格式,从1970年1月1日0时0分0秒开始计算的秒数),发送完成后由系统回写faxfileVARCHAR260转换后传真文件名(TIF格式,绝对路径),发送完成后由系统回写reserve1INTEGER4保留字段1,固定填0reserve2INTEGER4保留字段2,固定填0ext1INTEGER4扩展字段1,固定填0ext2INTEGER4扩展字段2,固定填0memoVARCHAR200备注接收传真任务表表名:aofax_recv_task字段名类型长度(字节)说明taskidINTEGER4任务ID,主键,自增长titleVARCHAR200传真主题icINTEGER4国际区号(发送方)ldcINTEGER4长途区号(发送方)faxVARCHAR64传真号码(发送方传真号码,即时传真时为“传真号码/傲发号”,如“83235170/AF90000099”)sender1VARCHAR100发件人1,标识传真发件人,如公司名sender2VARCHAR30发件人2,标识传真发件人,如人名等receiver1VARCHAR100收件人1,标识传真收件人,如公司名、部门等receiver2VARCHAR30收件人2,标识传真收件人,如人名、分机号等faxfileVARCHAR260传真文件名(绝对路径,TIF格式)pageINTEGER4传真页数recvtimeINTEGER4接收时间(标准Ctime_t格式,从1970年1月1日0时0分0秒开始计算的秒数)recvflagINTEGER4接收标志:0:电话线传输方式1:即时传真传输方式deviceidVARCHAR16传真机SN码,主要用在多路的情况下标识传真是从哪台3G-FAX接收extinfoVARCHAR200扩展信息ext1INTEGER4扩展字段1,固定为0ext2INTEGER4扩展字段2,固定为0memoVARCHAR200备注五、SQL脚本参考1、MySQL:DROPTABLEIFEXISTSaofax_recv_task;CREATETABLEaofax_recv_task(taskidint(10)unsignedNOTNULLAUTO_INCREMENT,titlevarchar(200)DEFAULTNULL,icint(10)unsignedDEFAULTNULL,ldcint(10)unsignedDEFAULTNULL,faxvarchar(64)DEFAULTNULL,sender1varchar(100)DEFAULTNULL,sender2varchar(30)DEFAULTNULL,receiver1varchar(100)DEFAULTNULL,receiver2varchar(30)DEFAULTNULL,faxfilevarchar(260)DEFAULTNULL,pageint(10)unsignedDEFAULTNULL,recvtimeint(10)unsignedDEFAULTNULL,recvflagint(10)unsignedDEFAULTNULL,deviceidvarchar(16)DEFAULTNULL,extinfovarchar(200)DEFAULTNULL,ext1int(10)unsignedDEFAULTNULL,ext2int(10)unsignedDEFAULTNULL,memovarchar(200)DEFAULTNULL,PRIMARYKEY(taskid),UNIQUEKEYtaskid(taskid))ENGINE=MyISAMAUTO_INCREMENT=200DEFAULTCHARSET=latin1;DROPTABLEIFEXISTSaofax_send_task;CREATETABLEaofax_send_task(taskidint(10)unsignedNOTNULLAUTO_INCREMENT,titlevarchar(200)DEFAULTNULL,icint(10)unsignedDEFAULTNULL,ldcint(10)unsignedDEFAULTNULL,faxvarchar(64)DEFAULTNULL,accountvarchar(20)DEFAULTNULL,sender1varchar(100)DEFAULTNULL,sender2varchar(30)DEFAULTNULL,receiver1varchar(100)DEFAULTNULL,receiver2varchar(30)DEFAULTNULL,sendfilevarchar(500)DEFAULTNULL,sendflagint(10)unsignedDEFAULTNULL,lineint(10)unsignedDEFAULTNULL,statusint(10)unsignedDEFAULTNULL,extinfovarchar(200)DEFAULTNULL,retcodeint(10)unsignedDEFAULTNULL,sendtimeint(10)unsignedDEFAULTNULL,faxfilevarchar(260)DEFAULTNULL,reserve1int(10)unsignedDEFAULTNULL,reserve2int(10)unsignedDEFAULTNULL,ext1int(10)unsignedDEFAULTNULL,ext2int(10)unsignedDEFAULTNULL,memovarchar(200)DEFAULTNULL,PRIMARYKEY(taskid),UNIQUEKEYtaskid(taskid))ENGINE=MyISAMAUTO_INCREMENT=3DEFAULTCHARSET=latin1;2、SQLServer:ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[aofax_send_task]')andOBJECTPROPERTY(id,N'IsUserTabl