Download the PHP package dueros/bot-sdk without Composer

On this page you can find all versions of the php package dueros/bot-sdk. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package bot-sdk

度秘BOT SDK for PHP

这是一个帮助开发Bot的SDK,我们强烈建议您使用这个SDK开发度秘的Bot。当然,您可以完全自己来处理DuerOS的协议,自己完成session、nlu、result的处理,但是度秘的DuerOS对BOT的协议会经常进行升级,这样会给您带来一些麻烦。这个SDK会与DuerOS的协议一起升级,会最大限度减少对您开发bot的影响。

通过bot-sdk可以快速的开发bot

我们的目标是通过使用bot-sdk,可以迅速的开发一个bot,而不必过多去关注DuerOS对Bot的复杂协议。我们提供如下功能:

安装、使用BOT SDK进行开发

度秘BOT SDK采用PSR-4规范自动加载 , PHP版本确保在5.4.0及以上。要验证请求参数来自DuerOS,php还得支持openssl扩展。使用composer执行如下命令进行安装:

为了开始使用BOT SDK,你需要先新建一个php文件,比如文件名是Bot.php。你先需要require autoload.php文件,这个文件一般在vendor目录,如果没有这个目录,请先执行composer dump-autoload。

需要继承Baidu\Duer\Botsdk\Bot。 下一步,我们处理意图。Bot-sdk提供了一个函数来handle这些意图。比如,为新建闹钟,创建一个handler,在构造函数中添加:

这里addHandler可以用来建立(intent) => handler的映射,第一个参数是条件,如果满足则执行对应的回调函数(第二个参数)。 其中,$this指向当前的Bot,getSlot继承自父类Bot,通过slot名字来获取对应的值。回调函数返回值是一个数组,可以包含多个字段,比如:carddirectivesoutputSpeechreprompt

template展现模版 为了更好的在有屏设备端上展现技能,DuerOS提供了多种展现模板供开发者使用。展现模板分body template和list template两种类型。其中body template由图片和文字组成,list template由一系列list item组成,每个list item由图片和文字组成。不同的展现模板适合不同的场景,开发者可以根据技能展现的需求选择合适的模板。关于模板的详细功能和展现效果可以参考DuerOS模板文档,https://dueros.baidu.com/didp/doc/dueros-bot-platform/dbp-custom/display-template_markdown

文本展现模板

BodyTemplate1

上图下文模版

BodyTemplate2

左图右文模版

BodyTemplate3

右图左文

BodyTemplate4

图片模板

BodyTemplate5

横向列表模板

ListTemplate1

纵向列表模板

ListTemplate2

Display.ElementSelected事件

当点击模板列表中的卡片时,DuerOS会向技能发送Display.ElementSelected事件,请求技能进行相应的处理。

card展现卡片 在有屏设备上,您的技能在回复用户时,可以通过使用卡片展现更生动、丰富的内容。常用的展现卡片类型有文本卡片、标准卡片、标准列表卡片、图片卡片。展现卡片随Response消息一起发送给DuerOS。具体展现卡片的功能和展示效果可以参考DuerOS展现卡片文档,https://dueros.baidu.com/didp/doc/dueros-bot-platform/dbp-custom/cards_markdown

文本卡片

TextCard

标准卡片

StandardCard

列表卡片

ListCard

列表卡片点击事件处理

Screen.LinkClicked 如果卡片或者卡片列表配置了URL地址,当用户点击卡片或者卡片列表时,DuerOS会向技能发送Screen.LinkClicked事件,技能收到该事件后会返回需要展现的内容。

图片卡片

ImageCard

directive返回指令

音乐播放指令

AudioPlayer.Play

渲染音频播放器的主界面

AudioPlayer.Play指令中增加playerInfo信息

停止端上的播放音频

AudioPlayer.Stop

音频事件处理

Bot可以通过addEventListener接口来监听音频播放的时的事件,下面以AudioPlayer.PlaybackNearlyFinished事件举例。

视频播放

VideoPlayer视频播放提供了VideoPlayer指令接口和VideoPlayer事件接口。VideoPlayer指令是技能向DuerOS发送的,对视频进行控制的指令,如播放指令、停止播放指令等。DuerOS收到指令后会转化成端上能识别的播放指令,对视频进行相应的控制。VideoPlayer事件是指在视频播放过程中触发一系列事件,DuerOS会将这些事件上报给技能,请求技能进行处理。具体协议内容可以参考视频协议文档,https://dueros.baidu.com/didp/doc/dueros-bot-platform/dbp-custom/videoplayer_markdown

视频播放指令

VideoPlayer.Play

停止端上播放的视频

VideoPlayer.Stop

视频事件处理

Bot可以通过addEventListener接口来监听视频播放的时的事件,下面以VideoPlayer.PlaybackNearlyFinished事件举例。

获取端屏幕展现状态

渲染引导词

使用Hint指令渲染引导词

设置好handler之后,就可以实例化刚刚定义的Bot,在webserver中接受DuerOS来的请求。比如,新建一个文件index.php,拷贝如下代码:

利用php内建的webserver,运行如下命令:

返回speech

outputSpeech

上面例子,除了返回card之外,还可以返回outputSpeech,让客户端播报tts:

reprompt

当客户端响应用户后,用户可能会一段时间不说话,如果你返回了reprompt,客户端会提示用户输入

Lanuch & SessionEnd

bot开始服务

当bot被@(通过bot唤醒名打开时),DuerOS会发送LanuchRequest给bot,此时,bot可以返回欢迎语或者操作提示:

bot 结束服务

当用户表达退出bot时,DuerOS会发送SessionEndedRequest

使多轮对话管理更加简单

往往用户一次表达的需求,信息不一定完整,比如:'给我创建一个闹钟',由于query中没有提醒的时间,一个好的bot实现会问用户:'我应该什么时候提醒你呢?',这时用户说明天上午8点,这样bot就能获取设置时间,可以为用户创建一个闹钟。比如,你可以这样来实现:

Bot-sdk会根据通过addIntentHandler添加handler的顺序来遍历所有的检查条件,寻找条件满足的handler来执行回调,并且当回调函数返回值不是null时结束遍历,将这个不为null的值返回。

NLU会维护slot的值,merge每次对话解析出的slot,你可以不用自己来处理,DuerOS每次请求Bot时会将merge的slot都下发。session内的数据完全由你来维护,你可以用来存储一些状态,比如打车Bot会用来存储当前的订单状态。你可以通过如下接口来使用slotsession

你的Bot可以订阅端上触发的事件,通过接口addEventListener实现,比如端上设置闹钟成功后,会下发SetAlertSucceeded的事件,Bot通过注册事件处理函数,进行相关的操作。如果不想每个事件都进行处理可以通过接口addDefaultEventListener来统一处理,没有通过addEventListener订阅的事件。

NLU交互协议

在DuerOS Bot Platform平台,可以通过nlu工具,添加了针对槽位询问的配置,包括:

针对填槽多轮,Bot发起对用户收集、确认槽位(如果针对特定槽位有设置确认选项,就进行确认)、确认意图(如果有设置确认选项)的询问,bot-sdk提供了方便的快捷函数支持:

注意:一次返回的对话directive,只有一个,如果多次设置,只有最后一次的生效

ask

多轮对话的bot,会通过询问用户来收集完成任务所需要的槽位信息,询问用户的特点总结为3点,ask:问一个特定的槽位。比如,打车服务收到用户的打车意图的时候,发现没有提供目的地,就可以ask destination(目的地的槽位名):

delegate

将处理交给DuerOS的对话管理模块DM(Dialog Management),按事先配置的顺序,包括对缺失槽位的询问,槽位值的确认(如果设置了槽位需要确认,以及确认的话术),整个意图的确认(如果设置了意图需要确认,以及确认的话术。比如可以将收集的槽位依次列出,等待用户确认)

confirm slot

主动发起对一个槽位的确认,此时还需同时返回询问的outputSpeach。主动发起的确认,DM不会使用默认配置的话术。

confirm intent

主动发起对一个意图的确认,此时还需同时返回询问的outputSpeach。主动发起的确认,DM不会使用默认配置的话术。

一般当槽位填槽完毕,在进行下一步操作之前,一次性的询问各个槽位,是否符合用户预期。

插件

你还可以写插件(拦截器Intercept),干预对话流程、干预返回结果。比如,用户没有通过百度帐号登录,bot直接让用户去登录,不响应意图,可以使用LoginIntercept

开发自己的拦截器,继承\Baidu\Duer\Botsdk\Intercept,通过重载preprocess,能够在处理通过addHandleraddEventListener添加的回调之前,定义一些逻辑。通过重载postprocess能够对回调函数的返回值,进行统一的处理:

intercept可以定义多个,执行顺序,以调用addIntercept的顺序来执行

如何调试

本地测试

bot-sdk提供了一个简单的工具,方便用户在没有接入DuerOS时调试自己的bot。 首先你需要通过PHP内置的webserver,将你的bot运行起来,这里假设是监听的8000端口。然后,构造你的NLUsession等数据,如个人所得税计算器bot构造的数据结构,具体可以参考samples/personal_income_tax中part目录的例子,比如:./post-part.sh part/create.php

如何打印日志

bot-sdk提供了日志打印的工具,开发者可以直接使用,当然也可以用自己习惯的日志工具。一次请求只打印一条NOTICE日志;FATALWARN日志可以打印多条。

日志按小时切分,fatal,warn日志存储到一个文件,notice日志存储到一个文件。日志输出路径可以在构造函数中通过path参数指定。比如log/表示是Bot.php同级的log目录。

可以参考samples/personal_income_tax的例子

定义日志

统计耗时

记录某个字段

打印日志

最后将NOTICE日志打印出来

打印fatal、warn

数据统计

BotMonitor是什么

它可以帮助您收集和分析您开发的bot运行中产生的数据,帮助您实时查看应用运行状态,及时发现应用中存在的问题,提升>用户体验。目前,BotMonitor提供应用性能分析、用户行为统计。使用BotMonitor,您可以方便的在自己的DBP平台查看Bot的用户量、会话量、请求量、QPS以及Session的相关统计数据指标。

bot-sdk如何使用BotMonitor数据统计

在construct中使用如下方法

具体数据统计的说明和使用可以参考BotMonitor文档 https://packagist.org/packages/monitor/bot-monitor


All versions of bot-sdk with dependencies

PHP Build Version
Package Version
Requires php Version >=5.4.0
monitor/bot-monitor Version ^1.4
php-curl-class/php-curl-class Version ^8.3.2
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package dueros/bot-sdk contains the following files

Loading the files please wait ....