博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于邮件和百度云存储的android用户反馈系统设计
阅读量:6869 次
发布时间:2019-06-26

本文共 2975 字,大约阅读时间需要 9 分钟。

  hot3.png

1.整体设计

    android应用程序通过专门的“用户反馈”页面获取用户反馈,将用户反馈内容打包成文件上传至百度云存储,上传完毕后通知服务端。服务端收到通知后下载对应文件,并通过邮件发送给指定邮箱。

    本文采用的服务器是CentOS release 5.8 (Final)。

    本文中用到的工具或服务有:、+(邮件服务)、(TCP多线程服务)、bash脚本。

2.客户端

2.1 反馈内容上传至云存储

    可以下载到android使用的SDK,同样可以下到php和python的SDK,因此本文中所提到的方法同样适用于使用php或python开发的客户端。

    上传的具体方法在写的比较清楚,这里只是简单介绍一下过程。

  • 注册百度账号,并成为百度开发者。

  • 创建应用并获取密钥对(ak&sk)

  • 创建bucket,即存放文件的‘仓库’

  • 上传文件至‘仓库’

    现在我们假设已经可以将文件通过代码的方式上传至百度云存储。

    官方提供了web页面管理,我们手动上传一个图片文件作为用户反馈内容。

144946_AjLa_616273.png

2.2 通知服务端有反馈内容

    客户端以TCP的方式通知服务端有反馈内容,通知的格式为 userid:filename,当然这里可以自定义。服务端在收到通知后结束TCP连接。

3. 服务端

3.1 mail环境

    在ubuntu中可以很方便的利用mutt和msmtp配置好mail环境,具体可参考。

    而在我用的centos的yum源里没有msmtp的包,着实费了点力气。具体可以参考。

    在我的服务器上出现了 centos msmtp error: pkg-config not found 的错误,也就是说pkgconfig没有安装,可以一次性把所有东西都装了。

yum -y install automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfig

    配置完毕后,可以通过如下命令验证是否成功:

echo "this is a test attachment." >>attachment.logecho "mail content"|mutt -s "hello from centos" 目标邮箱 -a `pwd`/attachment.log

    检查你的邮箱是否收到该邮件。

3.2 云存储下载工具

    提供了shell下载工具shell-tool,下载后解压,解压后的文件夹是Baidu_BCS_Shell-Tool_V1.2,在该目录下的bsconf文件中配置刚刚申请的百度云存储的ak和sk,也即百度云存储的用户名和密码。

    配置完成后测试刚刚我们存放在云上的文件:

151603_dbLh_616273.png

3.3 TCP多线程服务

    由于服务程序需要支持多个客户端,因此nc这个万能军刀暂时只能搁置一边了。我们用ucspi-tcp的tcpserver服务来完成TCP的多客户端支持。

    我们首先按照的介绍来安装,下载→解压→configure+make+make install,一路过去。

    期间我的服务器出现报错:/lib64/libc.so.6: could not read symbols: Bad value,解决方法是:

    编辑 ./ucspi-tcp-0.88./conf-cc,将原来的 gcc -O2 改为

gcc -O2 -include /usr/include/errno.h

    请留意,这里是errno而非error。

    安装完毕后,我们来测试一下。在服务器端输入tcpserver 0.0.0.0 8888 pwd,意思是开启一个8888的对外端口,有客户端连接到该端口后,将执行‘pwd’这个程序。我们用nc命令模拟一个客户端,

nc your_server_ip 8888

客户端将出现执行服务器的当前目录:

152738_kha2_616273.png

3.4 服务脚本

    好了,现在我们只剩下最后一步了,就是写服务脚本。有两个脚本需要写:

文件1:proc_feedback.sh

#!/bin/shfile_log=`pwd`log.txtdir_feedback=`pwd`/feedbackdir_baidu_utils="/root/tools/Baidu_BCS_Shell-Tool_V1.2"#wait for client sending something.read recv#inform client for recvedecho "recved: ${recv}" >>/dev/null#download feedback content#assume content recved like "userid:feedback_content_file_store_in_baidu_cloud"userid=`echo $recv | cut -d ":" -f1`len_userid=`expr ${#userid} + 2`filename=`expr substr $recv $len_userid ${#recv}`cur_time=`date '+20%y-%m-%d %H:%M:%S'`if [ -z "$userid" -o -z "$filename" ]then   echo "[$cur_time]  feedback invalid, userid=$userid, filename=$filename"   exitfi#logecho "[$cur_time]  $recv" >>$file_log#download feedback fileif [ ! -d $dir_feedback ]then mkdir $dir_feedbackficd $dir_baidu_utils./bsutil.sh cp bs://file-trans/${filename} ${dir_feedback}/${filename} >>/dev/nullcd - >>/dev/null#mail to feedback service emailmail_title="feedback from $userid"mail_content="time:$cur_time\nfrom:$userid"mail_attachment="${dir_feedback}/${filename}"echo -e "$mail_content" | mutt -s "$mail_title" your_email@qq.com -a "${mail_attachment}"

文件2:service_feedback.sh

#!/bin/shtcpserver 0.0.0.0 8888 /root/src/feedback/proc_feedback.sh

4. 测试

4.1 启动服务

./service_feedback.sh &

4.1 用户准备反馈内容

    前面我们已经上传了一个feedback_test.gif的文件到云端。

4.2 用户发送反馈内容

154432_1klr_616273.png

4.3 客服人员在指定邮箱内查看用户反馈内容

154448_thov_616273.png

154547_ztEC_616273.png

转载于:https://my.oschina.net/bbdlg/blog/207561

你可能感兴趣的文章
LeetCode:Fizz Buzz - Fizz Buzz 游戏
查看>>
如何在Shell中判断一个变量是否为整数
查看>>
juqery验证中文
查看>>
Linux OS Service 'ntpd' (文档 ID 551704.1)
查看>>
Jquery Validate 使用手册
查看>>
课堂录制的FTP配置
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
常见算法的记录
查看>>
ssh 问题
查看>>
Android源代码下载编译
查看>>
nhmicro添加信审功能
查看>>
eclipse安装maven插件-解决requires ‘bundle org.slf4j.api
查看>>
在Centos 5.x或6.x上安装RHEL EPEL Repo
查看>>
TextField 使用与方法总结
查看>>
湿润的武汉,湿润的心;干燥的北京,干涸的心。
查看>>
Help Desk Meet Power Shell
查看>>
win8或win10安装软件出现2502或者2503的错误
查看>>
我的友情链接
查看>>
Greenplum集群状态检查及失败segment修复(上)
查看>>