
熟悉的都知道,近期我在二开改造群聊关键词回复,关键群聊关键词改装成智能问答,尤其将相似度区间值的答案也成功自动回复,算是相当成功了,于是就想让公众号关键词回复那里也改成这样的功能,但现在遇到了困难,改造不成功,只能自动回复一个,我的判断是程序中的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,却并不能全部在公众号内输出,只能输出一个。
