1. 接收普通消息和被动回复用户消息

用户发送消息给公众号时(或某些特定的用户操作引发的事件推送时),会产生一个POST请求,开发者可以在响应包(Get)中返回特定XML结构,来对该消息进行响应(现支持回复文本、图片、图文、语音、视频、音乐)。严格来说,发送被动响应消息其实并不是一种接口,而是对微信服务器发过来消息的一次回复。

假如服务器无法保证在五秒内处理并回复,必须做出下述回复,这样微信服务器才不会对此作任何处理,并且不会发起重试(这种情况下,可以使用客服消息接口进行异步回复),否则,将出现严重的错误提示。详见下面说明:

1、直接回复success(推荐方式)

2、直接回复空串(指字节长度为0的空字符串,而不是XML结构体中content字段的内容为空)

一旦遇到以下情况,微信都会在公众号会话中,向用户下发系统提示“该公众号暂时无法提供服务,请稍后再试”:

1、开发者在5秒内未回复任何内容

2、开发者回复了异常数据,比如JSON数据等

//unigui接收消息用UniGUIServerModuleHTTPDocument

procedure TUniServerModule.UniGUIServerModuleHTTPDocument(

const Document: string; const InParams: TStrings;

ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo;

var Handled: Boolean);

var temp:TStringList;

temps:string;

begin

if CheckSignature(ARequestInfo) then

begin

if  ARequestInfo.PostStream <> nil then

begin

temp:=TStringList.Create;

temp.LoadFromStream(TMemoryStream(ARequestInfo.PostStream));

temps := '<?xml version=''1.0'' encoding=''gb2312''?>' + temp.Text;

temps := StringReplace(temps, '<![CDATA[', '', [rfReplaceAll, rfIgnoreCase]);

temps := StringReplace(temps, ']]>', '', [rfReplaceAll, rfIgnoreCase]);

CoInitialize(nil);

try

Handled := true;

AResponseInfo.CharSet := 'UTF-8';

AResponseInfo.ContentType := 'UTF-8';

AResponseInfo.ContentType := 'text/html; charset=UTF-8';

AResponseInfo.ContentText :=Analysis(temps);//回复用户消息,也可以直接返回:AResponseInfo.ContentText :=''

finally

CoUninitialize;

temp.Free;

end;

end;

end;

最新文章

  1. CSS基本知识5-CSS对齐
  2. NOI 题库 7218
  3. Linux定时任务Crontab学习笔记
  4. 字符编码详解及由来(UNICODE,UTF-8,GBK)[转帖]
  5. 项目Postmortem
  6. Express/Koa/Hapi
  7. [AngularJS] angular-formly: expressionProperties
  8. select count(1) from table where ..这句sql语句的作用
  9. HttpURLConnection访问url的工具类
  10. Codechef Nuclear Reactors 题解
  11. Yii2简单纪要
  12. log4net概述
  13. [Cocos2d-x]节点之间的相互通讯
  14. Saiku一个简短的引论
  15. java系列笔记---正则表达式(1)常用符号
  16. chrome地址栏命令
  17. Python快速学习02:基本数据类型 &amp; 序列
  18. 高性能mysql 第六章查询性能优化 总结(上)查询的执行过程
  19. 报错解决——ctypes.ArgumentError: argument 1:……….. : wrong type
  20. Java NIO系列教程(九) ServerSocketChannel

热门文章

  1. python基础之Day5
  2. 【UI测试】--美观与协调性
  3. .net使用NPOI的XSSFWorkbook进行web开发中导出Excel
  4. python入门之深浅copy
  5. 再读c++primer plus 002
  6. dex2jar 和 jd-gui 的安装与使用(转)
  7. Vim编辑器入门
  8. es6函数的新语法
  9. centos7,系统目录结构
  10. Linux学习(2)- 正则表达式基础