秋·风

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  278 随笔 :: 0 文章 :: 308 评论 :: 20万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
  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;

posted on   秋·风  阅读(1148)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示