熟悉的都知道,近期我在二开改造群聊关键词回复,关键群聊关键词改装成智能问答,尤其将相似度区间值的答案也成功自动回复,算是相当成功了,于是就想让公众号关键词回复那里也改成这样的功能,但现在遇到了困难,改造不成功,只能自动回复一个,我的判断是程序中的echo $this->give_news($_arr);或echo $this->give_text( $ts['answer'] );仅被激发了一次,所以只能在公众号里回复一个消息,请高手指导解决下,谢谢。
改造后的程序如下:
//关键字自动回复 private function keyword_auto_reply(){ $content = $this->From_content; if($content==''){ return ; } $array = cache('weixin_aoto_reply_keyword'); if(empty($array)){ $array = WeixinAutoreply::get_keyword(); cache('weixin_aoto_reply_keyword',$array); } //先定义一个数组$a,用于存放匹配值的答案 $a=array(); foreach($array AS $key=>$value){ // $res = getSimilar456("$content","$key"); // logs($res['score']); $obj = new TextSimilarity ("$content","$key"); // $lcs->getSimilar123("$content","$key"); // logs($obj->run()); //判断匹配值 if( $obj->run()>0.8 || $obj->run()>0.40&& $obj->run()<0.8 ) { //将符合判断值的答案先放入数组$a array_push($a, $tt = WeixinAutoreply::get($value)); } } // 判断新数组开始 if(!empty($a)){ logs($a);//此为了查验证是否新数组成功 $count = count($a); logs(总共有.$count.个答案组); foreach($a AS $ts){ // 判断信息类别并输出开始 if($ts['type']==1){ //图文信息 $_array = unserialize($ts['answer']); $_arr = []; if(is_array($_array)){ foreach($_array AS $_r){ $_arr[] = array( 'title'=>$_r['title'], 'picurl'=>tempdir($_r['pic']), 'about'=>$_r['desc'], 'url'=>$_r['link'], ); } } if($_arr){ echo $this->give_news($_arr); exit; } }else{ //纯文本信息 if($ts['answer']!=''){ echo $this->give_text( $ts['answer'] ); exit; } } //判断信息类别并输出截止 } } // 判断新数组结束 // return ; } //客服
logs标记出来,新数组$a确实存在,且是正确匹配出来的答案组
但通过这个遍历答案组$a,却并不能全部在公众号内输出,只能输出一个。