PHP实现企业微信 会话存档功能

想要实现企微会话存档的功能,但企微官方提供的SDK,只有C++和JAVA的版本。要使用PHP实现该功能,就要借助民间大佬的智慧。

PHP版本的SDK

  • github上的大佬 @majiameng, 实现了php会话存档SDK,下面是github地址:

https://github.com/majiameng/wework-finance-sdk-php

一、使用要求:

  • 需要用到php扩展 ext-wxwork_finance_sdk 或者 ext-ffi,二选一即可。

我这里使用的是 wxwork_finance_sdk扩展。

1.1 安装php7-wxwork-finance-sdk

扩展地址:https://github.com/pangdahua/php7-wxwork-finance-sdk

C版本SDK地址:https://wwcdn.weixin.qq.com/node/wework/images/sdk_20200401.zip

bash 复制代码
#  1.将php的SDK下载到服务器
 git clone https://github.com/pangdahua/php7-wxwork-finance-sdk.git
 # 2.下载C版本的SDK
 wget https://wwcdn.weixin.qq.com/node/wework/images/sdk_20200401.zip
 # 3.使用unzip解压zip包
 unzip sdk_20200401.zip
 # 4.进入 php7-wxwork-finance-sdk目录
 cd php7-wxwork-finance-sdk
 # 5.使用phpize进行扩展编译
 phpize # 宝塔的路径 /www/server/php/74/bin/phpize
 # 6.编译配置
 # /www/server/php/74/bin/php-config 为当前使用的php
 # /www/sdk_20200401/C_sdk 为上面下载的C版本的sdk路径
 ./configure --with-php-config=/www/server/php/74/bin/php-config --with-wxwork-finance-sdk=/www/sdk_20200401/C_sdk
 # 执行编译安装
 make && make install
  • 最终生成扩展文件路径
bash 复制代码
/www/server/php/74/lib/php/extensions/no-debug-non-zts-20190902/wxwork_finance_sdk.so

1.2 将扩展加入php配置中

bash 复制代码
[wxwork_finance_sdk]
extension=/www/server/php/74/lib/php/extensions/no-debug-non-zts-20190902/wxwork_finance_sdk.so
  • 保留后,重启php。

二、在代码中使用,使用框架:tp6

2.1 composer安装sdk代码

bash 复制代码
composer require tinymeng/wework-finance-sdk

2.2 在代码中实现

php 复制代码
<?php
namespace app\controller;

use app\BaseController;
use think\Request;

use tinymeng\WeWorkFinanceSDK\Exception\FinanceSDKException;
use tinymeng\WeWorkFinanceSDK\WxFinanceSDK;

class Session extends BaseController
{
    /**
     * 获取聊天对话记录(会话存档)
     * @param Request $request
     * @return void
     */
    public function history(Request $request)
    {
        // 企业配置
        $corpConfig = [
            'corpid'       => '企业ID',
            'secret'       => '应用密钥',
            'private_keys' => [
                1 => '-----BEGIN PRIVATE KEY-----
        -----END PRIVATE KEY-----',
            ],
            /**
             * includePath(使用php-ffi扩展时)
             * 可选 :默认使用组件内SDK(默认SDK只支持Liunx),如果想使用其他版本SDK,请填写对应SDK路径
             * 官网下载SDK https://developer.work.weixin.qq.com/document/path/91774
             */
            'includePath' => '',
        ];

        // 包配置
        $srcConfig = [
            'default' => 'php-ext',// 两种方式的切换: php-ext 或 php-ffi
        ];

        $seq = $request->param('seq', 1);
        $limit = $request->param('limit', 10);

        try {
            $wxFinanceSDK = WxFinanceSDK::init($corpConfig, $srcConfig);
            // 获取会话记录数据(解密)
            $list = $wxFinanceSDK->getDecryptChatData($seq, $limit);

            foreach ($list as $key => $item) {
                if ($wxFinanceSDK->isMedia($item['msgtype'])) {
                    // 下载媒体资源
                    $list[$key]['media_path'] = $wxFinanceSDK->getDownloadMediaData($item[$item['msgtype']], $item['msgtype']);
                }
            }
            var_dump($list);

        } catch (FinanceSDKException $exception) {
            echo $exception->getMessage();
            exit();
        }
    }


}
相关推荐
BingoGo11 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack11 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo1 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack1 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack2 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo2 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack3 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理4 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
feifeigo1234 天前
matlab画图工具
开发语言·matlab
dustcell.4 天前
haproxy七层代理
java·开发语言·前端