|
|
@@ -5,9 +5,13 @@
|
|
|
*/
|
|
|
namespace app\enterprise\model;
|
|
|
|
|
|
+use app\admin\model\KeywordLanguages;
|
|
|
+use app\admin\model\QuestionLanguages;
|
|
|
+use app\manage\model\Config;
|
|
|
use app\BaseModel;
|
|
|
use think\facade\Db;
|
|
|
use think\facade\Cache;
|
|
|
+
|
|
|
class Message extends BaseModel
|
|
|
{
|
|
|
protected $pk="msg_id";
|
|
|
@@ -39,6 +43,7 @@ class Message extends BaseModel
|
|
|
public function sendMessage($param,$globalConfig=false){
|
|
|
$is_group = $param['is_group'] ?? 0;
|
|
|
$uid=self::$uid ? : ($param['user_id'] ?? 1);
|
|
|
+ $is_robot = false; //是否给机器人发送消息
|
|
|
if($param['toContactId']==-1){
|
|
|
$is_group=0;
|
|
|
}
|
|
|
@@ -103,7 +108,9 @@ class Message extends BaseModel
|
|
|
}
|
|
|
|
|
|
//判断是否给机器人客服发送消息
|
|
|
- if ($param['toContactId'] == 0) {
|
|
|
+ $autoTask = Config::autoTask();
|
|
|
+ if (!empty($autoTask['user_id']) && $param['toContactId'] == $autoTask['user_id']) {
|
|
|
+ $is_robot = true;
|
|
|
}
|
|
|
}else{
|
|
|
// 群聊必须群成员才能发送消息
|
|
|
@@ -134,7 +141,31 @@ class Message extends BaseModel
|
|
|
if ($sendInterval) {
|
|
|
Cache::set('send_' . $uid, time(), $sendInterval);
|
|
|
}
|
|
|
- return self::sendMsg($param,$is_group);
|
|
|
+ $data = self::sendMsg($param,$is_group);
|
|
|
+
|
|
|
+ // 机器人自动回复问题推送给用户
|
|
|
+ if ($is_robot && $param['type'] == 'text') {
|
|
|
+ //获取关键词匹配
|
|
|
+ $keyword_ids = KeywordLanguages::getKeywordByContent($param['content']);
|
|
|
+ $question = QuestionLanguages::getQuestion($keyword_ids, $param['content']);
|
|
|
+ if ($question) {
|
|
|
+ $param['type'] = 'list';
|
|
|
+ $param['content'] = $question;
|
|
|
+ } else {
|
|
|
+ $param['type'] = 'text';
|
|
|
+ $param['content'] = Config::where('field','reply_keyword_math_fail')->value('val');
|
|
|
+ }
|
|
|
+
|
|
|
+ $param['toContactId'] = $uid;
|
|
|
+ $param['fromUser'] = [
|
|
|
+ 'id' => $data['contactInfo']['id'],
|
|
|
+ 'displayName' => $data['contactInfo']['displayName'],
|
|
|
+ 'avatar' => $data['contactInfo']['avatar'],
|
|
|
+ 'account' => '',
|
|
|
+ ];
|
|
|
+ self::sendMsg($param,$is_group);
|
|
|
+ }
|
|
|
+ return $data;
|
|
|
}
|
|
|
|
|
|
//实际发送消息
|