一种创建可语音和协同记账的人工智能记账系统的方法与流程

文档序号:14724256发布日期:2018-06-19 03:39阅读:395来源:国知局

本发明涉及移动互联网领域,尤其是一种创建可语音和协同记账的人工智能记账系统的方法。



背景技术:

移动应用开发技术的演变过程,可分为三个阶段:从早期的WAP(包括WAP1.0和WAP2.0)网站到目前流行的原生应用(NativeApplication),再逐步转向以HTML5标准为基础的Web App。

2008年,HTML5标准案颁布,为移动应用开发提供了另外一种技术方案。2010年,苹果宣布其移动设备不支持Flash插件后,HTML5标准更是迅速成为移动网站打造丰富的网页应用的首选。为了适应移动互联应用“富内容、富交互、富体验、跨平台”的要求,HTML5较之HTML4做出了大幅的改良。突出表现在:支持离线访问、支持全媒体内容展示、支持交互式的2D/3D图像渲染、提供丰富的API以调用移动设备的硬件。这使得HTML5可以实现堪比Native App效果的Web App,而且,其具有更优越的安全性、跨平台访问性。更重要的是,Web App开发难度较之Native App大幅降低,易用性更高。H5WebApp相较于Native App(原生应用)的优点:跨平台、快速迭代、持续交付、降低开发成本、开源生态系统发达。

随着互联网的逐渐普及和移动终端的迅速发展影响着受众消费习惯的改变,对很多人来说收支是一笔糊涂账,通过记账可以达到以下目的:(1)、掌握个人或家庭收支情况,合理规划消费和投资。(2)、培养良好的消费习惯。(3)、增强对个人财务的敏感度,提高理财水平。(4)、促进家庭成员和睦相处。(5)、记录生活、社会变化。(6)、方便小本经商或创业人员及时了解经营动态。(7)、起到备忘录的作用。

目前,市面上多数记账APP,都是基于原生开发的,不能跨平台,不能快速迭代和持续交付,需要投入较大的开发成本并且不能满足用户不想手动记账的需求。

对此,现有技术中提供了基于Android的C/S架构的个人财务助手系统(CN105243482A),但其技术方案存在以下缺点:

1、其App应用程序用于Android平台,开发过程中的重复工作量大,效率低,不利于跨平台手机记账系统;

2、每一笔账可包括金额、分类、时间、备注等信息,记账过程依赖与用户手动输入则过程复杂,效率低;

3、每一笔账可能涉及多个用户,无法实现多个用户对一个账户的协同编辑;

4、联网查询用户数据时速度慢,服务器负载加大时容易产生通信延迟。

术语解释:

JavaScript(JS):一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

WAP:无线应用协议,是一项全球性的网络通信协议。它使移动Internet有了一个通行的标准,其目标是将Internet的丰富信息及先进的业务引入到移动电话等无线终端之中。

DOM:是W3C组织推荐的处理可扩展标志语言的标准编程接口。

MUI:高性能前端框架。

SDK:软件开发工具包(Software Development Kit)。

localStorage:没有时间限制的前端数据存储。



技术实现要素:

为了解决上述技术问题,本发明的目的是:一种兼容性强、实现功能快速迭代的基于HTML5创建可语音输入和协同记账的人工智能记账系统的方法。

本发明所采用的技术方案是:一种创建可语音和协同记账的人工智能记账系统的方法,包括有以下步骤:

创建新的工程,引入基于JS开发的前端框架MUI作为开发框架,将前端工具封装成开发的JS方法,封装调用原生方法;

设置项目配置文件中的配置参数;

在开发框架中设置记账系统的功能模块,所述功能模块包括有语音输入模块和协同记账模块;

根据开发框架中记账系统的功能模块构建出的HTML5页面,打包生成记账系统的APP文件。

进一步,所述语音输入模块用于执行以下步骤:

监听用户触发记账的操作,当用户触发记账操作时,获取用户的输入数据;

当用户输入为语音时,将语音转换成文字;

将用户输入的文字或用户输入的语音转换成的文字上传至服务器,并接收服务器反馈的上传状态。

进一步,所述协同记账模块用于执行以下步骤:当用户操作触发协同记账模块时,获取用户输入或选择的邀请帐号,通过服务器向邀请帐号发送邀请信息;当服务器发送来的邀请信息触发协同记账模块时,根据用户操作接受协同记账邀请并对邀请人账户进行编辑,或者拒绝协同记账邀请。

进一步,所述配置参数包括有应用信息、页面入口、图标、启动图片、SDK设置和/或模块权限。

进一步,所述功能模块还包括有用户登录模块、资产模块、流水模块、预算提醒模块和设置模块。

进一步,所述用户登录模块用于执行以下步骤:

获取用户的帐号密码登录数据、手机短信验证码数据或第三方应用的用户数据;

对上述获取的数据进行验证;

若验证成功则允许用户登录,否则提示登录失败信息。

进一步,所述资产模块用于执行以下步骤:

当监听到查询用户账户总体信息的操作指令后,向服务器发出获取用户账户总体信息的数据请求;

若获取用户账户总体信息数据成功,则将用户账户总体信息数据缓存至本地并显示,同时监听用户的操作指令;若获取用户账户总体信息数据失败,则提示错误信息。

进一步,所述流水模块用于执行以下步骤:

当监听到查询流水数据的操作指令后,向服务器发出获取流水数据的请求;若获取流水数据成功,则将流水数据缓存至本地并显示,同时监听用户的操作指令;若获取流水数据失败,则提示错误信息;

当监听到修改流水数据的操作指令后,获取用户的修改操作;将用户修改的流水数据发送至服务器,若发送成功则结束流程,若发送失败,则提示错误信息;所述流水数据包括有金额、分类信息、时间和备注信息。

进一步,所述预算提醒模块用于执行以下步骤:

当监听到查询预算提醒数据的操作指令后,向服务器发出获取预算提醒数据的请求;若获取预算提醒数据成功,则将预算提醒数据缓存至本地并显示,同时监听用户的操作指令;若获取预算提醒数据失败,则提示错误信息;

当监听到设置或修改预算提醒数据的操作指令后,获取用户的设置或修改操作;将用户设置或修改预算提醒数据发送至服务器,若发送成功则结束流程,若发送失败,则提示错误信息。

进一步,所述设置模块用于执行以下步骤:

当监听到查询用户数据或账本数据的操作指令后,向服务器发出获取用户数据或账本数据的请求;若获取用户数据或账本数据成功,则将预算提醒数据缓存至本地并显示,同时监听用户的操作指令;若获取设置用户数据或账本数据失败,则提示错误信息;

当监听到修改用户数据或账本数据的操作指令后,获取用户的修改操作;将用户修改的用户数据或账本数据发送至服务器,若发送成功则结束流程,若发送失败,则提示错误信息。

本发明方法有益效果是:本发明基于HTML5来实现,一套代码可以打包成Android、IOS、Windows Phone等系统,基于HTML5响应式布局,兼容各种Pad,解决跨平台问题,并能及时响应用户反馈,快速的调整产品的方向,避免在无用的功能浪费时间和精力,实现持续交付、快速迭代,重复工作量小,效率高,并能够封装扩展公共的组件、插件,将前端工具封装成开发的JS方法,封装调用原生方法,使用者学习成本低;通过语音记账使记账过程方便快捷,同时采用协同记账实现复杂的多人记账操作,并缓存用户记账相关的数据以减少对服务器的请求次数,减少交互损耗,提升用户体验。

附图说明

图1为本发明方法的步骤流程图。

具体实施方式

下面结合附图对本发明的具体实施方式作进一步说明:

参照图1,一种创建可语音和协同记账的人工智能记账系统的方法,包括有以下步骤:

(1)创建新的工程,引入基于JS开发的前端框架MUI作为开发框架,将前端工具封装成开发的JS方法,封装调用原生方法;例如将语音播报、语音识别、摄像头等让用户可直接通过JS来调用。

(2)设置项目配置文件中的配置参数;

进一步作为优选的实施方式,所述配置参数包括有应用信息、页面入口、图标、启动图片、SDK设置和/或模块权限等。

通过修改项目中的manifest.json文件,来设置上述配置参数,其中应用信息包括应用名称、appid、版本号、应用描述等等。

(3)在开发框架中设置记账系统的功能模块,所述功能模块包括有语音输入模块和协同记账模块;

进一步作为优选的实施方式,所述语音输入模块用于执行以下步骤:

监听用户触发记账的操作,当用户触发记账操作时,获取用户的输入数据;

当用户输入为语音时,将语音转换成文字;

将用户输入的文字或用户输入的语音转换成的文字上传至服务器,并接收服务器反馈的上传状态。

所述语音输入模块执行的步骤具体可参照以下实施例:

监听用户触发记账的操作,当用户触发记账操作时,获取用户的输入数据;例如当用户需要记账时,点击页面上的记一笔账按钮,通过监听事件(element.addEventListener('tap',function(){})))来触发监听该按钮的方法,通过该方法的回调函数调用MUI的打开新的窗体(mui.openWindow({}))方法来打开记一笔账页面,用户可点击金额、类型或备注的输入框,输入方式可采用语音输入或文字输入。

然后将用户输入的文字或用户输入的语音转换成的文字通过MUI封装的异步请求方法(mui.ajax())上传至服务器,并接收服务器反馈的上传状态,判断上传成功或失败,若失败则提示出错误的原因,并结束流程;若成功则通过关闭方法(plus.webview.close())关闭记一笔账页面,并刷新页面,同时通过localStorage缓存相应的信息。

进一步作为优选的实施方式,所述协同记账模块用于执行以下步骤:当用户操作触发协同记账模块时,获取用户输入或选择的邀请帐号,通过服务器向邀请帐号发送邀请信息;当服务器发送来的邀请信息触发协同记账模块时,根据用户操作接受协同记账邀请并对邀请人账户进行编辑,或者拒绝协同记账邀请。

所述协同记账模块执行的步骤具体可参照以下实施例:

当用户想要邀请他人协同记账时,点击下方菜单栏的相应按钮触发协同记账模块,页面加载DOM结构,加载完后通过(document.getElementById(‘’).addEventListener('tap',function(){}))来给各个按钮绑定事件,并点击页面的账本管理。

当用户选择的是帐号邀请时,通过window.location.href跳转到帐号邀请页面,页面加载DOM结构后,执行(document.getElementById(‘’).addEventListener('tap',function(){}))为发送按钮绑定事件,由用户输入被邀请人的帐号。

获取到用户输入或选择的被邀请人帐号,然后通过MUI封装的异步请求方法(mui.ajax()),把帐号发送给服务器,服务端会根据处理结果做相应的操作,如果成功,则向被邀请用户发送邀请通知并返回结果;如果失败,则结束流程并提示错误原因。

当用户选择的是第三方App进行邀请时,例如使用微信或QQ邀请,会调用微信或QQ的接口进入微信或QQ的选择用户或用户组的页面,当用户选择了被邀请人后,会调用微信接口向该用户发送之前制作的邀请页面,该邀请页面有背景图和接受邀请、拒绝邀请按钮等。

进一步作为优选的实施方式,当服务器发送来的邀请信息触发协同记账模块时,根据用户操作接受协同记账邀请并对邀请人账户进行编辑,或者拒绝协同记账邀请;在本发明的一具体实施例中可参照以下子步骤:

当被邀请用户点开了邀请页面,页面会加载DOM结构,然后通过document.getElementById(‘acceptInvitation”).addEventListener('tap',function(){})为按钮绑定相应的事件。

被邀请用户点击了接受邀请按钮后,会触发之前绑定的事件,通过MUI封装的异步请求方法(mui.ajax()),发送给服务端,服务端做出相应处理后,返回数据告之app,app根据返回的结果打开该用户的记账系统,并设置相应用户帐号的默认账户为协同账本,并加载协同账本下的所有数据,并告之邀请用户被邀请人同意邀请的信息。如果被邀请用户点击了拒绝邀请,会触发之前绑定的事件,通过异步请求(ajax)发送给服务端,服务端做出相应处理后,返回信息告诉给邀请用户,被邀请用户拒绝了协同记账的邀请。

进一步作为优选的实施方式,所述功能模块还包括有用户登录模块、资产模块、流水模块、预算提醒模块和设置模块;

所述用户登录模块用于对用户身份进行验证,验证成功后赋予用户操作权限;

所述资产模块用于显示用户的账户总体信息以及提供账本的功能入口;

所述流水模块用于显示和修改用户的账户收支详情;

所述预算提醒模块用于提醒用户其支出是否超预算;

所述设置模块用于设置用户信息和账户信息。

进一步作为优选的实施方式,所述用户登录模块用于执行以下步骤:

获取用户的帐号密码登录数据、手机短信验证码数据或第三方应用的用户数据;

对上述获取的数据进行验证;

若验证成功则允许用户登录,否则提示登录失败信息。

所述用户登录模块执行的步骤具体可参照以下实施例:

若用户为首次登录,则对用户身份进行验证,验证成功后赋予用户操作权限;用户首次登陆的方式包括有帐号密码登录、手机验证码登录和第三方App验证登录。

采用帐号密码登录时,用户输入的帐号、密码通过自封装的login()方法校验登录,判断是否登录成功。

采用手机短信登录时,用户输入手机号后点击获取验证码,通过自封装的getCode()方法发送手机验证码,用户收到并输入验证码后,点击登录,通过调用函数login()方法检验手机号和短信验证码,如果存在该手机号则校验验证码,如果不存在该手机则注册并校验验证码。

经过验证后得到验证结果,若验证成功则通过本地缓存数据库缓存服务器返回的token,若验证失败则给出相应的提示。

进一步作为优选的实施方式,所述资产模块用于执行以下步骤:

当监听到查询用户账户总体信息的操作指令后,向服务器发出获取用户账户总体信息的数据请求;

若获取用户账户总体信息数据成功,则将用户账户总体信息数据缓存至本地并显示,同时监听用户的操作指令;若获取用户账户总体信息数据失败,则提示错误信息。

所述资产模块执行的步骤具体可参照以下实施例:

首先,用户登录后,当用户点击到下方菜单的资产模块后,加载完所有的DOM结构,执行自封装的getAllAsset()方法;

然后,通过getAllAsset()内的异步请求(ajax),发送参数给服务器,服务器根据传来的参数查询数据库,返回相应的数据;

最后,根据服务器返回的数据,若查询失败则结束流程并提示错误信息,如果成功则把返回的数据通过JSON.stringify()转成json字符串并通过localStorage缓存到本地缓存数据库,对页面显示形式构建;通过各元素的ID,给各个元素赋值,然后通过绑定事件(document.getElementById('commentList').addEventListener('tap',function(){}))给各个账本功能按钮绑定相应的触发方法,典型的对账本功能模块的操作例如查看流水、设置预算提醒、修改设置等等。

进一步作为优选的实施方式,所述流水模块用于执行以下步骤:

当监听到查询流水数据的操作指令后,向服务器发出获取流水数据的请求;若获取流水数据成功,则将流水数据缓存至本地并显示,同时监听用户的操作指令;若获取流水数据失败,则提示错误信息;

当监听到修改流水数据的操作指令后,获取用户的修改操作;将用户修改的流水数据发送至服务器,若发送成功则结束流程,若发送失败,则提示错误信息。

所述资产模块执行的步骤具体可参照以下实施例:

当用户点击到下方菜单的流水模块,加载完所有DOM结构后,执行自封装的getAllJournal()方法;

通过getAllJournal()内的异步请求(ajax),发送参数给服务器,服务器根据传来的参数查询数据库,返回相应的数据。进一步作为优选的实施方式,由于涉及服务器分页问题所以第一次加载的时候会给服务器传默认的page/size(当前页码/每页条数)数据。

根据上一步服务器返回的数据,若查询失败则结束流程并提示错误信息,如果成功则把返回的数据通过JSON.Stringify()转成json字符串并通过localStorage缓存到本地缓存数据库,对页面显示形式构建;通过for循环动态拼接成所需要的HTML字符串,然后通过document.getElementById(\"journalContent\").innerHTML追加到相应的区域,通过监听方法($('li a').on('click',function(){})监听用户的点击事件。

所述流水数据包括有金额、分类信息、时间和备注信息等。当用户通过根据服务器返回数据生成的账单流水列表时,通过点击任意一条流水的时候,会触发自封装的goDetails()方法,goDetails()会通过localStorage缓存该条记录的金额、分类、时间、备注等信息,然后通过window.location.href跳转到流水详细页面。

跳转到流水详细页面后,执行自封装的getDetails()方法来获取上一步缓存的信息,通过JSON.parse()把获取到的缓存信息转成json对象,通过各元素的ID,给各个元素赋值,然后通过绑定事件(document.getElementById(‘saveBtn’).addEventListener('tap',function(){}))给保存按钮绑定触发方法。当用户在流水详细页面进行修改后,点击保存时触发刚才绑定的触发方法(saveInfo()),然后通过异步方法(ajax)发送给服务器,服务器处理后,会返回成功或失败的信息,如果成功则流程结束,如果失败,流程结束并提示错误信息。

进一步作为优选的实施方式,所述预算提醒模块用于执行以下步骤:

当监听到查询预算提醒数据的操作指令后,向服务器发出获取预算提醒数据的请求;若获取预算提醒数据成功,则将预算提醒数据缓存至本地并显示,同时监听用户的操作指令;若获取预算提醒数据失败,则提示错误信息;

当监听到设置或修改预算提醒数据的操作指令后,获取用户的设置或修改操作;将用户设置或修改预算提醒数据发送至服务器,若发送成功则结束流程,若发送失败,则提示错误信息。

所述预算提醒模块执行的步骤具体可参照以下实施例:

当用户点击下方菜单栏的预算菜单后触发预算提醒模块,加载所有的DOM结构,执行自封装的getBudgetInfo()方法;然后通过getBudgetInfo()内的异步请求(ajax),发送参数给服务器,服务器根据传来的参数查询数据库,并返回相应的数据。

根据服务器返回的数据,若查询失败则结束流程并提示错误信息,如果成功则判断返回json对象是否为空,若为空则无需给元素赋值,若有值则通过各元素的ID给各元素赋值,然后通过绑定事件(document.getElementById(‘saveBtn’).addEventListener('tap',function(){}))给保存按钮绑定触发方法。

通过上一步展示出了整个页面,用户可以自行选择设置或修改预算总金额和各分项金额等数据。

当用户对设置或修改的信息进行保存时,会触发用户确认mui.confirm('是否开启预警提醒?',function(type){}),当用户点击否时,关闭提示;当用户点击是时,触发异步请求(ajax)告之服务器已开启预算提醒,然后当用户的某个分类的支出或总支出超过分类预算或总预算时,会通过plus.nativeUI.toast(”)给出提示信息。

进一步作为优选的实施方式,所述设置模块用于执行以下步骤:

当监听到查询用户数据或账本数据的操作指令后,向服务器发出获取用户数据或账本数据的请求;若获取用户数据或账本数据成功,则将预算提醒数据缓存至本地并显示,同时监听用户的操作指令;若获取设置用户数据或账本数据失败,则提示错误信息;

当监听到修改用户数据或账本数据的操作指令后,获取用户的修改操作;将用户修改的用户数据或账本数据发送至服务器,若发送成功则结束流程,若发送失败,则提示错误信息。

所述预算提醒模块执行的步骤具体可参照以下实施例:

当用户要设置用户信息或账本信息时,点击下方菜单栏的设置菜单触发账户设置模块,加载所有DOM结构后,执行自封装的getAllSetupInfo()方法,通过getAllSetupInfo()内的异步请求(ajax),发送给服务器,服务器返回相应的数据。

服务器根据传来的参数查询数据库,并返回相应的数据。

根据服务器返回的数据进行判断,如果失败则结束流程并提示错误信息,如果成功,则通过各元素的ID,给各元素赋值,然后通过绑定事件(document.getElementById(‘’).addEventListener('tap',function(){}))给各个按钮绑定相应的事件,按钮对应的处理对象为用户数据或账本数据,其中账本数据包括有账户分类管理信息、账户项目管理信息、账户商家管理信息和账本管理信息等。

根据上一步绑定的按钮事件,监听用户操作并进行相应设置。以账户分类管理信息的设置为例,当用户需要修改或追加分类时,点击设置模块的账户分类管理按钮,点击账户分类管理按钮后,页面通过window.location.href跳转到分类管理页面,然后加载DOM,加载完成后执行自封装的getClassifiedInfo()方法,通过该方法的getClassifiedInfo()的异步请求(ajax),向服务器发送请求,服务器接到请求后,查询数据并返回相应的数据。前端接到服务器返回的Json数据后,通过for循环动态拼接成所需要的HTML字符串,然后通过document.getElementById(\"newsContent\").innerHTML追加到相应的区域,然后通过监听方法($('li a').on('click',function(){})监听用户的点击事件。用户需要修改顶级分类时,点击页面右上角编辑按钮,然后选择要修改的分类,通过window.location.href跳转到修改页面,用户修改后,点击绑定的saveInfo()方法来持久化修改后的数据,并返回刷新分类管理页面。

进一步作为优选的实施方式,上述步骤中在查询用户的账户总体信息、查询用户的账户收支详情、查询用户的预算设置和查询用户的用户信息和账户信息时,先查询本地缓存数据库,若存在则直接获取,若不存在,再向服务器发送数据查询请求,然后将服务器返回的数据缓存至本地缓存数据库中。

进一步作为优选的实施方式,上述所有步骤均采用基于HTML5的MUI作为前端框架实现。

(4)根据开发框架中记账系统的功能模块构建出的HTML5页面,打包生成记账系统的APP。

以Android系统的打包为例进行具体说明,进一步作为优选的实施方式,打包生成记账系统的APP的步骤具体为:

启动带ADT的eclipse程序,并导入该工程编译运行;

从SDK目录中拷贝要使用的feature库到工程libs目录,拷贝完成后在工程的libs目录下显示;

配置应用的权限、其它第三方库的数据、应用的包名及版本号、应用名称、应用图标和启动界面、更新应用资源,配置完毕后选择“Android Application”启动应用,编译运行后在bin目录下会生成apk。

以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可以作出种种的等同变换或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1