Coder Social home page Coder Social logo

dumi_doc's People

Contributors

day253 avatar eccozhou avatar leostc avatar mumingv avatar quickming avatar wwwppp0801 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dumi_doc's Issues

【教程】如何使用Laravel 开发Dueros 技能

基础环境搭建

第一步

自行安装PHP 7.1.* 和 Nginx
相关教程: https://github.com/mmjjb/Centos7-PHP7.1-Nginx
为了开发简单,可以关闭SElinux
按照这个教程安装完成之后,还需要安装一下后面会用到的依赖

yum --enablerepo=remi-safe -y install php71-php-zip

第二步

安装composer, 方便安装相关PHP 开发依赖包,具体链接参考此处: https://pkg.phpcomposer.com/#how-to-install-composer
composer 建议全局安装

php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer

修改composer服务 修改之后,可以有效加速相关依赖包的安装

composer config -g repo.packagist composer https://packagist.phpcomposer.com

第三步

安装Laravel 命令

composer global require "laravel/installer"

这个命令会安装一个laravel 命令,如果是最新的composer,命令应该会在$HOME/.config/composer/vendor/bin 文件夹下面,所以最好是把$HOME/.config/composer/vendor/bin 加入到PATH中去

第四步

创建一个Laravel 项目
我们可以创建一个/www/sites的目录来放网站源码【如果开启了SElinux,可以直接在/var/www 目录下面创建项目】

cd /www/sites/
laravel new dueros.bot

第五步

配置laravel 项目程序目录,很重要 不然会报错的;
给这两个文件配置读写权限:storage 目录和 bootstrap/cache 目录应该允许 Web 服务器写入,否则 Laravel 将无法运行。

cd /www/sites/dueros.bot
chmod -R 777 storage
chmod -R 777 bootstrap/cache

第六步

配置Nginx Server

server {
    listen 80;
    server_name www.domain.com;
    
    #charset koi8-r;
    #access_log  /www/logs/www.domain.com.access.log  main;
    #error_log  /www/logs/www.domain.com-error.log error;
    root /www/sites/dueros.bot/public/;
    index index.php;
    location / {
            try_files $uri $uri/ /index.php?$query_string;
    }
    location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
            # With php5-cgi alone:
            fastcgi_pass 127.0.0.1:9000;
            # With php5-fpm:
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SERVER_NAME $host;
    }
}

重新启动一下nginx服务,这样laravel的基础项目我们就创建好了

sudo service nginx reload

重启之后,访问nginx server 里面配置域名,应该就可以访问到一个默认如下的网页了
image

现在就可以开始做和Dueros 相关的工作了

请你可以先在Dueros的DBP平台创建好一个测试技能待用,
现在所有的工作都在基于上面的/www/sites/dueros.bot 目录下完成了。
我们先查看一下这个目录都包含那些文件

drwxrwxr-x  6 somebody somebody   4096 Oct 11 09:57 app
-rw-rw-r--  1 somebody somebody   1686 Oct 11 09:57 artisan
drwxrwxr-x  3 somebody somebody   4096 Oct 11 09:57 bootstrap
-rw-rw-r--  1 somebody somebody   1380 Oct 11 09:57 composer.json
-rw-rw-r--  1 somebody somebody 138803 Oct 11 09:57 composer.lock
drwxrwxr-x  2 somebody somebody   4096 Oct 11 09:57 config
drwxrwxr-x  5 somebody somebody   4096 Oct 11 09:57 database
-rw-rw-r--  1 somebody somebody   1129 Oct 11 09:57 package.json
-rw-rw-r--  1 somebody somebody   1040 Oct 11 09:57 phpunit.xml
drwxrwxr-x  4 somebody somebody   4096 Oct 11 09:57 public
drwxrwxr-x  5 somebody somebody   4096 Oct 11 09:57 resources
drwxrwxr-x  2 somebody somebody   4096 Oct 11 09:57 routes
-rw-rw-r--  1 somebody somebody    563 Oct 11 09:57 server.php
drwxrwxrwx  5 somebody somebody   4096 Oct 11 09:57 storage
drwxrwxr-x  4 somebody somebody   4096 Oct 11 09:57 tests
drwxrwxr-x 36 somebody somebody   4096 Oct 11 09:57 vendor
-rw-rw-r--  1 somebody somebody    549 Oct 11 09:57 webpack.mix.js
-rw-rw-r--  1 somebody somebody 219070 Oct 11 09:57 yarn.lock

第七步

配置dueros 相关的composer 设置

命令行下执行此命令

composer config --global --auth http-basic.repo.packagist.com kira da3f48ecf74813e05fdfc7d5cb4f8d85a5fa265dff3dfe05057c79e0666b 

修改composer.json文件
找到dueros.bot 目录下的composer.json ,修改此文件,增加此内容

"repositories": [
        {
            "type": "composer",
            "url": "https://repo.packagist.com/dueros/"
        },
        {
            "packagist.org": false
        }
]

增加后的文件大概如下,可以参考一下:

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "*****": "****", //省略若干项
    "config": {
        "preferred-install": "dist",
        "sort-packages": true,
        "optimize-autoloader": true
    },
    // 增加下面这一段
    "repositories": [
        {
            "type": "composer",
            "url": "https://repo.packagist.com/dueros/"
        },
        {
            "packagist.org": false
        }
    ]
}

执行以下命令安装dueros的bot-sdk

composer require dueros/bot-sdk:2.0.*@dev  
composer update mirrors (更新bot-sdk时使用) 

第八步

现在我们就来开发dueros的程序
我们先创建一个放Dueros 程序的目录, 执行下面的命令

cd /www/sites/dueros.bot/app/Http/Controllers
mkdir Dueros

我们把程序都放在Dueros这个目录中
进入Dueros 目录

cd Dueros

新建一个文件Bot.php 内容如下

<?php

namespace App\Http\Controllers\Dueros;

use Baidu\Duer\Botsdk\Bot as DuerosBot;

class Bot extends DuerosBot
{
    public function __construct($postData = [])
    {
        parent::__construct($postData);
        $this->addHandler('LaunchRequest', function () {
            return [
                    'card'         => null,
                    'outputSpeech' => 'Hi!',
                    'directives'   => [],
                    'resource'     => null,
                    'reprompt'     => null,
                ];
        });
        $this->addHandler('SessionEndedRequest', function () {
            return [
                    'card'         => null,
                    'outputSpeech' => 'Bye!',
                    'directives'   => [],
                    'resource'     => null,
                    'reprompt'     => null,
                ];
        });
        $this->addHandler('#say_hello', function () {
            return [
                'card'         => null,
                'outputSpeech' => 'Hello Word!',
                'directives'   => [],
                'resource'     => null,
                'reprompt'     => null,
            ];
        });
    }
}

继续在这个目录新建一个文件BotController.php, 这个文件将用来接收相关的网络请求,程序如下

<?php

namespace App\Http\Controllers\Dueros;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;

class BotController extends Controller
{

    public function post(Request $request)
    {
        $postData = file_get_contents('php://input');
        Log::info($postData);
        $bot = new Bot();

        return $bot->run();
    }
}

然后修改Laravel的路由配置,来接收post 请求
首先进入这个目录

cd /www/sites/dueros.bot/routes/

然后修改里面的api.php, 添加以下路由

Route::group([
        'namespace' => 'Dueros',
], function () {
    Route::post('/hi', 'BotController@post');
});

至此我们已经开发完成

第九步

现在我们就可以开始测试了,把路径填入到Dueros DBP开发平台的webhook 服务里面。路径地址型如: http://www.domain.com/api/hi
你也可以使用Postman 直接发送POST 请求到此地址http://www.domain.com/api/hi进行测试

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.