You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
git-test/core/responsepassive.lib.php

437 lines
18 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace LaneWeChat\Core;
/**
* 发送被动响应
* Created by Lane.
* User: lane
* Date: 13-12-19
* Time: 下午3:01
* Mail: lixuan868686@163.com
* Website: http://www.lanecn.com
*/
class ResponsePassive {
/**
* @description 文本消息
* @param $fromusername 发送方的OpenId
* @param $tousername 接收方的OpenId
* @param $content 回复的消息内容换行在content中能够换行微信客户端就支持换行显示
* @param $funcFlag 默认为0设为1时星标刚才收到的消息
* @return string 返回XML格式的文本消息
*/
public static function text($fromusername, $tousername, $content, $funcFlag=0) {
$template = <<<XML
<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>%s</FuncFlag>
</xml>
XML;
return sprintf($template, $fromusername, $tousername, time(), $content, $funcFlag);
}
/**
* @description 图片消息
* @param $fromusername 发送方的OpenId
* @param $tousername 接收方的OpenId
* @param $mediaId 通过上传多媒体文件得到的id
* @param $funcFlag 默认为0设为1时星标刚才收到的消息
* @return string 返回XML格式的图片消息
*/
public static function image($fromusername, $tousername, $mediaId, $funcFlag=0) {
$template = <<<XML
<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[image]]></MsgType>
<Image>
<MediaId><![CDATA[%s]]></MediaId>
</Image>
<FuncFlag>%s</FuncFlag>
</xml>
XML;
return sprintf($template, $fromusername, $tousername, time(), $mediaId, $funcFlag);
}
/**
* @description 语音消息
* @param $fromusername 发送方的OpenId
* @param $tousername 接收方的OpenId
* @param $mediaId 通过上传多媒体文件得到的id
* @param $funcFlag 默认为0设为1时星标刚才收到的消息
* @return string 返回XML格式的语音消息
*/
public static function voice($fromusername, $tousername, $mediaId, $funcFlag=0) {
$template = <<<XML
<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[voice]]></MsgType>
<Voice>
<MediaId><![CDATA[%s]]></MediaId>
</Voice>
<FuncFlag>%s</FuncFlag>
</xml>
XML;
return sprintf($template, $fromusername, $tousername, time(), $mediaId, $funcFlag);
}
/**
* @description 视频消息
* @param $fromusername 发送方的OpenId
* @param $tousername 接收方的OpenId
* @param $mediaId 通过上传多媒体文件得到的id
* @param $title 标题
* @param $description 描述
* @param $funcFlag 默认为0设为1时星标刚才收到的消息
* @return string 返回XML格式的视频消息
*/
public static function video($fromusername, $tousername, $mediaId, $title, $description, $funcFlag=0) {
$template = <<<XML
<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[video]]></MsgType>
<Video>
<MediaId><![CDATA[%s]]></MediaId>
<Title><![CDATA[%s]]></Title>
<Description><![CDATA[%s]]></Description>
</Video>
<FuncFlag>%s</FuncFlag>
</xml>
XML;
return sprintf($template, $fromusername, $tousername, time(), $mediaId, $title, $description, $funcFlag);
}
/**
* @description 音乐消息
* @param $fromusername 发送方的OpenId
* @param $tousername 接收方的OpenId
* @param $title 标题
* @param $description 描述
* @param $musicUrl 音乐链接
* @param $hqMusicUrl 高质量音乐链接WIFI环境优先使用该链接播放音乐
* @param $thumbMediaId 缩略图的媒体id通过上传多媒体文件得到的id
* @param $funcFlag 默认为0设为1时星标刚才收到的消息
* @return string 返回XML格式的音乐消息
*/
public static function music($fromusername, $tousername, $title, $description, $musicUrl, $hqMusicUrl, $thumbMediaId, $funcFlag=0) {
$template = <<<XML
<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[music]]></MsgType>
<Music>
<Title><![CDATA[%s]]></Title>
<Description><![CDATA[%s]]></Description>
<MusicUrl><![CDATA[%s]]></MusicUrl>
<HQMusicUrl><![CDATA[%s]]></HQMusicUrl>
<ThumbMediaId><![CDATA[%s]]></ThumbMediaId>
</Music>
<FuncFlag>%s</FuncFlag>
</xml>
XML;
return sprintf($template, $fromusername, $tousername, time(), $title, $description, $musicUrl, $hqMusicUrl, $thumbMediaId, $funcFlag);
}
/**
* @description 图文消息 - 单个项目的准备工作用于内嵌到self::news()中。现调用本方法再调用self::news()
* 多条图文消息信息默认第一个item为大图,注意如果调用本方法得到的数组总项数超过10则将会无响应
* @param $title 标题
* @param $description 描述
* @param $picUrl 图片链接支持JPG、PNG格式较好的效果为大图360*200小图200*200
* @param $url 点击图文消息跳转链接
* @return string 返回XML格式的图文消息项
*/
public static function newsItem($title, $description, $picUrl, $url) {
$template = <<<XML
<item>
<Title><![CDATA[%s]]></Title>
<Description><![CDATA[%s]]></Description>
<PicUrl><![CDATA[%s]]></PicUrl>
<Url><![CDATA[%s]]></Url>
</item>
XML;
return sprintf($template, $title, $description, $picUrl, $url);
}
/**
* @description 图文消息 - 先调用self::newsItem()再调用本方法
* @param $fromusername 发送方的OpenId
* @param $tousername 接收方的OpenId
* @param $item 数组每个项由self::newsItem()返回
* @param $funcFlag 默认为0设为1时星标刚才收到的消息
* @return string 返回XML格式的图文消息
*/
public static function news($fromusername, $tousername, $item, $funcFlag=0) {
//多条图文消息信息默认第一个item为大图,注意如果图文数超过10则将会无响应
if(count($item) >= 10){
$request = array('fromusername'=>$fromusername, 'tousername'=>$tousername);
return Msg::returnErrMsg(MsgConstant::ERROR_NEWS_ITEM_COUNT_MORE_TEN, '图文消息的项数不能超过10条', $request);
}
$template = <<<XML
<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<ArticleCount>%s</ArticleCount
<?php
namespace LaneWeChat\Core;
/**
* 发送被动响应
* Created by Lane.
* User: lane
* Date: 13-12-19
* Time: 下午3:01
* Mail: lixuan868686@163.com
* Website: http://www.lanecn.com
*/
class ResponsePassive {
/**
* @description 文本消息
* @param $fromusername 发送方的OpenId
* @param $tousername 接收方的OpenId
* @param $content 回复的消息内容换行在content中能够换行微信客户端就支持换行显示
* @param $funcFlag 默认为0设为1时星标刚才收到的消息
* @return string 返回XML格式的文本消息
*/
public static function text($fromusername, $tousername, $content, $funcFlag=0) {
$template = <<<XML
<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>%s</FuncFlag>
</xml>
XML;
return sprintf($template, $fromusername, $tousername, time(), $content, $funcFlag);
}
/**
* @description 图片消息
* @param $fromusername 发送方的OpenId
* @param $tousername 接收方的OpenId
* @param $mediaId 通过上传多媒体文件得到的id
* @param $funcFlag 默认为0设为1时星标刚才收到的消息
* @return string 返回XML格式的图片消息
*/
public static function image($fromusername, $tousername, $mediaId, $funcFlag=0) {
$template = <<<XML
<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[image]]></MsgType>
<Image>
<MediaId><![CDATA[%s]]></MediaId>
</Image>
<FuncFlag>%s</FuncFlag>
</xml>
XML;
return sprintf($template, $fromusername, $tousername, time(), $mediaId, $funcFlag);
}
/**
* @description 语音消息
* @param $fromusername 发送方的OpenId
* @param $tousername 接收方的OpenId
* @param $mediaId 通过上传多媒体文件得到的id
* @param $funcFlag 默认为0设为1时星标刚才收到的消息
* @return string 返回XML格式的语音消息
*/
public static function voice($fromusername, $tousername, $mediaId, $funcFlag=0) {
$template = <<<XML
<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[voice]]></MsgType>
<Voice>
<MediaId><![CDATA[%s]]></MediaId>
</Voice>
<FuncFlag>%s</FuncFlag>
</xml>
XML;
return sprintf($template, $fromusername, $tousername, time(), $mediaId, $funcFlag);
}
/**
* @description 视频消息
* @param $fromusername 发送方的OpenId
* @param $tousername 接收方的OpenId
* @param $mediaId 通过上传多媒体文件得到的id
* @param $title 标题
* @param $description 描述
* @param $funcFlag 默认为0设为1时星标刚才收到的消息
* @return string 返回XML格式的视频消息
*/
public static function video($fromusername, $tousername, $mediaId, $title, $description, $funcFlag=0) {
$template = <<<XML
<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[video]]></MsgType>
<Video>
<MediaId><![CDATA[%s]]></MediaId>
<Title><![CDATA[%s]]></Title>
<Description><![CDATA[%s]]></Description>
</Video>
<FuncFlag>%s</FuncFlag>
</xml>
XML;
return sprintf($template, $fromusername, $tousername, time(), $mediaId, $title, $description, $funcFlag);
}
/**
* @description 音乐消息
* @param $fromusername 发送方的OpenId
* @param $tousername 接收方的OpenId
* @param $title 标题
* @param $description 描述
* @param $musicUrl 音乐链接
* @param $hqMusicUrl 高质量音乐链接WIFI环境优先使用该链接播放音乐
* @param $thumbMediaId 缩略图的媒体id通过上传多媒体文件得到的id
* @param $funcFlag 默认为0设为1时星标刚才收到的消息
* @return string 返回XML格式的音乐消息
*/
public static function music($fromusername, $tousername, $title, $description, $musicUrl, $hqMusicUrl, $thumbMediaId, $funcFlag=0) {
$template = <<<XML
<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[music]]></MsgType>
<Music>
<Title><![CDATA[%s]]></Title>
<Description><![CDATA[%s]]></Description>
<MusicUrl><![CDATA[%s]]></MusicUrl>
<HQMusicUrl><![CDATA[%s]]></HQMusicUrl>
<ThumbMediaId><![CDATA[%s]]></ThumbMediaId>
</Music>
<FuncFlag>%s</FuncFlag>
</xml>
XML;
return sprintf($template, $fromusername, $tousername, time(), $title, $description, $musicUrl, $hqMusicUrl, $thumbMediaId, $funcFlag);
}
/**
* @description 图文消息 - 单个项目的准备工作用于内嵌到self::news()中。现调用本方法再调用self::news()
* 多条图文消息信息默认第一个item为大图,注意如果调用本方法得到的数组总项数超过10则将会无响应
* @param $title 标题
* @param $description 描述
* @param $picUrl 图片链接支持JPG、PNG格式较好的效果为大图360*200小图200*200
* @param $url 点击图文消息跳转链接
* @return string 返回XML格式的图文消息项
*/
public static function newsItem($title, $description, $picUrl, $url) {
$template = <<<XML
<item>
<Title><![CDATA[%s]]></Title>
<Description><![CDATA[%s]]></Description>
<PicUrl><![CDATA[%s]]></PicUrl>
<Url><![CDATA[%s]]></Url>
</item>
XML;
return sprintf($template, $title, $description, $picUrl, $url);
}
/**
* @description 图文消息 - 先调用self::newsItem()再调用本方法
* @param $fromusername 发送方的OpenId
* @param $tousername 接收方的OpenId
* @param $item 数组每个项由self::newsItem()返回
* @param $funcFlag 默认为0设为1时星标刚才收到的消息
* @return string 返回XML格式的图文消息
*/
public static function news($fromusername, $tousername, $item, $funcFlag=0) {
//多条图文消息信息默认第一个item为大图,注意如果图文数超过10则将会无响应
if(count($item) >= 10){
$request = array('fromusername'=>$fromusername, 'tousername'=>$tousername);
return Msg::returnErrMsg(MsgConstant::ERROR_NEWS_ITEM_COUNT_MORE_TEN, '图文消息的项数不能超过10条', $request);
}
$template = <<<XML
<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<ArticleCount>%s</ArticleCount
ResponsePassive 类是一个用于微信公众号被动响应消息的工具类,它封装了各种消息类型的发送方法,使得开发者能够方便地根据用户请求回复不同形式的消息。以下是该类中各方法的详细讲解:
文本消息
功能:用于回复文本内容给用户。
参数:
$fromusername发送方的OpenId即公众号的OpenId。
$tousername接收方的OpenId即用户的OpenId。
$content要回复的文本内容支持换行微信客户端会按换行显示。
$funcFlag默认为0设为1时星标刚才收到的消息方便用户快速找到。
返回值返回一个XML格式的文本消息字符串包含消息的接收方、发送方、创建时间、消息类型以及文本内容等字段。
图片消息
功能:用于回复图片给用户。
参数:
$fromusername发送方的OpenId即公众号的OpenId。
$tousername接收方的OpenId即用户的OpenId。
$mediaId通过上传多媒体文件到微信服务器得到的图片媒体id。
$funcFlag默认为0设为1时星标刚才收到的消息。
返回值返回一个XML格式的图片消息字符串包含消息的接收方、发送方、创建时间、消息类型以及图片媒体id等字段。
语音消息
功能:用于回复语音给用户。
参数:
$fromusername发送方的OpenId即公众号的OpenId。
$tousername接收方的OpenId即用户的OpenId。
$mediaId通过上传多媒体文件到微信服务器得到的语音媒体id。
$funcFlag默认为0设为1时星标刚才收到的消息。
返回值返回一个XML格式的语音消息字符串包含消息的接收方、发送方、创建时间、消息类型以及语音媒体id等字段。
视频消息
功能:用于回复视频给用户。
参数:
$fromusername发送方的OpenId即公众号的OpenId。
$tousername接收方的OpenId即用户的OpenId。
$mediaId通过上传多媒体文件到微信服务器得到的视频媒体id。
$title视频消息的标题。
$description视频消息的描述。
$funcFlag默认为0设为1时星标刚才收到的消息。
返回值返回一个XML格式的视频消息字符串包含消息的接收方、发送方、创建时间、消息类型、视频媒体id、标题、描述等字段。
音乐消息
功能:用于回复音乐给用户。
参数:
$fromusername发送方的OpenId即公众号的OpenId。
$tousername接收方的OpenId即用户的OpenId。
$title音乐消息的标题。
$description音乐消息的描述。
$musicUrl音乐链接用户点击后会跳转到该链接播放音乐。
$hqMusicUrl高质量音乐链接WIFI环境下优先使用该链接播放音乐。
$thumbMediaId缩略图的媒体id通过上传多媒体文件到微信服务器得到。
$funcFlag默认为0设为1时星标刚才收到的消息。
返回值返回一个XML格式的音乐消息字符串包含消息的接收方、发送方、创建时间、消息类型、音乐链接、高质量音乐链接、缩略图媒体id等字段。
图文消息 - 单个项目的准备工作
功能准备图文消息的单个项目用于内嵌到news()方法中组装成完整的图文消息。
参数:
$title图文消息的标题。
$description图文消息的描述。
$picUrl图片链接支持JPG、PNG格式大图建议360200小图建议200200。
$url点击图文消息跳转的链接。
返回值返回一个XML格式的图文消息项字符串包含标题、描述、图片链接、跳转链接等字段。
图文消息
功能:用于回复图文消息给用户。
参数:
$fromusername发送方的OpenId即公众号的OpenId。
$tousername接收方的OpenId即用户的OpenId。
$item数组每个项由newsItem()方法返回的图文消息项。
$funcFlag默认为0设为1时星标刚才收到的消息。
返回值返回一个XML格式的图文消息字符串包含消息的接收方、发送方、创建时间、消息类型、图文消息项数量以及各个图文消息项的内容。需要注意的是图文消息的项数不能超过10条否则将会无响应