|
|
<?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条,否则将会无响应 |