资源描述
XX市XXXXXXXX
智能XX管理系统微信通采购项目
竣
工
资
料
XXXX科技有限公司
2014-04
开工申请
工程名称:
XX市XXXX智能XX管理系统微信通采购项目
文档编号:
致:XXXX信息技术有限公司 (监理单位)
根据合同的有关规定,我方认为工程具备了开工条件。经我单位上级负责人审查批准,特此申请XX市XXXX智能XX管理系统微信通采购项目开工,请予以审核批准。
附:1. 工程实施方案
2. 工程质量管理计划
承建单位(章)
项 目 经 理
日 期 2014年3月21日
监理单位审核意见:
总/专监理工程师
日 期
开工报告
致:XXXX信息技术有限公司
我方承担的XX市XXXX智能XX管理系统微信通采购项目工程,已完成了以下各项工作,具备开工条件,特此申请该工程开工,请核查并签发开工令。
我方已完成如下工作:
1.工程合同的签订
2.工程实施方案
3.工程质量管理计划
承建单位(章):
项目负责人:
日 期: 2014年3月26日
第1章 整体技术方案
1.1 系统概述
微信是与QQ号捆绑的一个手机端的即时聊天软件,通过网络快速发送语音短信、视频、图片和文字,支持多人群聊的软件。
作为目前流行的即时通信工具, 具备强大的互动能力。XX市智能XX管理系统决定引入该业务,打造基于微信公共服务平台的互动交流平台,推出XX智能XX微信服务,为市民提供违章查询、XX查询、自助XX、XX自助处理、拥堵上报、设施故障上报、道路XX法规发布等服务。
1.2 标准及原则
本系统实施应当遵循国家法律法规、技术标准,符合XX现有智能XX建设方案技术要求,以及XX市智能XX管理系统指挥调度平台技术要求规范,适用规范及标准包括但不限于:
Ø 《中华人民共和国道路XXXXX》及实施条例
Ø 计算机软件开发规范《GB/T8566-2007》
Ø 《电器装置安置工程规范GBJ232》
Ø 国家技术监督局《测量、控制和实验室用电气设备的安全要求》
Ø 《微信公共平台开发者文档》
Ø 《协同通信开发平台开发文档》
1.3 系统功能
3.1查询功能
(1)XXX违法查询功能;
(2)XX记分查询功能;
(3)实时XX查询功能。
3.2服务功能
(1)XX自助处理功能;
(2)自助XX功能;
(3)XX上报功能;
(4)设施故障上报功能;
3.3其他功能
(1)手机号码绑定、短信验证功能。
(2)帮助反馈功能。
3.4指挥调度平台端集成功能
(1)微信信息审核功能;
(2)微信信息XX生成功能;
(3)数据库集成;
1.4微信通公众平台开发
1.4.1消息接口
申请微信公众帐号后,填写网址url和token,其中token可以任意填写,用作生成签名。
1.4.2网址接入
公众平台用户提交信息后,微信服务器将发送GET请求到填写的URL上,并且带上四个参数:
参数
描述
signature
微信加密签名
timestamp
时间戳
nonce
随机数
echostr
随机字符串
通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,否则接入失败。
signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
加密/校验流程:
1. 将token、timestamp、nonce三个参数进行字典序排序
2. 将三个参数字符串拼接成一个字符串进行sha1加密
3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
1.4.3消息推送
当普通微信用户向公众账号发消息时,微信服务器将POST该消息到填写的URL上。结构如下:
l 文本消息
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[this is a test]]></Content>
<MsgId>1234567890123456</MsgId>
</xml>
参数
描述
ToUserName
开发者微信号
FromUserName
发送方帐号(一个OpenID)
CreateTime
消息创建时间 (整型)
MsgType
text
Content
文本消息内容
MsgId
消息id,64位整型
l 图片消息
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[image]]></MsgType>
<PicUrl><![CDATA[this is a url]></PicUrl>
<MsgId>1234567890123456</MsgId>
</xml>
参数
描述
ToUserName
开发者微信号
FromUserName
发送方帐号(一个OpenID)
CreateTime
消息创建时间 (整型)
MsgType
image
PicUrl
图片链接
MsgId
消息id,64位整型
l 地理位置消息
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1351776360</CreateTime>
<MsgType><![CDATA[location]]></MsgType>
<Location_X>23.134521</Location_X>
<Location_Y>113.358803</Location_Y>
<Scale>20</Scale>
<Label><![CDATA[位置信息]]></Label>
<MsgId>1234567890123456</MsgId>
</xml>
参数
描述
ToUserName
开发者微信号
FromUserName
发送方帐号(一个OpenID)
CreateTime
消息创建时间 (整型)
MsgType
location
Location_X
地理位置维度
Location_Y
地理位置精度
Scale
地图缩放大小
Label
地理位置信息
MsgId
消息id,64位整型
l 链接消息
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1351776360</CreateTime>
<MsgType><![CDATA[link]]></MsgType>
<Title><![CDATA[公众平台官网链接]]></Title>
<Description><![CDATA[公众平台官网链接]]></Description>
<Url><![CDATA[url]]></Url>
<MsgId>1234567890123456</MsgId>
</xml>
参数
描述
ToUserName
接收方微信号
FromUserName
发送方微信号,若为普通用户,则是一个OpenID
CreateTime
消息创建时间
MsgType
消息类型,link
Title
消息标题
Description
消息描述
Url
消息链接
MsgId
消息id,64位整型
l 事件推送
事件推送只支持微信4.5版本,即将开放,敬请期待。
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>123456789</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[LOCATION]]></Event>
<Latitude>23.137466</Latitude>
<Longitude>113.352425</Longitude>
<Precision>119.385040</Precision>
</xml>
参数
描述
ToUserName
接收方微信号
FromUserName
发送方微信号,若为普通用户,则是一个OpenID
CreateTime
消息创建时间
MsgType
消息类型,event
Event
事件类型,有ENTER(进入会话)和LOCATION(地理位置)
Latitude
地理位置维度,事件类型为LOCATION的时存在
Longitude
地理位置经度,事件类型为LOCATION的时存在
Precision
地理位置精度,事件类型为LOCATION的时存在
l 消息回复
对于每一个POST请求,开发者在响应包中返回特定xml结构,对该消息进行响应(现支持回复文本、图文、语音、视频、音乐和对收到的消息进行星标操作)。
微信服务器在五秒内收不到响应会断掉连接。
回复xml结构如下:
回复文本消息
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[content]]></Content>
<FuncFlag>0</FuncFlag>
</xml>
参数
描述
ToUserName
接收方帐号(收到的OpenID)
FromUserName
开发者微信号
CreateTime
消息创建时间
MsgType
text
Content
回复的消息内容
FuncFlag
位0x0001被标志时,星标刚收到的消息。
回复音乐消息
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[music]]></MsgType>
<Music>
<Title><![CDATA[TITLE]]></Title>
<Description><![CDATA[DESCRIPTION]]></Description>
<MusicUrl><![CDATA[MUSIC_Url]]></MusicUrl>
<HQMusicUrl><![CDATA[HQ_MUSIC_Url]]></HQMusicUrl>
</Music>
<FuncFlag>0</FuncFlag>
</xml>
参数
描述
ToUserName
接收方帐号(收到的OpenID)
FromUserName
开发者微信号
CreateTime
消息创建时间
MsgType
music
MusicUrl
音乐链接
HQMusicUrl
高质量音乐链接,WIFI环境优先使用该链接播放音乐
FuncFlag
位0x0001被标志时,星标刚收到的消息。
回复图文消息
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<ArticleCount>2</ArticleCount>
<Articles>
<item>
<Title><![CDATA[title1]]></Title>
<Description><![CDATA[description1]]></Description>
<PicUrl><![CDATA[picurl]]></PicUrl>
<Url><![CDATA[url]]></Url>
</item>
<item>
<Title><![CDATA[title]]></Title>
<Description><![CDATA[description]]></Description>
<PicUrl><![CDATA[picurl]]></PicUrl>
<Url><![CDATA[url]]></Url>
</item>
</Articles>
<FuncFlag>1</FuncFlag>
</xml>
参数
描述
ToUserName
接收方帐号(收到的OpenID)
FromUserName
开发者微信号
CreateTime
消息创建时间
MsgType
news
ArticleCount
图文消息个数,限制为10条以内
Articles
多条图文消息信息,默认第一个item为大图
Title
图文消息标题
Description
图文消息描述
PicUrl
图片链接,支持JPG、PNG格式,较好的效果为大图640*320,小图80*80,限制图片链接的域名需要与开发者填写的基本资料中的Url一致
Url
点击图文消息跳转链接
1.4.4微信通平台开发代码
<?php
/**
* wechat php test
*/
//define your token
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();
class wechatCallbackapiTest
{
public function valid()
{
$echoStr = $_GET["echostr"];
//valid signature , option
if($this->checkSignature()){
echo $echoStr;
exit;
}
}
public function responseMsg()
{
//get post data, May be due to the different environments
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
//extract post data
if (!empty($postStr)){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>0</FuncFlag>
</xml>";
if(!empty( $keyword ))
{
$msgType = "text";
$contentStr = "Welcome to wechat world!";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}else{
echo "Input something...";
}
}else {
echo "";
exit;
}
}
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
}
?>
1.5微信通平台短信接口开发
1.5.1短信发送接口调用
WebService数据格式
<?xml version="1.0" encoding="utf-8"?>
<xml>
<!-- 此处为公共参数部分-->
<!-- 以下是本接口应用参数,具体参数含义请参考本页的请求参数-->
<function>sendSms</function>
<RequestData>
<Account>057188888888</Account>
<DestinationAddresses>15999999999</DestinationAddresses>
<Message>test123</Message>
<ReceiptRequest>
<Endpoint></Endpoint>
<InterfaceName>notifySmsDeliveryStatus</InterfaceName>
</ReceiptRequest>
</RequestData>
</xml>
请求参数说明
Account:必填,Ecp号码,需要开通Ecp业务。带区号的电话号码格式,如01058552100。
DestinationAddresses:必填,短信接收方号码。
Message:必填,短信内容。
ReceiptRequest:短信发送状态报告返回地址,若填写此参数,则以下参数必填。
ReceiptRequest是SimpleReference的一个对象,它的结构如下:
Endpoint:接收短信状态返回报告的地址,此地址必须支持http的post请求才能接收到短信状态返回报告。格式如(不能使用域名)。sms是处理接收短信状态返回的Web工程,recv是处理接收短信状态返回的Servlet。此ip是该工程部署的公网ip,端口是该工程部署的服务器开放的端口。
InterfaceName:接口名称,此处必须为notifySmsDeliveryStatus
返回数据
返回xml格式数据
<?xml version="1.0" encoding="UTF-8"?>
<xml>
<result>1100</result>
<RequestIdentifiers>13412062712551517160</RequestIdentifiers>
<Sum>1</Sum>
<SendResult>1</SendResult>
<SessionToken>88dcd6f3-f5a9-4048-96d3-799e6a765340</SessionToken>
</xml>
返回json格式数据
{"result":"1100","RequestIdentifiers":"13412062712551517160","Sum":"1","SendResult":"1","SessionToken":"88dcd6f3-f5a9-4048-96d3-799e6a765340"}
返回数据说明
result:返回结果,1100表示调用成功。
RequestIdentifiers:标识一个特定的短消息发送请求。
Sum:长短信拆分后的条数
SendResult:短信发送结果,1表示成功。
SessionToken:返回的SessionToken值。
Java SDK
Class
EcpOpen.http.Extend.VCSM.sendSms
Method
public void setAccount(String account)
public void setDestinationAddresses(String destinationAddresses)
public void setMessage(String message)
public void setReceiptRequest(SimpleReference simpleRef)
调用示例
package EcpOpen.example.extend.MCSM;
import java.util.Date;
import EcpOpen.Model.SimpleReference;
import EcpOpen.Model.Timer;
import EcpOpen.constant.Constants;
import EcpOpen.http.Extend.MCSM.sendSms;
public class sendSmsExample {
public static void main(String[] args)
{
//设置Constants中的常量值,web工程中应保证这些值能持久化
Constants.extendUrl = ""+
"/EcpOpen/services/ExtendService/extendService";
Constants.spid = "测试";
Constants.serviceKey = "ce1e19b5fc4b4a5a9459209e76500000";
Constants.appid = "00000000";
Constants.appkey = "61d15d5e603747198060f2a559a477d8";
Constants.type = "0";
SimpleReference simpleRef = new SimpleReference();
simpleRef.setEndpoint("");
simpleRef.setInterfaceName("notifySmsDeliveryStatus");
//实例化sendSms接口类
sendSms sendSmsExam = new sendSms();
try {
sendSmsExam.init();
//添加必要参数,详见各接口API文档
sendSmsExam.setAccount("057188888888");//057233333333
sendSmsExam.setDestinationAddresses("15999999999");
sendSmsExam.setMessage("test123");
sendSmsExam.setReceiptRequest(simpleRef);
//调用invokeClient方法发起调用请求
String response = sendSmsExam.invokeClient(true);
System.out.println(response);
} catch (Exception e) {
e.printStackTrace();
}
}
}
1.5.2短信接收接口调用
前置条件
1. 企业接入点设置正确。
2. 正确设置短信路由:调用短信路由设置接口时,需设置短信的接收端为接口机,即设置Entity为1.
3. 启动短信通知:调用启动短信通知(startSmsNotification)接口,设置相应的接口机地址。
接口调用
WebService数据格式
返回数据
xml格式数据
<SOAP-ENV:Envelope xmlns:SOAP-ENV=""
xmlns:SOAP-ENC=""
xmlns:xsi=""
xmlns:xsd=""
xmlns:MULTITALK=""
xmlns:SMS=""
xmlns:THIRDPARTYCALL=""
xmlns:VFAX="">
<SOAP-ENV:Header>
<SMS:HashCode>36ce1e68421946f8412b787c3a4d229d</SMS:HashCode>
<SMS:RequestID>1118451009</SMS:RequestID>
<SMS:SERVICEID></SMS:SERVICEID>
<SMS:SPID>2</SMS:SPID>
<SMS:ServiceKey>SMS.notifySmsReceptionRequest</SMS:ServiceKey>
<SMS:TimeStamp>20110627111845</SMS:TimeStamp>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<SMS:notifySmsReception>
<Message>
<Message>111111111111</Message>
<SenderAdderss>13616666666</SenderAdderss>
<SmsServiceActivationNumber>057187777777</SmsServiceActivationNumber>
<Datetime>20110627 03:18:45</Datetime>
</Message>
</SMS:notifySmsReception>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
1.5.3短信接口调用成功证明
系统截图。。
1.6微信通服务器
IBM System x3650 M4(7915R51)
基本参数
产品类别
机架式
产品结构
2U
处理器
CPU类型
Intel 至强E5-2600 v2
CPU型号
Xeon E5-2650 v2
CPU频率
2.6GHz
智能加速主频
3.4GHz
配备CPU数量
2颗
最大CPU数量
2颗
制程工艺
22nm
三级缓存
20MB
总线规格
QPI 8GT/s
CPU核心
八核
CPU线程数
16线程
主板
扩展槽
2×PCI-E 3.0
内存
内存类型
ECC DDR3
内存容量
64GB
内存插槽数量
24
最大内存容量
768GB
存储
硬盘接口类型
支持SAS、SATA和SSD硬盘,最大可支持≥16个2.5英寸硬盘
RAID模式
M5110E RAID 0,1,5等
光驱
DVD光驱
硬盘容量
2块300GB 10K 6Gbps SFF热插拔SAS 2.5”硬盘
网络
网络控制器
四端口千兆网卡
管理及其它
系统管理
带可选 FoD 远程在线支持的 IBM IMM2,预测性故障分析,诊断 LED,光通路诊断面板,自动服务器重启,IBM Systems Director和Active Energy Manager
系统支持
Windows Server
Red Hat Enterprise Linux
SUSE Linux Enterprise Server
VMware vSphere
其他
支持Chipkill、内存在线备用及内存镜像等多种内存保护技术
电源性能
电源功率
750W
电源特性
热插拔冗余电源,热插拔冗余风扇
1.6施工进度安排
施工进度计划管理是项目施工中的控制重点之一,它是保证施工项目按期完成,合理安排资源供应、节约工程成本的重要措施,施工进度控制是指根据约定的工期要求,编制最优的施工进度计划,在计划的实施过程中,经常检查施工实际情况,并将其与计划进度相比较,若出现偏差,则分析产生偏差的原因和对工期的影响程度,找出必要的调整措施,修改原计划。施工进度控制是一个动态的控制过程,经过计划→检查→比较→新计划的不断循环,直至工程完工交付使用。
1.7项目工期
我公司承诺项目工期:交货日期为中标通知书发出后10天内全部到货;安装调试完成日期为中标通知书发出后15天内。
并将提供安装调试、操作培训等服务。地点:业主指定地点。
项目施工将与业主详细确认后再双方最终商定,具体事宜以合同为准。
进度计划横道图如下:
序号
实施阶段
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
1
需求调研及深化设计
2
下订与采购
3
产品到货
4
功能测试
5
设备安装
6
设备调试
7
系统联调
8
试运行
第2章 设备详细配置清单
展开阅读全文