mirror of
https://github.com/w7corp/easywechat.git
synced 2025-01-22 11:32:08 +00:00
更新wiki
parent
f30bf16513
commit
df45502742
23
多客服的消息转发.md
Normal file
23
多客服的消息转发.md
Normal file
@ -0,0 +1,23 @@
|
||||
多客服的消息转发绝对是超级的简单:
|
||||
|
||||
```php
|
||||
|
||||
use Overtrue\Wechat\Services\Message;
|
||||
|
||||
// 转发收到的消息给客服
|
||||
$wechat->on('message', function($message) {
|
||||
return Message::make('transfer');
|
||||
});
|
||||
|
||||
$result = $wechat->serve();
|
||||
|
||||
echo $result;
|
||||
```
|
||||
|
||||
当然,你也可以指定转发给某一个客服:
|
||||
|
||||
```php
|
||||
return Message::make('transfer')->account($account);
|
||||
// 或者
|
||||
return Message::make('transfer')->to($account);
|
||||
```
|
22
安装.md
Normal file
22
安装.md
Normal file
@ -0,0 +1,22 @@
|
||||
环境要求: PHP >= 5.3.0
|
||||
|
||||
1. 使用composer:
|
||||
|
||||
```shell
|
||||
composer require overtrue/wechat
|
||||
```
|
||||
|
||||
2. 手动安装
|
||||
|
||||
下载[最新版zip包](https://github.com/overtrue/wechat/archive/master.zip) 或者下载指定版本:https://github.com/overtrue/wechat/releases
|
||||
|
||||
然后引入根目录的autoload.php即可:
|
||||
|
||||
```php
|
||||
<?php
|
||||
|
||||
require "wechat/autoload.php"; // 路径请修改为你具体的实际路径
|
||||
|
||||
use Overtrue\Wechat\Wechat;
|
||||
...
|
||||
```
|
23
客服管理与发送消息.md
Normal file
23
客服管理与发送消息.md
Normal file
@ -0,0 +1,23 @@
|
||||
微信的客服才能发送消息或者群发消息,而且还有时效限制,真恶心的说。。。
|
||||
|
||||
```php
|
||||
$staff = $wechat->staff;
|
||||
```
|
||||
|
||||
+ `$staff->all();` 获取所有客服账号
|
||||
+ `$staff->allOnline();` 获取所有在线的客服账号
|
||||
+ `$staff->create($mail, $nickname, $password);` 添加客服帐号
|
||||
+ `$staff->update($mail, $nickname, $password);` 修改客服帐号
|
||||
+ `$staff->delete($mail, $nickname, $password);` 删除客服帐号
|
||||
+ `$staff->avatar($mail, $avatarPath);` 设置客服帐号的头像
|
||||
+ `$staff->send($message)->to($openId);` 主动发送消息给用户
|
||||
+ 群发消息
|
||||
|
||||
```php
|
||||
// 所有人
|
||||
$staff->send($message)->toAll();
|
||||
// 指定组
|
||||
$staff->send($message)->toGroup($groupId);
|
||||
// 多个人
|
||||
$staff->send($message)->toThem(array($openId, $openId, ...));
|
||||
```
|
35
接收消息与回复.md
Normal file
35
接收消息与回复.md
Normal file
@ -0,0 +1,35 @@
|
||||
消息的监听再简单不过了,你不需要像其它SDK一样麻烦,这将会是前所未有的简单,你可以选择监听所有类型或者指定某种类型,以及作出相应的响应,比如回复一条应答消息。
|
||||
|
||||
```php
|
||||
$wechat->on('message', callable $callback); // 全部类型
|
||||
// or
|
||||
$wechat->on('message', string $messageType, callable $callback); // 只监听指定类型
|
||||
```
|
||||
|
||||
参数说明
|
||||
|
||||
- `$messageType` string, 指定要处理的消息类型,ex:`image`
|
||||
- `$callback` callable, 回调函数,closure匿名函数,或者一切可调用的方法或者函数
|
||||
|
||||
example:
|
||||
|
||||
```php
|
||||
|
||||
use Overtrue\Wechat\Services\Message;
|
||||
|
||||
// 监听所有类型
|
||||
$wechat->on('message', function($message) {
|
||||
return Message::make('text')->content('您好!');
|
||||
});
|
||||
|
||||
// 监听指定类型
|
||||
$wechat->on('message', 'image', function($message) {
|
||||
return Message::make('text')->content('我们已经收到您发送的图片!');
|
||||
});
|
||||
|
||||
$result = $wechat->serve();
|
||||
|
||||
echo $result;
|
||||
```
|
||||
|
||||
关于更多消息内容请参考:
|
53
消息的使用.md
Normal file
53
消息的使用.md
Normal file
@ -0,0 +1,53 @@
|
||||
我把微信的API里的所有“消息”都按类型抽象出来了,也就是说,你不用区分它是回复消息还是主动推送消息,免去了你去手动拼装微信那帮SB那么恶心的XML以及乱七八糟命名不统一的JSON了,我帮忙你承受这份苦。
|
||||
|
||||
### 消息的类型及属性
|
||||
|
||||
| 消息类型 | 类型名称 | 属性 | 除属性自身外提供的方法 |
|
||||
|----------|----------|----------------------------------------------------------------------------------|-------------------------------------------|
|
||||
| 文本 | `text` | `content` 内容 | |
|
||||
| 图片 | `image` | `media_id` 媒体资源id | `media($path)` |
|
||||
| 声音 | `voice` | `media_id` 媒体资源id | `media($path)` |
|
||||
| 音乐 | `music` | `title` 标题 <br>`description` 描述 <br>`url` 音乐URL <br>`hq_url` 高清URL <br>`thumb_media_id` 封面资源id | `thumb($path)` |
|
||||
| 视频 | `video` | `title` 标题 <br>`description` 描述 <br>`media_id` 媒体资源id <br>`thumb_media_id` 封面资源id | `media($path)` <br>`thumb($path)` |
|
||||
| 位置 | `location` | `lat` 地理位置纬度 <br>`lon` 地理位置经度 <br>`scale` 地图缩放大小 <br>`label` 地理位置信息 | |
|
||||
| 链接 | `link` | `title` 标题 <br>`description` 描述<br>url 链接URL | |
|
||||
|
||||
### 创建消息
|
||||
|
||||
**请注意:消息类的命名空间为 `Overtrue\Wechat\Services\Message`**
|
||||
|
||||
```php
|
||||
<?php
|
||||
|
||||
use Overtrue\Wechat\Wechat;
|
||||
use Overtrue\Wechat\Services\Message;
|
||||
|
||||
$options = array(...);
|
||||
|
||||
$wechat = Wechat::make($options);
|
||||
|
||||
$wechat->on('event', 'subscribe', function($event){
|
||||
return Message::make('text')->content('您好!欢迎关注overtrue');
|
||||
});
|
||||
```
|
||||
|
||||
这里有一点需要注意,当属性带下划线的时候,方法名是支持两种的:`media_id()` 或者 `mediaId()` 都一样。
|
||||
|
||||
### 上传媒体文件
|
||||
|
||||
|
||||
```php
|
||||
$message = Message::make('image')->media('D:/test/demo.jpg');
|
||||
```
|
||||
|
||||
媒体文件你不用上传,也就是说media_id是我来维护,你直接传本地文件就好了。
|
||||
方法`media($file)`会上传文件然后赋值到`media_id`属性。如果想要获取上传后的media_id:
|
||||
|
||||
```php
|
||||
$mediaId = $message->media_id;
|
||||
```
|
||||
|
||||
#### 这里有两个方法用于设置媒体文件:
|
||||
|
||||
- `media($file)` 对应设置 `media_id`
|
||||
- `thumb($file)` 对应设置 `thumb_media_id`
|
28
用户与用户组管理.md
Normal file
28
用户与用户组管理.md
Normal file
@ -0,0 +1,28 @@
|
||||
## 用户
|
||||
|
||||
```php
|
||||
$userService = $wechat->user;
|
||||
```
|
||||
|
||||
+ `$userService->get($openId);` 获取用户信息
|
||||
+ `$userService->all($nextOpenId = null);` 获取用户列表, $nextOpenId 可选
|
||||
+ `$userService->remark($openId, $remark);` 修改用户备注, 返回boolean
|
||||
|
||||
example:
|
||||
|
||||
```php
|
||||
$user = $userService->get($openId);
|
||||
|
||||
echo $user->nickname;
|
||||
```
|
||||
|
||||
## 用户组
|
||||
|
||||
```php
|
||||
$group = $wechat->group;
|
||||
```
|
||||
|
||||
+ `$group->all();` 获取所有分组
|
||||
+ `$group->update($groupId, $name);` 修改分组信息
|
||||
+ `$group->moveUser($openId, $groupId);` 移动单个用户到指定分组
|
||||
+ `$group->moveUsers(array $openIds, $groupId);` 批量移动用户到指定分组
|
37
监听微信事件.md
Normal file
37
监听微信事件.md
Normal file
@ -0,0 +1,37 @@
|
||||
所有的事件都可以很方便的监听与处理,与监听消息一样,同样支持监听全部类型或者指定类型。
|
||||
关于事件类型请参考微信官方文档:http://mp.weixin.qq.com/wiki/2/5baf56ce4947d35003b86a9805634b1e.html
|
||||
|
||||
```php
|
||||
$wechat->on('event', callable $callback);
|
||||
// or
|
||||
$wechat->on('event', string $eventType, callable $callback);
|
||||
```
|
||||
|
||||
参数说明
|
||||
|
||||
- `$eventType` string, 指定要处理的消息类型,ex:`image`
|
||||
- `$callback` callable, 回调函数,closure匿名函数,或者一切可调用的方法或者函数
|
||||
|
||||
example:
|
||||
|
||||
```php
|
||||
|
||||
use Overtrue\Wechat\Services\Message;
|
||||
|
||||
// 监听所有事件
|
||||
$wechat->on('event', function($event) {
|
||||
error_log('收到取消关注事件,取消关注者openid: ' . $event['FromUserName']);
|
||||
});
|
||||
|
||||
// 只监听指定类型事件
|
||||
$wechat->on('event', 'subscribe', function($event) {
|
||||
|
||||
error_log('收到关注事件,关注者openid: ' . $event['FromUserName']);
|
||||
|
||||
return Message::make('text')->content('感谢您关注');
|
||||
});
|
||||
|
||||
$result = $wechat->serve();
|
||||
|
||||
echo $result;
|
||||
```
|
18
签名计算.md
Normal file
18
签名计算.md
Normal file
@ -0,0 +1,18 @@
|
||||
Wechat基类提供了计算签名的方法:
|
||||
|
||||
```php
|
||||
$wechat->signature($params);
|
||||
```
|
||||
|
||||
example:
|
||||
|
||||
```php
|
||||
$params = array(
|
||||
'token' => 'mock_token',
|
||||
'time' => time(),
|
||||
'nonce' => 'hello',
|
||||
);
|
||||
|
||||
$signature = $wechat->signature($params);
|
||||
// 313f67a0d1af958128c6761230fa1f1282ed027e
|
||||
```
|
24
网页授权.md
Normal file
24
网页授权.md
Normal file
@ -0,0 +1,24 @@
|
||||
```php
|
||||
$wechat->auth;
|
||||
```
|
||||
|
||||
+ 生成授权链接
|
||||
|
||||
```php
|
||||
// 生成并返回
|
||||
$wechat->auth->url($to, $state, $scope);
|
||||
// 直接跳转
|
||||
$wechat->auth->redirect($to, $state, $scope); 直接跳转
|
||||
```
|
||||
|
||||
+ 判断是否已经授权
|
||||
|
||||
```php
|
||||
$wechat->auth->authorized();
|
||||
```
|
||||
|
||||
+ 获取授权用户
|
||||
|
||||
```php
|
||||
$wechat->auth->user();
|
||||
```
|
17
自定义缓存.md
Normal file
17
自定义缓存.md
Normal file
@ -0,0 +1,17 @@
|
||||
微信的access_token是不能太频繁的调用的,所以需要缓存,本SDK默认使用文件缓存,文件会创建在代码运行环境的临时目录里,使用[sys_get_temp_dir()](http://php.net/manual/zh/function.sys-get-temp-dir.php) 函数获取的临时目录下。
|
||||
|
||||
如果你需要自定义缓存方式,那么Wechat提供了以下两个方法:
|
||||
|
||||
```php
|
||||
// 写入
|
||||
$wechat->cache->setter(function($key, $value, $lifetime){
|
||||
return your_custom_set_cache($key, $value, $lifetime);
|
||||
});
|
||||
|
||||
// 读取
|
||||
$wechat->cache->getter(function($key){
|
||||
return your_custom_get_cache($key);
|
||||
});
|
||||
```
|
||||
|
||||
当你的`getter` 没有返回缓存的值时,会重新请求access_token。
|
9
自定义菜单.md
Normal file
9
自定义菜单.md
Normal file
@ -0,0 +1,9 @@
|
||||
```php
|
||||
$wechat->menu;
|
||||
```
|
||||
|
||||
+ `$menu->get();` 读取菜单
|
||||
+ `$menu->set($menus);` 设置菜单
|
||||
+ `$menu->delete();` 删除菜单
|
||||
|
||||
> 待补充...
|
6
获取JSSDK的Ticket.md
Normal file
6
获取JSSDK的Ticket.md
Normal file
@ -0,0 +1,6 @@
|
||||
```php
|
||||
$wechat->ticket->js();
|
||||
$wechat->ticket->card();
|
||||
```
|
||||
|
||||
> 待补充
|
26
配置与初始化.md
Normal file
26
配置与初始化.md
Normal file
@ -0,0 +1,26 @@
|
||||
本项目的用法目前网上其它SDK用法不同,这里只需要像下面这样配置一次完成:
|
||||
|
||||
```php
|
||||
<?php
|
||||
|
||||
use Overtrue\Wechat\Wechat;
|
||||
|
||||
$options = [
|
||||
'appId' => 'Your app id',
|
||||
'secret' => 'Your secret'
|
||||
'token' => 'Your token',
|
||||
'encodingAESKey' => 'Your encoding AES Key' // optional
|
||||
];
|
||||
|
||||
$wechat = Wechat::make($options);
|
||||
|
||||
$server = $wechat->on('message', function($message){
|
||||
error_log("收到来自'{$message['FromUserName']}'的消息:" . $message['Content']);
|
||||
});
|
||||
|
||||
$result = $wechat->serve();
|
||||
|
||||
// 您可以直接echo 或者返回给框架
|
||||
echo $result;
|
||||
```
|
||||
`$wechat->serve()` 方法返回的值为字符串或者空,用于应答微信服务器的推送,消息或者事件等。比如你如果使用的是Laravel,你这里就应该 `return $wechat->serve();`
|
15
错误处理.md
Normal file
15
错误处理.md
Normal file
@ -0,0 +1,15 @@
|
||||
所有的错误均使用异常抛出
|
||||
|
||||
```php
|
||||
$wechat->error(function($error){
|
||||
error_log("code:" . $error->getCode . ' error: ' . $error->getMessage());
|
||||
});
|
||||
```
|
||||
|
||||
这里的回调函数的第一个参数为继承自Exception的异常类,所以你可以使用Exception的所有方法。
|
||||
|
||||
- `$error->getCode()` 错误码,ex: `40001`
|
||||
- `$error->getMessage()` 错误消息
|
||||
- `$error->getLine()` 错误行(当然这个没啥意义)
|
||||
|
||||
当请求微信服务器失败或者返回错误时同样会触发此逻辑,错误代码请参考:http://mp.weixin.qq.com/wiki/17/fa4e1434e57290788bde25603fa2fcbd.html
|
Loading…
Reference in New Issue
Block a user