美文网首页
二 Laravel + easeywechat + 图灵机器人

二 Laravel + easeywechat + 图灵机器人

作者: 分你一半美好 | 来源:发表于2017-11-24 17:13 被阅读0次

老板让直接开发,没时间看微信那么多的文档,很蛋疼,直接拿easeywechat开搞了,但是直接懵逼了!这TM啥,这TM又是啥。。大概就这样吧
easeywechat 地址,composer 下载看文档就好

首先原理

在我上一篇文章中说了基本配置,其中填写的那个url是 客户各种操作时唯一的回调地址(只有一个地址?客户那么多操作怎么分辨啊,我平时开发都有好多地址的。我第一反应就这,然后才知道,回调的时候会把各种操作当成事件返回的)根据回调地址中的事件判断,我们来区分是信息内容还是 点击事件等

看我下面的代码有一点是前提,配置的url必须是到这个 serve()方法的;

我的地址 http://www.baidu.com/api/wechat
我的api中的路由

Route::group(['namespace' => 'Wechat'],function(){
    Route::any('/wechat', 'WeChatController@serve');
});

上干货

<?php

namespace App\Http\Controllers\Wechat;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Log;
use EasyWeChat\Foundation\Application;
use EasyWeChat\Message\Text;
use EasyWeChat\Message\Image;
use EasyWeChat\Message\Video;
use EasyWeChat\Message\Voice;
use EasyWeChat\Message\News;
use EasyWeChat\Message\Article;
use EasyWeChat\Message\Material;
use EasyWeChat\Message\Raw;

class WeChatController extends Controller
{
    protected $options;

    public function __construct()
    {
        $this->options = [
            'debug' => true,
            'app_id' => '',
            'secret' => '',
            'token' => '',
            // 'aes_key' => null, // 可选
            'log' => [
                'level' => 'debug',
                'file' => '/tmp/easywechat.log', // XXX: 绝对路径!!!!
            ],

        ];
    }

    /**
     * 处理微信的请求消息
     *
     * @return string
     */
    public function serve()
    {
        Log::info('request arrived.'); # 注意:Log 为 Laravel 组件,所以它记的日志去 Laravel 日志看,而不是 EasyWeChat 日志

        $app = new Application($this->options);
        $server = $app->server;
        //用户实例,可以通过类似$user->nickname这样的方法拿到用户昵称,openid等等
        $user = $app->user;

        $server->setMessageHandler(function ($message) {
            //对用户发送的消息根据不同类型进行区分处理
            switch ($message->MsgType) {
                //事件类型消息(点击菜单、关注、扫码),略
                case 'event':
                    switch ($message->Event) {
                        case 'subscribe':
                            // code...
                            break;

                        default:
                            // code...
                            break;
                    }
                    break;
                //文本信息处理
                case 'text':
                    //获取到用户发送的文本内容
                    $content = $message->Content;
                    //发送到图灵机器人接口
                    $url = "http://www.tuling123.com/openapi/api?key= 你的key &info=".$content;
                    //获取图灵机器人返回的内容
                    $content = file_get_contents($url);
                    //对内容json解码
                    $content = json_decode($content);
                    //把内容发给用户
                    return new Text(['content' => $content->text]);
                    break;
                //图片信息处理,略
                case 'image':
                    $mediaId = $message->MediaId;
                    return new Image(['media_id' => $mediaId]);
                    break;
                //声音信息处理,略
                case 'voice':
                    $mediaId = $message->MediaId;
                    return new Voice(['media_id' => $mediaId]);
                    break;
                //视频信息处理,略
                case 'video':
                    $mediaId = $message->MediaId;
                    return new Video(['media_id' => $mediaId]);
                    break;
                //坐标信息处理,略
                case 'location':
                    return new Text(['content' => $message->Label]);
                    break;

                //链接信息处理,略
                case 'link':
                    return new Text(['content' => $message->Description]);
                    break;

                default:
                    break;
            }
        });

        return $app->server->serve();
    }

}

粘贴复制就行,去爽爽吧!还带了图灵机器人哦
最后感谢博客快乐逍遥

相关文章

网友评论

      本文标题:二 Laravel + easeywechat + 图灵机器人

      本文链接:https://www.haomeiwen.com/subject/juyfbxtx.html