刘华山,李永量
(1.四川大学计算机学院,成都 610065;2.四川精工伟达智能技术股份有限公司,成都 610041)
“享智游”:基于微信平台的智慧旅游助手
刘华山1,李永量2
(1.四川大学计算机学院,成都610065;2.四川精工伟达智能技术股份有限公司,成都610041)
四川省科技厅科技支撑计划项目(No.2014SZ0147)
当前去哪儿、艺龙、携程等旅游电商都已开通了线上跟团,票务预订等功能,并提供了手机App[1]。通过这些APP、游客可以足不出户就能实时获取旅游信息。但这些传统的在线旅游平台仅做到了将旅游信息的共享,并未将景点各种角色统一管理起来,也缺乏对游客旅游途中提供实时的智能化服务。在本文中,“享智游”平台致力于以某个景区为核心,通过统一的电商平台,借助景区一卡通的普及,以及智能手机的微信平台为核心,力图打造一个全方位的智慧旅游平台,为景区的各种角色提供实时的智慧化旅游服务。
该平台由“享智游”微信公众号、“享智游”电商网站、“享智游”管理后台,以及分布在各商铺的一卡通终端四部分组成。旅游出行前,游客可以在门户网站预订门票,酒店。进入景区后,可通过购买的一卡通,游客可便捷地在任何商铺消费,保证商品价格透明化。游客也可以打开微信公众号,绑定自己一卡通,实时查询消费记录。此外,后台会根据当前一卡通消费位置,准确推荐当前景点导游信息。商户可以通过微信实时查看营业额与报表分析;景区管理者则可以通过微信查看景区门票销售情况,景区游客实时流量以及及时发布通知公告。图1给出了一个典型的旅游案例。
该平台主要由“享智游”公众号、ESHOP电商、一卡通终端,及管理后台等四部分构成。通过ESHOP电商平台,商户可以发布自己的酒店房间,景区商品,出租汽车以及旅游跟团等信息,游客可以在线预订。通过在景区各商铺部署一卡通RFID终端,实现游客的无现金交易,并记录下商品id与交易额实时同步消费记录到后台服务器。由于每台一卡通终端都有自己唯一id,当消费记录上传到后台服务器时,服务器可识别一卡通持有者当前所在位置,并向该游客推送最近景点的导游信息。“享智游”微信公众号则为游客,商户,管理者提供了一个统一的移动访问入口,保证用户实时感知景区最新信息。系统的网络拓扑如图2所示。
电商门户网站采用了开源的ESHOP独立网店系统,该系统适合企业及个人快速构建个性化网上商店。后台服务器采用了Hibernate+Spring框架,并参考了Restful风格Jersey实现了Web Service。为微信用户处理请求。电商交易数据库采用MySQL 5,而游客一卡通记录与轨迹记录由于数据量太庞大,采用针对大数据处理的HBase。出于安全考虑,电商数据库与一卡通消费记录、系统后台数据库独立;当在分析游客行为时,又需要两个数据库同步,所以平台单独设计了一个数据交换层,用于数据分析。
图1 游客使用“享智游“案例
图2 系统网络拓扑
“享智游”智慧旅游平台从功能实现上可分为四个层次:(1)前台应用层主要有微信客户端、ESHOP电商网站、景区管理后台、一卡通刷卡终端四个应用。微信客户端作为统一访问入口,为每种角色都提供了实时感知景区相关信息的接口。电商网站和刷卡终端由游客与商户分工使用,管理后台则由景区管理者使用;(2)系统接口层则是系统管理的每个功能的具体实现,与后台系统发布的Web Service一一对应;(3)管理服务层则是将打造一个智慧旅游平台拆分为五个具体管理任务,主要划分为:游客管理,一卡通管理,景区商户管理、电商站点管理、景区管理:(4)数据交换层实现了对多个不同数据库的统一访问接口与智能分析接口。系统结构图如图3所示。本文接下来将分别讲解每层关键技术的实现原理。
2.1功能设计
微信是当前使用用户最多的手机即时通信App(支持Android,iOS),微信公众号则是腾讯公司提供给第三方的开发者接口,能实现文字、图片和语音等多媒体信息的交互,并可自定义功能按钮以及网页跳转。基于微信的应用既省去了用户安装App的麻烦,又节约了企业开发成本。用户通过微信关注公众号,即可轻松获取感兴趣的信息[2]。微信公众号针对景区不同角色,提供了不同的服务功能。普通游客在购买一卡通时,关注微信公众号,通过菜单栏配置,自助绑定一卡通。商户与景区管理员可通过后台注册的形式,绑定微信id。后台服务器根据微信id能准确判断用户角色类型。
图3 系统层次结构
通过该公众号,用户可以获得以下三方面的功能:
(1)游客功能
具体又包含:①门票,酒店预定,用户可跳转到ESHOP门户在线预定;②景区导航,微信地图导览;③评论景点,游客对附近景点发表评论;④“摇一摇”查看附近评论;⑤一卡通消费查询,游客查询自己的一卡通消费记录,未绑定将提示游客绑定;⑥导游信息智能推荐,根据游客当前定位或者一卡通刷卡地点,准确推荐当前景点导游信息;⑦景区人流量查询,查询当前景区各景点游客实时密度,避开过度拥挤景点。
(2)商家功能
具体又包含:①酒店、商品、租车订单,旅行社组团订单,农家乐预定通知,通知商户有实时下单,请及时处理;②一卡通结算查询,查询每日交易结算是否完成;③交易额查询与报表分析,选择查询某个时间段交易总额,智能分析并实现交易预测。
(3)景区管理者
具体又包含:①通知发布,实时发布紧急通知;②门票销售查询,查看每日门票销售情况;③游客流量分析与查询;④商户管理跳转,管理景区商户;⑤评论管理跳转,管理游客对景区,商户的评论;⑥一卡通消费报表分析与查询,查询景区所有有卡的一卡通消费额与报表分析;⑦智能管理与决策建议,例如游客流量预警。
2.2公众号接入流程
(1)微信公众号服务原理
开发者搭建自己的Web回调服务器,当微信用户向公众号发送消息时,消息先送抵微信服务器[3]。微信服务器再将消息封装成XML或者JSON格式转发给开发者提供的URL,并将服务器回复的结果回传给微信用户。微信公众号数据通信流程如图4所示。
(2)微信URL验证
开发者申请公众号以后,填写回调服务器URL,服务器需按照微信接口要求实现GET请求的回调认证。请求认证包含四个参数:微信加密签名msg_signature,时间戳timestamp,随机数nonce,随机字符串echostr。回调服务器按照微信提供的接口处理字符串,并将结果回复给微信服务器,完成URL验证。
图4 微信公众号通信流程图
本平台需要通过微信用户ID区分用户角色类型,微信默认提供了OpenID作为用户唯一标识。OpenID是微信对关注一个微信公众号的每个微信用户临时生成的一个标识,只能用来区分当前公众号的关注者。服务器也可通过OpenID获取微信用户基本信息 (昵称,性别,所在地区),用于智能分析游客行为。获取信息URL如下,请求需传递接口凭证和OpenID:
https://api.weixin.qq.com/cgibin/user/info?access_token= ACCESS_TOKEN&openid=OPENID&lang=zh_CN
(3)消息传输
①接收消息:当用户向公众号发送消息时,微信服务器将消息打包成XML格式,转发给注册的回调服务器。
②被动回复:服务器收到消息后,将生成的回复结果同样打包成XML格式回复给用户。接收到的消息格式如下:
〈xml〉
〈ToUserName〉〈开发者微信号〉〈/ToUserName〉
〈FromUserName〉〈发送方OpenID〉〈/FromUserName〉
〈CreateTime〉消息发送时间〈/CreateTime〉
〈MsgType〉〈消息类型〉〈/MsgType〉
〈Content〉〈消息内容〉〈/Content〉
〈MsgId〉消息ID〈/MsgId〉
〈/xml〉
“享智游”电商门户网站采用ESHOP搭建,该网店软件基于Java技术体系研发,实现了功能插件化,满足了企业定制化需求。ESHOP还提供了人性化的后台管理界面,标准的网上商店管理模式和强大的网店软件后台管理功能。网店风格模板自由切换、自定义商城系统广告位、集成众多网银在线支付接口。系统默认采用MySQL数据库,并已设计好数据库表与字段,用户通过简单配置与部属,即可部署上线应用。“享智游”电商网站主要提供在线酒店预定、餐饮团购,以及自助租车服务。
3.1后台服务设计与实现
“享智游”后台服务器部署在Glassfish上,Java语言开发,采用了HBase和MySQL数据库。后台服务器除了响应微信公众号的请求的Web Service,还实现了基本的管理后台。Web Service主要响应游客,商户的实时查询请求,管理后台主要为景区管理员提供系统管理平台。
3.2服务器架构
后台服务器用Spring、Hibernate架构[3],WebService 以Restful风格的Jersey发布。
Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,用MVC思想,将Web层进行职责解耦,实现请求-响应模式。
Hibernate是一个开放源代码的对象关系映射框架,在JDBC基础上实现了对象的轻量级封装,让程序员可以以面向对象的思维操作数据库。
Jersey是JAX-RS开源参考实现用于构建Restful Web Service。在REST中的一切都被认为是一种资源。每个资源由URI标识。使用统一的接口。处理资源使用POST,GET,PUT,DELETE操作类似创建、读取、更新和删除(CRUD)操作。Restful Web服务由于其简单替代了基于SOAP的Web服务,已被大型服务提供商所接受。“享智游”后台部署配置Jersey Servlet调度示例代码:
〈servlet〉
〈servlet-name〉Jersey REST Service〈/servlet-name〉
〈servlet-class〉
com.sun.jersey.spi.container.servlet.ServletContainer
〈/servlet-class〉
〈init-param〉
〈param-name〉com.sun.jersey.config.property.packages〈/ param-name〉〈param-value〉com.jiuzhai.xiangzhiyou〈/ param-value〉
〈/init-param〉
〈load-on-startup〉1〈/load-on-startup〉〈/servlet〉
〈servlet-mapping〉
〈servlet-name〉Jersey REST Service〈/servlet-name〉
〈url-pattern〉/rest/*〈/url-pattern〉〈!—请求 url--〉〈/ servlet-mapping〉
HBase-Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。由于游客消费记录与轨迹数据数据量庞大,但关联性弱,所以采用了面向列的HBase存储。
3.3Web Sercice实现
“享智游”后台服务器主要由以下模块构成:游客Service,一卡通Service,商户Service,管理者Service,智能分析Service。当后台收到由微信服务器转发的微信请求时,先根据用户OpenID进行身份判断,然后识别请求命令,分别交由相应的Service处理。并将生成的结果或者跳转URL返回给微信用户。服务器的请求与响应流程如图5所示。
微信消息经微信服务器转发到公众号绑定URL指向的Servlet统一处理,该Servlet再根据用户身份,消息类型分发调用相应的Service模块,完成消息响应。
3.4数据交换层与智能分析
由于“享智游”后台系统涉及到多个数据库之间联合查询,因此在Hibernate基础上实现了一个数据交换层。该层主要负责与游客数据库、一卡通数据库,ESHOP数据库统一读写。一个应用场景示例:当游客在某个景点一卡通消费时,系统将向一卡通消费数据库更新消费记录与余额;同时获取当前消费点地理位置,经智能分析Service查询游客数据库获取该卡绑定的游客微信,向该微信账号准确推荐当前最近景点的导游信息。
图6 “享智游”运行效果
图5 后台服务器请求响应示意图
智能分析模块主要实现了三个功能:①基于协同过滤原则[4],根据游客观光景点与消费记录对该游客进行商品与服务的个性化推荐。②根据到访游客的历史记录,实现未来的旅游流量预测,供管理者决策参考。③结合景区商户的历史交易记录,预测未来的游客消费热点,实现智慧化商户管理。
“享智游”智慧旅游平台在四川省科技厅的全力指导下,已在九寨沟景区部署试运营。平台整合了在线旅游电商网站、景区一卡通、微信公众号,让游客,景区商户,管理员都可以通过手机微信轻松获取与自己相关的景区业务数据,做到了旅游的实时智慧感知。ESHOP电商网站与“享智游”微信运行效果图如6所示。
本文通过将景区一卡通消费与微信平台结合,将传统的在线旅游实现了移动互联。打造了一个实时信息感知的智慧旅游平台。该平台通过在线预定方便了游客出行,智能实时推荐提升了游客观光体验;还促进了景区酒店、租车商、农家乐、旅行社等商户的交易活动;大量的游客消费记录与观光轨迹更能为管理者提供智能的决策参考。该平台深度聚合了旅游业多方位资源,实现了旅游系统信息化,保证了旅游业可持续发展[5]。不足的是,微信公众号菜单层级太深,无论是自定义菜单还是网页跳转,都需要用户数次点击,才能获取想要的信息。
[1]刘士润,崔忠伟,韦萍萍,等.基于Android的“智慧旅游”手机App开发[J].电子技术与软件工程,2015(8):85-86.
[2]王明亮,闵新力,姬江涛,等.基于微信的移动外勤管理系统设计与实现[J].计算机应用与软件,2015,32(7):82-85.
[3]朱亚兴,张延政.基于SSH架构的移动医疗应用服务模型及实现[J].计算机应用与软件,2012,29(6):172-175.
[4]史一帆,文益民,蔡国永 缪裕青.基于景点标签的协同过滤推荐[J].计算机应用,2014,34(10):2854-2858.
[5]刘建光.基于手机App的智慧旅游建设和实现[J].通讯世界,2015(7):94-95.
Smart Travel;WeChat;Travel Assistant;Mobile Internet
"Enjoy Your Smart Travel":a Smart Travel Assistant Based on WeChat
LIU Hua-shan1,LI Yong-liang2
(1.College of Computer Science,Sichuan University,Chengdu 610065;2.Sichuan JingKing Smart Limited by Share Ltd.,,Chengdu610041)
刘华山(1991-),男,四川巴中人,在读硕士,研究方向为数据挖掘
2015-12-10
2015-12-30
随着云计算和物联网技术的发展,以及移动互联网的普及,能否让游客通过各种智能终端设备感知并获取旅游信息进而提升旅游体验的迫切需求已成为当前旅游业发展亟需解决的问题。设计并实现一款基于微信平台的智慧旅游应用“享智游”。目前,该平台已在九寨沟景区部署运营,可为九寨沟景区的游客、商户、管理者提供全方位的智能化服务,对于改善九寨沟景区的智能化管理提供有力的支持和保障。
智慧旅游;微信平台;旅游助手;移动互联
李永量(1974-),男,四川西充人,硕士研究生,高级工程师,研究方向为软件工程、从事领域为企业技术研发管理
With the development of cloud computing and Internet of things technology,as well as the popularity of the mobile Internet,it has become a urgent problem that how to enhance the tourism experience through a variety of intelligent terminal equipment accessing to travel information in the current tourism development.In this paper,designs and realizes a WeChat platform"Enjoy Your Smart Travel"for smart travle.At present,the platform has been deployed in the Jiuzhaigou scenic area,provides a full range of intelligent services for tourists,business operators and managers in Jiuzhaigou scenic area,and a powerful support and guarantee for improving the intelligent management of Jiuzhaigou scenic area.