博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信公众平台——被动回复用户消息
阅读量:5994 次
发布时间:2019-06-20

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

微信公众平台——被动回复用户消息

开发模式下的回复信息基础接口,可用来向用户回复文本消息、图片消息、语音消息、视频消息、小视频消息、地理位置消息、链接消息。

1、回复文本消息

function ReplyText(Msg: TMessage; MsgText: String): RawByteString;var  X: IXMLDocument;begin  X := NewXMLDocument;  try    X.Xml.text := TextMsg;    X.Active := true;    with X.DocumentElement.ChildNodes do    begin      Nodes['ToUserName'].NodeValue := Msg.FromUserName;      Nodes['FromUserName'].NodeValue := Msg.ToUserName;      Nodes['CreateTime'].NodeValue := UnixTime(now);      Nodes['MsgType'].NodeValue := 'text';      Nodes['Content'].NodeValue := MsgText;    end;    Result := UTF8Encode(X.Xml.text);  finally    X.Active := False;    X := nil;  end;end; //设置AResponseInfo.ContentText 等于返回的结果,即可自动回复文本消息

2、回复图文消息

TNews = record    Title: String;    Description: String;    PicUrl: String;    Url: String;  end;var     MusicSubimg='https://mmbiz.qlogo.cn/mmbiz/cHdclURXy6gmu3ib6UA20b5s2Xy1Ra7cxYMNIuDvFDiaQvX8MZDibgQ1eCOsfvL6zufo7xSzUiaQZUY1KovYWmJ6Hg/0';function NewsMusic: TArray
;begin SetLength(Result, 2); Result[0].Title := 'QQ音乐巅峰榜·内地'; Result[0].Description := 'QQ音乐巅峰榜·内地'; Result[0].PicUrl := MusicSubimg; Result[0].Url := 'http://y.qq.com/#type=toplist&p=top_2'; Result[1].Title := 'QQ音乐巅峰榜·港台'; Result[1].Description := 'QQ音乐巅峰榜·港台'; Result[1].PicUrl := MusicSubimg; Result[1].Url := 'http://y.qq.com/#type=toplist&p=top_1';end;function ReplyNews(M: TMessage; News: TArray
): RawByteString;var X: IXMLDocument; I: Integer;begin X := NewXMLDocument; try X.Xml.text := NewsMsg; X.Active := true; with X.DocumentElement.ChildNodes do begin Nodes['ToUserName'].NodeValue := M.FromUserName; Nodes['FromUserName'].NodeValue := M.ToUserName; Nodes['CreateTime'].NodeValue := UnixTime(now); Nodes['MsgType'].NodeValue := 'news'; Nodes['ArticleCount'].NodeValue := length(News); with Nodes['Articles'].ChildNodes do begin with Nodes['item'].ChildNodes do begin Nodes['Title'].NodeValue := News[0].Title; Nodes['Description'].NodeValue := News[0].Description; Nodes['PicUrl'].NodeValue := News[0].PicUrl; Nodes['Url'].NodeValue := News[0].Url; end; for I := 1 to length(News) - 1 do begin Add(First.CloneNode(true)); with Nodes['item'].ChildNodes do begin Nodes['Title'].NodeValue := News[I].Title; Nodes['Description'].NodeValue := News[I].Description; Nodes['PicUrl'].NodeValue := News[I].PicUrl; Nodes['Url'].NodeValue := News[I].Url; end; end; end; end; Result := UTF8Encode(X.Xml.text); finally X.Active := False; X := nil; end;end; //设置AResponseInfo.ContentText 等于返回的结果,即可自动回复图文消息

3、回复模板消息

function PostMethod(HTTP: TIdHTTP; Url: String; Data: UTF8String; Max: Integer): String;var  PostData, RespData: TStringStream;begin  RespData := TStringStream.Create('');  PostData := TStringStream.Create(Data);  try    try      if HTTP = nil then        Exit;      HTTP.Post(Url, PostData, RespData);      Result := RespData.DataString;      HTTP.Request.Referer := Url;    except      Dec(Max);      if Max = 0 then      begin        Result := '';        Exit;      end;      Result := PostMethod(Url, Data, Max);    end;  finally    HTTP.Disconnect;    FreeAndNil(RespData);    FreeAndNil(PostData);  end;end;

 

SendTemplateUrl = 'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=%s';function ReplyTemRecharge(OpenID, AccessToken, First, Remark: String;  Money: Integer): TJSONObject;var  Url: string;  Data: TJSONObject;  temp: RawByteString;begin  Data := TJSONObject.Create;  try    Url := Format(SendTemplateUrl, [AccessToken]);    Data.AddPair('touser', OpenID);    Data.AddPair('template_id', 'NH_ctxX4kjW1Jw3q8Cb1y1uBAard9uOMdF5F2Nq9Uwc');    Data.AddPair('url', '');    Data.AddPair('topcolor', '#FF0000');    Data.AddPair('data', TJSONObject.Create);    with Data.Values['data'] as TJSONObject do    begin      AddPair('first', TJSONObject.Create);      with Values['first'] as TJSONObject do      begin        AddPair('value', '充值成功');        AddPair('color', '#173177');      end;      AddPair('keyword1', TJSONObject.Create);      with Values['keyword1'] as TJSONObject do      begin        AddPair('value', format('%d 元',[Money]));        AddPair('color', '#173177');      end;      AddPair('keyword2', TJSONObject.Create);      with Values['keyword2'] as TJSONObject do      begin        AddPair('value', formatdatetime('yyyy-mm-dd hh:mm:ss', now));        AddPair('color', '#173177');      end;      AddPair('remark', TJSONObject.Create);      with Values['remark'] as TJSONObject do      begin        AddPair('value', '这只是模板测试,不要当真哦^_^');        AddPair('color', '#173177');      end;    end;    temp := PostMethod(Url, UTF8Encode(Data.ToString), 1);    Result := TJSONObject.ParseJSONValue(temp) as TJSONObject;  finally    Data.Free;  end;end;

转载地址:http://wiqlx.baihongyu.com/

你可能感兴趣的文章
蓝桥杯练习系统——基础练习 十六进制转十进制
查看>>
Mac: Android studio+VirtualBox+Genymotion
查看>>
The way to Go(4): Go runtime及解释器
查看>>
简易RPC框架-上下文
查看>>
26.使用IntelliJ IDEA开发Java Web项目时,修改了JSP后刷新浏览器无法及时显示修改后的页面...
查看>>
自定义ViewGroup
查看>>
25.管道流
查看>>
2017-2018:时间戳
查看>>
php实现 明明的随机数
查看>>
Guava中针对集合的 filter和过滤功能
查看>>
小程序顶部导航栏的自定义
查看>>
ZooKeeper系列(3):znode说明和znode状态
查看>>
Java Arrays.sort源代码解析
查看>>
使用buildroot创建自己的交叉编译工具链【转】
查看>>
使用superlance插件增强supervisor的监控能力
查看>>
Js:消息弹出框、获取时间区间、时间格式、easyui datebox 自定义校验、表单数据转化json、控制两个日期不能只填一个...
查看>>
移动Web前端,游客点击商品的收藏按钮,登录完成,回来之后,如何自动收藏...
查看>>
css自适应浏览器大小
查看>>
C#与C++的发展历程第二 - C#4.0再接再厉
查看>>
VS Code使用 Vue工程配置 eslint
查看>>