SDK安装及技能创建

介绍SDK运行环境、安装过程以及如何创建技能。

SDK安装

运行环境

类别 内容
操作系统 Linux
PHP 5.4.0及以上版本,需要开启open ssl扩展

安装过程

SDK采用PSR-4规范自动加载,执行如下命令进行安装。

composer require dueros/bot-sdk 

安装过程中常见问题

  1. 命令执行过程中可能会出现如下错误提示。

    [RuntimeException]
    Failed to clone https://github.com/dueros/bot-sdk.git via https, ssh protocols, aborting.
    - https://github.com/dueros/bot-sdk.git
    error:  while accessing https://github.com/dueros/bot-sdk.git/info/refs
    
    fatal: HTTP request failed
    - git@github.com:dueros/bot-sdk.git
    no kex alg
    fatal: The remote end hung up unexpectedly

    问题原因是无法通过网站https://github.com/dueros/bot-sdk获取镜像文件。可以修改~/.composer/config.json文件,将镜像地址修改为https://packagist.laravel-china.org,请按照下面的代码进行修改。

    {
    "config": {},
    "repositories": {
        "packagist": {
            "type": "composer",
            "url": "https://packagist.laravel-china.org"
        }
    }
    }

如何创建技能

下面以创建闹钟技能为例,讲述技能的创建过程。

  1. 新建一个php文件,如Bot.php,打开文件。
  2. 包含autoload.php文件,代码如下。
    require 'vendor/autoload.php';
  3. 继承“Baidu\Duer\Botsdk\Bot”类,代码如下。
    class Bot extends Baidu\Duer\Botsdk\Bot{
      public function __construct($postData = []) {
         parent::__construct($postData); 
       /* DuerOS和技能之间通讯需要进行签名验证,PHP需要开启open ssl扩展*/
       $this->certificate->enableVerifyRequestSign();
      }
    }
  4. 通过addIntentHandler函数创建处理闹钟的意图函数。在构造函数中添加如下代码。
    use \Baidu\Duer\Botsdk\Card\TextCard;
    $this->addIntentHandler('remind', function(){
      $remindTime = $this->getSlot('remind_time');
      if($remindTime) {
          $card = new TextCard('创建中');
          return [
              'card' => $card,
          ];
      }
    });

    支持传入成员函数名。

    $this->addIntentHandler('remind', 'create');
    public function create(){
      $remindTime = $this->getSlot('remind_time');
          if($remindTime) {
          $card = new TextCard('创建中');
          return [
              'card' => $card,
          ];
      } 
    }

闹钟技能创建成功,其他技能也可以参考上面四步进行创建。