dueros php,【Dueross|技能进修】家居控制-服务端开发

前面讲解了如何配置技能的意图、常用表达语、创建槽位、创建字典。接下来讲解技能平台的服务端开发,撸起袖子,撸代码的时间又到了。

1、回顾上文

上一篇结尾讲解到了配置服务,如下图:

4af9f21919de46dd87cce0c90a27b06c.png

如果自己没有服务器只能选择CFC来调试自己的技能了。今天先讲解如何在自己的服务器上使用PHP SDK来调试自己的技能。后面陆续会讲解Node.js以及百度CFC上Node.js的使用。

2、安装PHP SDK

2.1 点击上图的“PHP SDK 技术文档”链接查看文档。

e334dff4a9f83c59516bd5beee4f5d6f.png

如文档所述:PHP版本的SDK采用PSR-4规范自动加载,执行如下命令进行安装。

composer require dueros/bot-sdk

执行此命令我猜你会出问题,哈哈因为你没有安装composer。

2.2 安装composer

请移步到composer官网或composer中文网查看各个系统的安装教程,安装过程有点慢,请耐心等待。安装完composer后即可下载bot-sdk了

3、SDK目录

3c76fa9b315b7080ef8def58f4a509d9.png

vendor目录里面是PHP SDK的全部内容,

cd vendor/dueros/bot-sdk

ll

4c40beda76a10b0b542edec68fee1866.png

上面是bot-sdk目录结构,这里我们主要看下samples目录,里面有栗子哦。

5d26bbe0029308d1d1e700568d3152b5.png

我们来看下BAE的例子,我们进入查看下目录结构

cd bae-sample

e51155cbfd633e51a7456669c787c254.png

好了,这里我们最关心的其实四src目录的文件,Bot的实现都在src目录,进入src查看

cd src

呵呵,里面只有Bot.php文件,如果你已经看过PHP SDK的文档的话,你就会感觉很简单了。

4、Bot 讲解

4.1 先看下文件内容:

class Bot extends \Baidu\Duer\Botsdk\Bot{

/**

* @param null

* @return null

**/

public function __construct($postData = []) {

parent::__construct($postData);

$this->addHandler('LaunchRequest', function(){

$this->waitAnswer();

$card = new TextCard('欢迎进入');

return [

'card' => $card,

//'outputSpeech' => '欢迎光临'

'outputSpeech' => '欢迎进入',

];

});

//注意注意注意 这里可以换成新的方法addIntentHandler

$this->addHandler('#test.inquiry888', function(){

if($this->request->isDialogStateCompleted()) {

$card = new TextCard('你应该缴税121212');

$this->endDialog();

$directive = new Play('http://other.web.rh01.sycdn.kuwo.cn/f2e1e2e47647e9644a1a736804ac1338/59de0d2c/resource/n2/9/66/3331052726.mp3');

return [

'directives' => [$directive],

'card' => $card,

'outputSpeech' => '你应该缴税121212',

];

}

if(!$this->getSlot('city')) {

$card = new TextCard('这是来自于测试程序返回的结果,请问你在哪?');

$this->nlu->ask('city');

return [

'card' => $card,

'reprompt' => '这是来自于测试程序返回的结果,请问你在哪?',

'outputSpeech' => '这是来自于测试程序返回的结果,请问你在

哪?',

];

}else{

$this->nlu && $this->nlu->setDelegate();

}

});

}

}

挺简单吧。只要照猫画虎就可以实现自己的技能服务。

4.2 主要方法讲解

4.2.1 监听意图

$this->addHandler('#test.inquiry888', function(){

或$this->addIntentHandler('意图标识名')

还记得创建意图时自己填写的意图标识名吗?这里就有用了,这里用来监听你的意图。

4.2.2 获取槽位值

$this->getSlot('槽位标识')

这个方法获取槽位的值,还记得自己意图中的槽位吧,这个方法就会获取到我们意图中的槽位值(也就是我们自定义的词典中的值)

4.2.3 询问槽位

$this->nlu->ask('槽位标识')

这个方法用来询问槽位的值,如果通过getSlot方法没有获取到指定的槽位的值,可以使用此方法来询问用户

4.2.4 槽位信息填充完

确认意图中的槽位信息都填充完,调用

$this->request->isDialogStateCompleted()

当槽位信息都填充完后,我们就可以使用槽位的值来进行自己的业务逻辑了,比如查询信息、控制设备、播放音频等

4.2.5 返回数据

return [

'card' => $card,

'reprompt' => '这是来自于测试程序返回的结果,请问你在哪?',

'outputSpeech' => '这是来自于测试程序返回的结果,请问你在

哪?',

];

当意图处理完后,我们就可以返回信息了。返回数据格式请移步文档。到此PHP SDK就讲解到这里,我的技能就是使用demo改写的。

5、服务配置

我使用的是百度的BAE服务,如何购买BAE服务这里就不多讲了,请移步百度云,BAE我选的是PHP环境,我的配置如下:

e93d25860ae85e52343c11434a385505.png

将服务器端的代码下载下来,默认会有app.conf、index.php两个文件。

6、自己的技能

在代码目录创建src目录

midr src

将vendor/dueros/bot-sdk/samples/bae-sample/src的Bot.php文件拷贝到src目录。

cp vendor/dueros/bot-sdk/samples/bae-sample/src/Bot.php ./src

如步骤4所写的,我们只需要修改下意图标识名改为自己的意图标识名,再修改获取的槽位标识名为自己槽位标示名等即可完成自己的技能。完成后将代码提交的服务器并部署就可以测试自己的技能了。

7、代码分享

class Bot extends \Baidu\Duer\Botsdk\Bot{

/**

* @param null

* @return null

**/

public function __construct($postData = []) {

parent::__construct($postData);

$this->addHandler('LaunchRequest', function(){

$this->waitAnswer();

$card = new TextCard('欢迎使用家居控制!请告诉我您要查找什么智能设备,比如"查找我的空调"');

return [

'card' => $card,

'outputSpeech' => '欢迎使用家居控制!请告诉我您要查找什么智能设备,比如"查找我的空调"',

];

});

/**

* 查找我的设备

*/

$this->addIntentHandler('dueros.device_interface.smart_device.search', function(){

if (!$this->getSlot('deviceName')) {

# code...

$this->nlu->ask('deviceName');

$card = new TextCard('您要查找什么智能设备呢? 比如"查找我的空调"');

return [

'card' => $card,

'outputSpeech' => '您要查找什么智能设备呢? 比如"查找我的空调"',

];

}else{

$deviceName = $this->getSlot('deviceName');

$text = '已查到卧室和客厅的智能' . $deviceName .',请告诉我要控制哪里的'. $deviceName.'呢? 比如"控制卧室的'. $deviceName .'"';

$card = new TextCard($text);

return [

'card' => $card,

'outputSpeech' => ''. $text .'',

];

}

});

/**

* 控制哪里的设备

*/

$this->addIntentHandler('dueros.device_interface.smart_device.control', function(){

if (!$this->getSlot('location')) {

# code...

$this->nlu->ask('location');

$deviceName = $this->getSlot('deviceName');

$card = new TextCard('请告诉我要控制哪里的' . $deviceName . '呢?比如"控制卧室的空调"');

return [

'card' => $card,

'outputSpeech' => '请告诉我要控制哪里的' . $deviceName . '呢?比如"控制卧室的空调"',

];

}else{

$card = new TextCard('请告诉您的指令,比如"调小空调风速、设置温度为30度');

return [

'card' => $card,

'outputSpeech' => '请告诉您的指令,比如"调小空调风速、设置温度为30度',

];

}

});

/**

* 调节风速

*/

$this->addIntentHandler('dueros.device_interface.smart_device.control_wind', function(){

if($this->request->isDialogStateCompleted()) {

//action 这里实现自己的业务逻辑

//处理完返回给用户

$location = $this->getSlot('location');

$deviceName = $this->getSlot('deviceName');

$deviceAction = $this->getSlot('device_action');

$deviceFunction = $this->getSlot('device_function');

$text = '您' . $location . $deviceName . '的'. $deviceFunction .'已经'. $deviceAction . ',你可以继续发送指令给我哦';

$card = new TextCard($text);

$this->endDialog();

return [

'card' => $card,

'outputSpeech' => '' . $text .'',

];

}

if (!$this->getSlot('device_action')) {

# code...

$card = new TextCard('请问您要怎么控制设备呢,比如调小、调大');

return [

'card' => $card,

'outputSpeech' => '请问您要怎么控制设备呢,比如调小、调大',

];

}elseif (!$this->getSlot('device_function')) {

# code...

$card = new TextCard('请问您要控制设备的什么功能呢,比如风速');

return [

'card' => $card,

'outputSpeech' => '请问您要控制设备的什么功能呢,比如风速',

];

}

});

}

}

代码比较简陋,勿喷哈!到此PHP SDK的讲解就到此了。希望能对大家有所帮助,同时欢迎大家踊跃点赞。

上一篇:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值