-
1. 后端处理服务器API
- 1.1 数据库结构
- 1.2 后端处理服务器HTTP 接口
- 1.3. 数据包
-
2. 后端处理服务器应用集成API
- 2.1 设置应用集成
- 2.2 API 格式和签名机制
- 2.3 API 定义
- 3. 客户端扩展机制
-
4. 会话机器人开发指南
- 4.1 机器人应用开发
机器人应用开发
- 2022-12-16 10:59:13
- 苏萌
- 7105
- 最后编辑:苏萌 于 2022-12-21 10:52:51
- 分享链接
会话机器人功能在 喧喧 7.0 及更高版本中可用,是一种允许用户通过与“小喧喧”发送命令或消息来查询数据、触发自定义操作的功能。机器人具有很高的可定制性,用户可以用 PHP 来编写自己的机器人应用。
本手册简单介绍会话机器人的开发方式。
相关代码位置
机器人相关代码位于喧喧后端业务服务器(XXB)中,具体位置为:xxb/module/im/ext/bot/ 下。
该目录用于存放机器人相关代码以及机器人父类,以及默认机器人和示例机器人两个机器人:
xxb/module/im/ext/bot
├── default.bot.php 默认机器人
├── demo.bot.php 示例机器人,如不需要可以删除
└── xuanbot.php 机器人父类
新建的机器人应放置在该目录中。并且机器人 PHP 文件的命名应符合 [机器人代号].bot.php
,例如代号为 weather
的机器人文件名应为 weather.bot.php
,该 PHP 文件中包含一个继承了机器人父类 xuanBot
的类 [机器人代号]Bot
例如 weatherBot
,机器人的命令函数和其他属性都在该类中声明。
机器人代码结构
机器人的具体代码结构,可以参考 demo.bot.php
中的示例机器人,该机器人展示了机器人的基本属性、初始化方式、命令机制。xuanbot.php
文件中也有详细的注释,可以参考进行机器人开发。
以下是一段简单的示例代码:
<?php
class myBot extends xuanBot
{
/**
* 机器人的显示名称
* Display name of this bot.
*
* @var string
* @access public
*/
public $name = 'My Bot';
/**
* 机器人的代号,与类名保持一致
* Bot code. It should be the same as the class name.
*
* @var string
* @access public
*/
public $code = 'my';
/**
* 机器人的头像图片 URL
* Avatar image URL of this bot.
*
* @var string
* @access public
*/
public $avatar = '';
/**
* 机器人的别名,可以有多个
* Aliases of this bot.
*
* @var array
* @access public
*/
public $alias = array('mine');
/**
* 机器人的命令列表,需要与实际命令函数名称一一对应
* Command list of this bot, should be the same as the function names.
*
* 可以使用函数名称或命令对象作为元素,如果使用命令对象,可以设置命令的别名、描述、参数验证器、参数是否必须等属性。
* You can use function name or command object as the element. If you use command object, you can set alias, description, validator, require args and some other properties.
*
* 以下是一个命令对象示例:
* Command object example:
* array(
* 'command' => 'sample', // 命令名称
* // Command name.
* 'description' => 'A sample command.', // 命令描述
* // Command description.
* 'alias' => array('example', 'cmd'), // 别名
* // Alias.
* 'validator' => 'sampleValidator', // 参数验证方法(在对应 bot 中定义)的名称
* // Validator function name (defined in the bot).
* 'argsRequired' => true, // 是否需要参数,如果为真,点击帮助信息中返回的链接不会发送命令,而是填写到输入框
* // Whether the command requires arguments. If true, the command link in the help message will not send the command, but send command into input box.
* 'adminOnly' => true, // 是否只有管理员才能使用
* // Whether the command can only be used by admin.
* 'internal' => true, // 是否切换到该应用才能使用
* // Whether the command can only be used in this app.
* )
*
* @var array
* @access public
*/
public $commands = array();
/**
* 机器人的帮助信息,是 Markdown 格式的文本
* Help message of this bot.
*
* @var string
* @access public
*/
public $help = '';
/**
* 构造函数,会随 im 模块初始化,可以在这里做一些简单的初始化,复杂的初始化请使用 init() 函数
* Constructor, will be called when im module is initialized.
*
* @access public
* @return void
*/
public function __construct()
{
}
// /**
// * 收到普通消息(非命令消息)时的回调函数,可在机器人中实现该函数,会在收到普通消息时调用
// * Callback function when receive a normal message. If this method is implemented in the bot, it will be called on normal message.
// *
// * @param string $message message content
// * @param int $userID sender user id
// * @access public
// * @return string|object
// */
// public function onMessage() {}
// /**
// * 命令函数,可在机器人中实现该函数并注册到命令中,会在收到对应命令时调用
// * Command function, if this method is implemented and registered in the bot, it will be called on command.
// *
// * @param array $args arguments of the command
// * @param int $userID sender user id
// * @param object $user sender user object
// * @access public
// * @return string|object
// */
// public function command($args = array(), $userID = 0, $user = null) {}
}
以上代码中,实现了一个简单的机器人的类 myBot
,被注释掉的方法可以选择性地实现。
完成机器人后,放置在对应目录中,就可以向“阿道”发送命令来调用新的机器人了。
微信公众号