easyswoole - 基于swoole扩展实现的一款高性能php框架

消息

我們的 SDK 把微信的 API 里的所有 “消息” 都按類型抽象出來了,也就是說,你不用區分它是回復消息還是主動推送消息,免去了你去手動拼裝微信的 XML 以及亂七八糟命名不統一的 JSON 了。

在閱讀以下內容時請忽略是 接收消息 還是 回復消息,后面我會給你講它們的區別。

消息類型

消息分為以下幾種:文本圖片視頻聲音鏈接坐標圖文文章 和一種特殊的 原始消息

另外還有一種特殊的消息類型:素材消息,用于群發或者客服時發送已有素材用。

注意:回復消息與客服消息里的圖文類型為:圖文,群發與素材中的圖文為 文章

所有的消息類都在 EasySwoole\WeChat\Kernel\Messages 這個命名空間下,下面我們來分開講解:

文本消息

屬性列表:

  • content 文本內容
<?php

use EasySwoole\WeChat\Kernel\Messages\Text;

$text = new Text('您好! EasySwoole WeChat!');

// or
$text = new Text('');
$text->setContent('您好! EasySwoole WeChat!');

// or
$text = new Text('');
$text->setAttribute('content', '您好! EasySwoole WeChat!');

圖片消息

屬性列表:

  • media_id 媒體資源 ID
<?php

use EasySwoole\WeChat\Kernel\Messages\Image;

$image = new Image($mediaId);

視頻消息

屬性列表:

  • title 標題
  • description 描述
  • media_id 媒體資源 ID
  • thumb_media_id 封面資源 ID
<?php

use EasySwoole\WeChat\Kernel\Messages\Video;

$title = 'i am title!';
$description = 'i am description!';
$video = new Video($mediaId);
$video->setAttributes([
    'title'       => $title,
    'description' => $description
]);

// or
$video = new Video($mediaId);
$video->setAttribute('title', $title);
$video->setAttribute('description', $description);

聲音消息

屬性列表:

  • media_id 媒體資源 ID
<?php

use EasySwoole\WeChat\Kernel\Messages\Voice;

$voice = new Voice($mediaId);

鏈接消息

微信目前不支持回復鏈接消息

坐標消息

微信目前不支持回復坐標消息

圖文消息

圖文消息分為 NewsItemNewsNewsItem 為圖文內容條目。

10 月 12 日起,被動回復消息客服消息接口圖文消息類型圖文數目 只能為一條。

NewsItem 屬性:

  • title 標題
  • description 描述
  • image 圖片鏈接
  • url 鏈接 URL
<?php

use EasySwoole\WeChat\Kernel\Messages\News;
use EasySwoole\WeChat\Kernel\Messages\NewsItem;

$items = [
    new NewsItem([
        'title'       => $title,
        'description' => '...',
        'url'         => $url,
        'image'       => $image,
        // ...
    ]),
];
$news = new News($items);

文章

屬性列表:

  • title 標題
  • author 作者
  • content 具體內容
  • thumb_media_id 圖文消息的封面圖片素材 id(必須是永久 mediaID
  • digest 圖文消息的摘要,僅有單圖文消息才有摘要,多圖文此處為空
  • source_url 來源 URL
  • show_cover 是否顯示封面,0false,即不顯示,1true,即顯示
<?php

use EasySwoole\WeChat\Kernel\Messages\Article;

$article = new Article([
    'title'   => 'EasySwoole WeChat',
    'author'  => 'EasySwoole',
    'content' => 'EasySwoole WeChat 是一個開源的微信 SDK!',
    // ...
]);

// or
$article = new Article();
$article->setAttribute('title', 'EasySwoole WeChat');
$article->setAttribute('author', 'EasySwoole');
$article->setAttribute('content', 'EasySwoole WeChat 是一個開源的微信 SDK!');

// ...

素材消息

素材消息用于群發與客服消息時使用。

素材消息不支持被動回復,如需被動回復素材消息,首先組裝后,再 News 方法返回。

屬性就一個:media_id

在構造時有兩個參數:

  • $type 素材類型,目前只支持:mpnewsmpvideovoiceimage 等。
  • $mediaId 素材 ID,從接口查詢或者上傳后得到。
<?php

use EasySwoole\WeChat\Kernel\Messages\Media;

$media = new Media($mediaId, 'mpnews');

以上呢,是所有微信支持的基本消息類型。

需要注意的是,你不需要關心微信的消息字段叫啥,因為這里我們使用了更標準的命名,然后最終在中間做了轉換,所以你不需要關注。

原始消息

原始消息是一種特殊的消息,它的場景是:你不想使用其它消息類型,你想自己手動拼消息。比如,回復消息時,你想自己拼 XML,那么你就直接用它就可以了:

<?php

use EasySwoole\WeChat\Kernel\Messages\Raw;
use EasySwoole\WeChat\Kernel\Utility\XML;

$dataArr = [
    'ToUserName' => 'toUser',
    'FromUserName' => 'fromUser',
    'CreateTime' => '12345678',
    'MsgType' => 'image',
    'Image' => [
        'MediaId' => 'media_id'
    ],
];
// 即 '<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[image]]></MsgType><Image><MediaId><![CDATA[media_id]]></MediaId></Image></xml>'
$rawXml = XML::build($dataArr);

$message = new Raw($rawXml);

// or
$message = new Raw('<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>12345678</CreateTime><MsgType><![CDATA[image]]></MsgType><Image><MediaId><![CDATA[media_id]]></MediaId></Image></xml>');

比如,你要用于客服消息 (客服消息是 JSON 結構):

<?php

use EasySwoole\WeChat\Kernel\Messages\Raw;

$dataArr1 = [
    'touser' => 'OPENID',
    'msgtype' => 'text',
    'text' => [
        'content' => 'Hello World'
    ]
];
$message = new Raw(json_encode($dataArr1));

// or
$message = new Raw('{"touser":"OPENID","msgtype":"text","text":{"content":"Hello World"}}');

總之,就是直接寫微信接口要求的格式內容就好,此類型消息在 SDK 中不存在轉換行為,所以請注意不要寫錯格式。

在 SDK 中使用消息

在服務端回復消息

服務端 章節中,我們講了回復消息的寫法:

<?php

// ... 前面部分省略

$server = $officialAccount->server;

/** 注冊消息事件回調 */
$server->push(function (\EasySwoole\WeChat\Kernel\Contracts\MessageInterface $message) {
    return new \EasySwoole\WeChat\Kernel\Messages\Text("您好!歡迎使用 EasySwoole WeChat!");
});

$replyResponse = $server->forceValidate()->serve($psr7Request);

上面 return 轉換為 Text 文本類型的動作。

如果你要回復其它類型的消息,可以選擇返回一個其他具體的實例,比如回復一個圖片類型的消息:

<?php

use EasySwoole\WeChat\Kernel\Messages\Image;

// ...

$server = $officialAccount->server;

/** 注冊消息事件回調 */
$server->push(function (\EasySwoole\WeChat\Kernel\Contracts\MessageInterface $message) {
    return new \EasySwoole\WeChat\Kernel\Messages\Image('media-id');
});

// ...

回復多圖文消息

10 月 12 日起,被動回復消息客服消息接口圖文消息類型圖文數目 只能為一條。

多圖文消息其實就是單圖文消息的一個數組而已了:

<?php

use EasySwoole\WeChat\Kernel\Messages\News;
use EasySwoole\WeChat\Kernel\Messages\NewsItem;

// ...

$server = $officialAccount->server;

/** 注冊消息事件回調 */
$server->push(function (\EasySwoole\WeChat\Kernel\Contracts\MessageInterface $message) {

    $items = [
        new NewsItem([
            'title'       => $title,
            'description' => '...',
            'url'         => $url,
            'image'       => $image,
            // ...
        ]),
        new NewsItem([
            'title'       => $title,
            'description' => '...',
            'url'         => $url,
            'image'       => $image,
            // ...
        ]),
    ];
    return new News($items);
});

// ...

作為客服消息發送

在客服消息里的使用也一樣,都是直接傳入消息實例即可:

暫時略。

發送多圖文消息

10 月 12 日起,被動回復消息客服消息接口圖文消息類型圖文數目 只能為一條。

多圖文消息其實就是單圖文消息組成的一個 News 對象而已:

暫時略。

群發消息

請參考:群發消息

消息轉發給客服系統

參見:多客服消息轉發

主站蜘蛛池模板: 通信系统-通信人在线 | 树脂排水沟,树脂混凝土排水沟生产厂家-吉林省科维水泥制品公司 | 尼德克医疗器械贸易(上海)有限公司 | 真空电镀机_镀膜机厂家_离子镀膜机_磁控溅射镀膜设备_镀钛设备-江苏驰诚科技发展有限公司 | 河南电梯公司_郑州电梯公司_河南家用别墅电梯厂家-郑州嘉祥机电设备公司 | 深山工作室提供网络投票系统|微信公众号投票|微信公众号小程序|抖音小程序|百度小程序|微信公众号开发|企业网站建设 | 乌鲁木齐万疆通管道设备有限公司 销售热线;13565955557-新疆 乌鲁木齐 万疆通 管道设备 波纹补偿器 膨胀节 金属软管 伸缩器 管件 阀门 维修 | 汽车标签|医疗标签|电子标签|手机电池标签|电脑电池标签|电源标签|耐高温标签|防静电标签|手机出厂膜|手机全裹膜|手机包裹膜|手机卖点膜|热转印标签|遮阳板标签|天势科技|-标签印制专家! | 银联POS机_银联微信支付宝刷卡POS机_外币POS机_移动POS机办理安装——谷骐科技 | 毛刷_毛刷辊_工业毛刷辊厂家_毛刷加工制造厂【丰汇刷业】 | 可可英语-年轻人的英语听说训练平台 | 陕西筱润智能科技有限公司 干部人事智能档案柜 智能密集架 智能档案柜 部队选层文件智能柜 智能枪弹柜 财务智能档案柜 边防武警智能密集架 医院智能档案柜 部队选层文件智能柜智能枪弹柜 学校医院文件柜 企事业单位公检法智能文件柜 生产厂家-筱润智能科技有限公司 RFID射频智能密集架 全自动智能选层档案柜 智能密保柜 枪柜部队营房营具床桌椅办公家具 办公用品档案盒设备货架 全自动智能选层柜生产厂家-筱润智能科技有限公司 | 叶片泵,液压电机,油泵电机,变量叶片泵,油压电机-广东俊泰液压科技有限公司 | 卷帘门,防火卷帘,快速门,硬质快速门,提升门,伸缩门,堆积门,车库门维修-烟台捷曼门业有限公司 | 深圳市鼎拓达机电有限公司_ 深圳市鼎拓达机电有限公司 | 郑州编织袋厂_郑州塑料编织袋_河南塑料编织袋厂-河南宏旺塑料编织袋厂家 | 中婴网,推动母婴产业健康·可持续发展,婴童网络专业传媒,母婴网,360孕婴童网,婴童品牌,婴儿用品品牌,婴儿用品加盟店,母婴用品加盟店 | 久久91精品久久91综合_国产亚洲自拍一区_国产精品第1页_亚洲高清视频一区_91成人午夜在线精品_亚洲国产精品网站在线播放_亚洲国产成人久久综合区_国产精品亚洲专区在线观看_免费视频精品一区二区三区 | 呼吸家官网|肺功能检测仪生产厂家|国产肺功能仪知名品牌|肺功能检测仪|肺功能测试仪|婴幼儿肺功能仪|弥散残气肺功能仪|肺功能测试系统|广州红象医疗科技有限公司|便携式肺功能仪|大肺功能仪|呼吸康复一体机|儿童肺功能仪|肺活量计|医用简易肺功能仪|呼吸康复系统|肺功能仪|弥散肺功能仪(大肺)|便携式肺功能检测仪|肺康复|呼吸肌力测定肺功能仪|肺功能测定仪|呼吸神经肌肉刺激仪|便携式肺功能 | 新乡风机_离心风机厂家_风机生产厂家-河南新乡鼓风机厂 | 邮政纸箱_淘宝纸箱_抗压纸箱,盐城纸箱,盐城纸箱厂家,盐城承重纸箱-盐城君雅纸箱 | 武汉防雷检测_防雷工程设计施工_防雷设备材料_湖北普天科技有限公司 | 著名刑事诉讼律师_刑事辩护律师★王平聚【清华博士/刑法教授】 | 思为网络_成都百度优化快照排名-成都网站建设优化_成都网页设计_成都SEO公司 | 宣城安安橡塑有限责任公司 | 树脂门|卫浴门|医院门|医院专用门|卫生间门—湖南航天康达树脂门 | 唐山森林光线影视文化有限公司 | 鸿贝蓄电池-BATA电池—上海鸿贝电源系统有限公司 | 无锡市恒威工业气体有限公司-工业高纯气体_高纯度特种气体 | 浙江凯力防爆电气集团有限公司【官网】 | 磨粉设备_雷蒙磨粉机_雷蒙超细磨 | 游离二氧化硅处理仪-恒温恒湿称重系统-智能蒸馏仪-硫化物酸化吹气仪-萃取仪-COD消解仪 | 筱晓(上海)光子技术有限公司官网,MCT探测器,半导体激光二极管,中红外QCL激光器,光纤放大器,光电探测器 | 上海希喆机械有限公司-Schunk雄克,雄克卡盘, 雄克机械手, B+R贝加莱, ELCIS编码器,艾西斯编码器, TWK编码器,Nexen,Joyce dayton升降机,Thomson汤姆森,TPG减速机,INA导轨。 | 小程序商城,_电商系统源码,直播商城定制开发电商系统源码,电商系统,java电商系统 | 碳化硅脱硫喷嘴,碳化硅烧嘴套,碳化硅耐磨衬套-潍坊致达特种陶瓷有限公司 | 昆明塑料包装袋|云南塑料包装袋|昆明塑料袋厂家|云南茶叶大米蔬菜种子食品包装袋就来阮门包装有限公司 | 压力变送器,差压变送器,液位变送器,温度变送器生产厂家价格-西安仕乐克仪表科技有限公司 | 木工圆锯片,进口锯片厂家,合金锯片生产厂家,木工合金锯片,BAK(百恪)刀具有限公司 | 中房网_中国房地产业协会官方网站 | 联系我们-99公司开户电话-99厅|