本篇教程所描述的插件開發過程都是基於douchat微信開發框架,在閱讀本教程前,請先了解douchat並在你的服務器安裝配置好這個簡潔、優雅、開源的公衆號開發框架。官網地址:douchat.cc/php
1、建立插件
在系統管理-擴展管理-設計新插件處填寫要建立的插件基本信息。由於將要開發的聊天機器人插件只須要在微信聊天框中處理用戶發送的消息並給出回覆,不涉及到後臺管理功能和前端頁面顯示,因此只須要勾選是否須要響應規則和是否須要配置參數便可。
前端
插件建立成功後會在Addons目錄下生成插件文件夾,以下所示
git
插件建立成功後生成的插件信息文件info.php以下:
github
2、設置插件配置信息
此插件須要使用圖靈機器人的聊天API,因此在info.php裏面設置插件的配置信息以下:web
'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
3、編寫微信交互代碼
在插件後臺配製處填寫好申請到的圖靈機器人api並進行其餘的聊天回覆設置後,就能夠經過插件的RespondController來編寫微信端的交互代碼。數組
/**
* 微信交互
* @param $message array 微信消息數組
* @author 艾逗筆<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);
}
}
}複製代碼
上述代碼的大體邏輯是:
一、使用get_addon_settings('IdouChat')
獲取到插件的配置信息
二、接收微信端用戶發送的消息並判斷消息上下文
三、調用圖靈機器人API給用戶回覆消息服務器
4、設置關鍵詞響應
在編寫了上述代碼後,須要在插件管理後臺的響應規則出設置一下觸發關鍵詞,設置成功後微信端用戶發送對應的關鍵詞內容後,消息會被分發到此插件的Respond控制器的wechat方法,那麼第三步中設置的交互代碼將會執行,從而能夠實現機器人聊天功能。
微信
5、效果預覽
微信開發
總結
本篇教程簡要講解了使用豆信框架開發一個聊天機器人功能的流程。涉及到的知識點有:
一、使用豆信框架後臺建立插件
二、在插件信息文件info.php裏面編寫插件配置信息
三、使用圖靈機器人API
四、編寫插件響應控制器,處理微信端發送的消息
五、使用消息上下文將用戶連續兩次的交互綁定在一塊兒
插件源代碼:
github.com/mikemintang…
掃碼便可體驗瞭解機器人功能: