亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频

服務(wù)端

我們?cè)谌腴T(mén)小教程一節(jié)中以服務(wù)端為例講解了一個(gè)基本的消息的處理,這里就不再講服務(wù)器驗(yàn)證的流程了,請(qǐng)直接參考前面的入門(mén)實(shí)例即可。

服務(wù)端的作用,在整個(gè)微信開(kāi)發(fā)中主要是負(fù)責(zé) 接收用戶發(fā)送過(guò)來(lái)的消息,還有 用戶觸發(fā)的一系列事件

首先我們得理清 消息與事件的回復(fù)邏輯,當(dāng)你收到用戶消息后(消息由微信服務(wù)器推送到你的服務(wù)器),在你對(duì)消息進(jìn)行一些處理后,不管是選擇回復(fù)一個(gè)消息還是什么不都回給用戶,你也應(yīng)該給微信服務(wù)器一個(gè) “答復(fù)”,如果是選擇回復(fù)一條消息,就直接返回一個(gè)消息 xml 就好,如果選擇不做任何回復(fù),你也得回復(fù)一個(gè) 空字符串 或者 字符串 SUCCESS(不然用戶就會(huì)看到 該公眾號(hào)暫時(shí)無(wú)法提供服務(wù))。

基本使用

SDK 中使用 $officialAccount->server->push(callable $callback) 來(lái)設(shè)置消息處理器:

<?php

$server = $officialAccount->server;

/** 注冊(cè)消息事件回調(diào) */
$server->push(function (\EasySwoole\WeChat\Kernel\Contracts\MessageInterface $message) {
    // $message->getType(); // 消息類型:消息類型:event、text ......
    return new \EasySwoole\WeChat\Kernel\Messages\Text("您好!歡迎使用 EasySwoole WeChat!");
});

這里我們使用 push 傳入了一個(gè) 閉包(Closure),該閉包接收一個(gè)參數(shù) $message 為消息對(duì)象(類型為實(shí)現(xiàn)了 \EasySwoole\WeChat\Kernel\Contracts\MessageInterface 接口的實(shí)例對(duì)象),你可以在全局消息處理器中對(duì)消息類型進(jìn)行篩選:

<?php

$server = $officialAccount->server;

$server->push(function (\EasySwoole\WeChat\Kernel\Contracts\MessageInterface $message) {
    switch ($message->getType()) {
        case 'event':
            $text = '收到事件消息';
            break;
        case 'text':
            $text = '收到文字消息';
            break;
        case 'image':
            $text = '收到圖片消息';
            break;
        case 'voice':
            $text = '收到語(yǔ)音消息';
            break;
        case 'video':
            $text = '收到視頻消息';
            break;
        case 'location':
            $text = '收到坐標(biāo)消息';
            break;
        case 'link':
            $text = '收到鏈接消息';
            break;
        case 'file':
            $text = '收到文件消息';
            break;
        // ... 其它消息
        default:
            $text = '收到其它消息';
            break;
    }

    // ...

    return new \EasySwoole\WeChat\Kernel\Messages\Text($text);
});

當(dāng)然,因?yàn)檫@里 push 接收一個(gè) callable 的參數(shù),所以你不一定要傳入一個(gè) Closure 閉包,你可以選擇傳入一個(gè)函數(shù)名,一個(gè) [$class, $method] 或者 Foo::bar 這樣的類型。

注冊(cè)多個(gè)消息處理器

有時(shí)候你可能需要對(duì)消息記日志,或者一系列的自定義操作,你可以注冊(cè)多個(gè) handler

<?php

$server = $officialAccount->server;

$server->push(MessageLogHandler::class);
$server->push(MessageReplyHandler::class);
$server->push(OtherHandler::class);
$server->push(...);

注意:

  • 最后一個(gè)非空返回值將作為最終應(yīng)答給用戶的消息內(nèi)容,如果中間某一個(gè) handler 返回值 false, 則將終止整個(gè)調(diào)用鏈,不會(huì)調(diào)用后續(xù)的 handlers
  • 傳入的自定義 Handler 類需要實(shí)現(xiàn) \EasySwoole\WeChat\Kernel\Contracts\EventHandlerInterface 接口。

注冊(cè)指定消息類型的消息處理器

我們想對(duì)特定類型的消息應(yīng)用不同的處理器,可以在第二個(gè)參數(shù)傳入類型篩選:

注意,第二個(gè)參數(shù)必須是 \EasySwoole\WeChat\Kernel\Messages\Message 類的常量。

<?php

use EasySwoole\WeChat\Kernel\Messages\Message;

$server = $officialAccount->server;

$server->push(ImageMessageHandler::class, Message::IMAGE); // 圖片消息
$server->push(TextMessageHandler::class, Message::TEXT); // 文本消息

// 同時(shí)處理多種類型的處理器
// 當(dāng)消息為 三種中任意一種都可觸發(fā)
$server->push(MediaMessageHandler::class, [Message::VOICE, Message::VIDEO, Message::SHORT_VIDEO]);

請(qǐng)求消息的屬性

當(dāng)你接收到用戶發(fā)來(lái)的消息時(shí),可能會(huì)提取消息中的相關(guān)屬性,參考:

請(qǐng)求消息基本屬性 (以下所有消息都有的基本屬性):

  • ToUserName 接收方帳號(hào)(該公眾號(hào) ID
  • FromUserName 發(fā)送方帳號(hào)(OpenID, 代表用戶的唯一標(biāo)識(shí))
  • CreateTime 消息創(chuàng)建時(shí)間(時(shí)間戳)
  • MsgId 消息 ID64 位整型)

文本:

  • MsgType text
  • Content 文本消息內(nèi)容

圖片:

  • MsgType image
  • MediaId 圖片消息媒體 id,可以調(diào)用多媒體文件下載接口拉取數(shù)據(jù)。
  • PicUrl 圖片鏈接

語(yǔ)音:

  • MsgType voice
  • MediaId 語(yǔ)音消息媒體 id,可以調(diào)用多媒體文件下載接口拉取數(shù)據(jù)。
  • Format 語(yǔ)音格式,如 amrspeex
  • Recognition * 開(kāi)通語(yǔ)音識(shí)別后才有

請(qǐng)注意,開(kāi)通語(yǔ)音識(shí)別后,用戶每次發(fā)送語(yǔ)音給公眾號(hào)時(shí),微信會(huì)在推送的語(yǔ)音消息 XML 數(shù)據(jù)包中,增加一個(gè) Recongnition 字段

視頻:

  • MsgType video
  • MediaId 視頻消息媒體 id,可以調(diào)用多媒體文件下載接口拉取數(shù)據(jù)。
  • ThumbMediaId 視頻消息縮略圖的媒體 id,可以調(diào)用多媒體文件下載接口拉取數(shù)據(jù)。

小視頻:

  • MsgType shortvideo
  • MediaId 視頻消息媒體 id,可以調(diào)用多媒體文件下載接口拉取數(shù)據(jù)。
  • ThumbMediaId 視頻消息縮略圖的媒體 id,可以調(diào)用多媒體文件下載接口拉取數(shù)據(jù)。

事件:

  • MsgType event
  • Event 事件類型 (如:subscribe (訂閱)、unsubscribe (取消訂閱) ..., CLICK 等)

掃描帶參數(shù)二維碼事件:

  • EventKey 事件 KEY 值,比如:qrscene_123123qrscene_ 為前綴,后面為二維碼的參數(shù)值
  • Ticket 二維碼的 ticket,可用來(lái)?yè)Q取二維碼圖片

上報(bào)地理位置事件:

  • Latitude 23.137466 地理位置緯度
  • Longitude 113.352425 地理位置經(jīng)度
  • Precision 119.385040 地理位置精度

自定義菜單事件:

  • EventKey 事件 KEY 值,與自定義菜單接口中 KEY 值對(duì)應(yīng),如:CUSTOM_KEY_001www.qq.com

地理位置:

  • MsgType location
  • Location_X 地理位置緯度
  • Location_Y 地理位置經(jīng)度
  • Scale 地圖縮放大小
  • Label 地理位置信息

鏈接:

  • MsgType link
  • Title 消息標(biāo)題
  • Description 消息描述
  • Url 消息鏈接

文件:

  • MsgType file
  • Title 文件名
  • Description 文件描述,可能為 null
  • FileKey 文件 KEY
  • FileMd5 文件 MD5
  • FileTotalLen 文件大小,單位字節(jié)

回復(fù)消息

回復(fù)的消息可以為 null,此時(shí) SDK 會(huì)返回給微信一個(gè) "SUCCESS",你也可以回復(fù)一個(gè)普通字符串,比如:歡迎關(guān)注 EasySwoole WeChat.,此時(shí) SDK 會(huì)對(duì)它進(jìn)行一個(gè)封裝,產(chǎn)生一個(gè) \EasySwoole\WeChat\Kernel\Messages\Text 類型的消息并在最后的 $officialAccount->server->serve(); 時(shí)生成對(duì)應(yīng)的消息 XML 格式。

如果你想返回一個(gè)自己手動(dòng)拼的原生 XML 格式消息,請(qǐng)返回一個(gè) \EasySwoole\WeChat\Kernel\Messages\Raw 實(shí)例即可。

消息轉(zhuǎn)發(fā)給客服系統(tǒng)

參見(jiàn):多客服消息轉(zhuǎn)發(fā)

關(guān)于消息的使用,請(qǐng)參考 消息 章節(jié)。

主站蜘蛛池模板: 亚洲性网址 | 久久91精品国产91久久跳舞 | 大时代电视剧香港40集在线观看 | 日韩欧美精品一区二区 | 免费人成在线观看欧美精品 | 久久久| 欧美 日韩 国产 一区 | 成人免费高清电影 | 精品人伦一区二区色婷婷 | 精品一区三区 | 女18一级大黄毛片免费女人 | 在线免费观看中文字幕 | 一区二区三区四区在线免费观看 | 欧美国产一级 | av看片| 精品久久在线观看 | 中文字慕一本一二本迫 | 欧美顶级毛片在线播放 | 国产高清免费在线 | 一区二区三区福利视频 | 亚洲第一区在线观看 | 日韩不卡免费视频 | 最新中文字幕在线播放 | 一级毛片在线免费播放 | 91免费视 | 三级国产| 一区二区三区四区视频在线观看 | 日韩成人一区二区 | www.黄色软件 | 日韩中文字 | 成人毛片视频在线播放 | 久久精品国产精品亚洲毛片 | 天堂中文在线免费观看 | 朋友的妈妈10 | 一级免费黄色 | 日韩中文字幕在线播放 | 日本一区二区视频 | 久久二| 成人在线综合网 | 成人免费一级片 | 国产在线一区二区 |