微信开发实例教程 Vo1 - 智能聊天机器人

本篇教程所描述的插件开发过程都是基于douchat微信开发框架,在阅读本教程前,请先了解douchat并在你的服务器安装配置好这个简洁、优雅、开源的公众号开发框架。官网地址:douchat.cc/

聊天机器人插件开发实例教程

一、创建插件
系统管理-扩展管理-设计新插件处填写要创建的插件基本信息。因为将要开发的聊天机器人插件只需要在微信聊天框中处理用户发送的消息并给出回复,不涉及到后台管理功能和前端页面显示,所以只需要勾选是否需要响应规则是否需要配置参数即可。

插件创建成功后会在Addons目录下生成插件文件夹,如下所示

插件创建成功后生成的插件信息文件info.php如下:

二、设置插件配置信息
此插件需要使用图灵机器人的聊天API,所以在info.php里面设置插件的配置信息如下:

'config' => array(
        'respond_rule' => 1,
        'setting' => 1,
        'setting_list' => array(
            'can_voice' => array(
                'title' => '是否开启语音聊天',
                'type' => 'radio',
                'options' => array(
                    0 => '不开启',
                    1 => '开启'
                ),
                'value' => 0,
                'tip' => '开启语音聊天,需要在微信后台开启语音识别功能'
            ),
            'api_url' => array(
                'title' => '图灵API地址',
                'type' => 'text',
                'placeholder' => 'http://www.tuling123.com/openapi/api',
                'value' => '',
                'tip' => ''
            ),
            'api_key' => array(
                'title' => '图灵API KEY',
                'type' => 'text',
                'placeholder' => '5b6d54d86d958fe4fabb67883903dbe9',
                'value' => '',
                'tip' => '前往图灵机器人官网申请API'
            ),
            'enter_tip' => array(
                'title' => '进入聊天提示语',
                'type' => 'textarea',
                'placeholder' => '你想聊点什么呢',
                'value' => '',
                'tip' => '用户发送关键词进入机器人聊天模式时回复给用户的内容'
            ),
            'keep_time' => array(
                'title' => '会话保持时间',
                'type' => 'text',
                'placeholder' => '300',
                'value' => '',
                'tip' => '在此时间范围内,用户一直处在机器人聊天模式中,默认300秒(5分钟)'
            ),
            'exit_keyword' => array(
                'title' => '退出聊天关键词',
                'type' => 'text',
                'placeholder' => '退出',
                'value' => '',
                'tip' => '用户发送此关键词主动退出机器人聊天模式'
            ),
            'exit_tip' => array(
                'title' => '退出聊天提示语',
                'type' => 'textarea',
                'placeholder' => '下次无聊的时候可以再找我聊天哦',
                'value' => '',
                'tip' => '用户退出机器人聊天模式时回复给用户的内容'
            )
        )
    )复制代码

设置成功后在插件管理后台可以看到插件配置项

三、编写微信交互代码
在插件后台配制处填写好申请到的图灵机器人api并进行其他的聊天回复设置后,就可以通过插件的RespondController来编写微信端的交互代码。

/**
     * 微信交互
     * @param $message array 微信消息数组
     * @author 艾逗笔<765532665@qq.com>
     */765532665@qq.com>
    public function wechat($message = array()) {
        $settings = get_addon_settings('IdouChat');
        $settings['enter_tip'] || $settings['enter_tip'] = '你想聊点什么呢';
        $settings['keep_time'] || $settings['keep_time'] = 300;
        $settings['exit_keyword'] || $settings['exit_keyword'] = '退出';
        $settings['exit_tip'] || $settings['exit_tip'] = '下次无聊的时候可以再找我聊天哦';
        if (!$settings['api_url'] || !$settings['api_key']) {
            reply_text('机器人聊天接口未填写,暂时不能使用此功能');
            exit();
        }
        if ($message['MsgType'] == 'voice') {
            if ($settings['can_voice'] == '1') {
                $content = $message['Recognition'];        // 语音识别,直接开启机器人聊天模式
                $reply = $this->turingAPI($content);
                if (is_array($reply)) {
                    return reply_news($reply);
                } else {
                    return reply_text($reply);
                }
            }
        } else {
            $content = $message['Content'];            // 通过消息上下文机制与机器人展开聊天
            if (!$this->in_context) {
                $reply = $settings['enter_tip'];
                $this->begin_context($settings['keep_time']);                    // 开启上下文模式
            } else {
                if ($content == $settings['exit_keyword']) {
                    $reply = $settings['exit_tip'];
                    $this->end_context();
                } else {
                    $reply = $this->turingAPI($content);
                    $this->keep_context($settings['keep_time']);                // 保持消息上下文
                }
            }

            if (is_array($reply)) {
                return reply_news($reply);
            } else {
                return reply_text($reply);
            }
        }
    }复制代码

上述代码的大致逻辑是:
1、使用get_addon_settings('IdouChat')获取到插件的配置信息
2、接收微信端用户发送的消息并判断消息上下文
3、调用图灵机器人API给用户回复消息

四、设置关键词响应
在编写了上述代码后,需要在插件管理后台的响应规则出设置一下触发关键词,设置成功后微信端用户发送对应的关键词内容后,消息会被分发到此插件的Respond控制器的wechat方法,那么第三步中设置的交互代码将会执行,从而可以实现机器人聊天功能。

五、效果预览

总结
本篇教程简要讲解了使用豆信框架开发一个聊天机器人功能的流程。涉及到的知识点有:
1、使用豆信框架后台创建插件
2、在插件信息文件info.php里面编写插件配置信息
3、使用图灵机器人API
4、编写插件响应控制器,处理微信端发送的消息
5、使用消息上下文将用户连续两次的交互绑定在一起

插件源代码:
github.com/mikemintang…

扫码即可体验了解机器人功能:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值