微信小程序客服智能回复示例代码(PHP)

业务逻辑文件编写

use think\Action; //自己封装的curl方法,详情看附录
define("TOKEN", "你设置的token");

class Customer extends Controller
{
//校验服务器地址URL
public function checkServer(){
if (isset($_GET[‘echostr‘])) {
$this->valid();
}else{
$this->responseMsg();
}
}

public function valid()
{
$echoStr = $_GET["echostr"];
if($this->checkSignature()){
header(‘content-type:text‘);
echo $echoStr;
exit;
}else{
echo $echoStr.‘+++‘.TOKEN;
exit;
}
}

private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];

$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );

if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}

public function responseMsg()
{
//此处推荐使用file_get_contents(‘php://input‘)获取后台post过来的数据
$postStr = file_get_contents(‘php://input‘);
if (!empty($postStr) && is_string($postStr)){
$postArr = json_decode($postStr,true);
if(!empty($postArr[‘MsgType‘]) && $postArr[‘MsgType‘] == ‘text‘){
//用户给客服发送文本消息
if($postArr[‘Content‘] == 7){
//接收到指定的文本消息,触发事件
$fromUsername = $postArr[‘FromUserName‘]; //发送者openid
$media_id = ‘上传到微信服务器的图片id,看第三部分‘; //输入想要回复的图片消息的media_id
$this->requestIMAGE($fromUsername,$media_id);
}
}
else if(!empty($postArr[‘MsgType‘]) && $postArr[‘MsgType‘] == ‘image‘){
//用户给客服发送图片消息,按需求设置
}
else if($postArr[‘MsgType‘] == ‘event‘ && $postArr[‘Event‘]==‘user_enter_tempsession‘){
//用户进入客服事件
$fromUsername = $postArr[‘FromUserName‘]; //发送者openid
$content = ‘你好,欢迎来到***客服,有什么能帮助您的么‘;
$this->requestTXT($fromUsername,$content);
}
else{
exit(‘error‘);
}
}else{
echo "empty";
exit;
}
}

//文本回复
public function requestTXT($fromUsername,$content){
$data=array(
"touser"=>$fromUsername,
"msgtype"=>"text",
"text"=>array("content"=>$content)
);
$json = json_encode($data,JSON_UNESCAPED_UNICODE);
$this->requestAPI($json);
}

//图片回复
public function requestIMAGE($fromUsername,$media_id){
$data=array(
"touser"=>$fromUsername,
"msgtype"=>"image",
"image"=>array("media_id"=>$media_id)
);
$json = json_encode($data,JSON_UNESCAPED_UNICODE);
$this->requestAPI($json);
}

public function requestAPI($json){
$access_token = $this->get_accessToken();
$action = new Action(); //自己封装的curl方法,详情看附录
$url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$access_token;
$output = $action->curl_post($url,$json);
if($output == 0){
echo ‘success‘;
exit;
}
}

//调用微信api,获取access_token,有效期7200s
public function get_accessToken(){
$url = ‘https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=你的appid&secret=你的秘钥‘; //替换成自己的小程序id和secret
$res = file_get_contents($url);
$data = json_decode($res,true);
$token = $data[‘access_token‘];
return $token;
}
}

上传回复图片到微信服务器

这个是临时的素材接口,只能存在3天,目前小程序不支持永久素材上传,只有公众号支持

public function uploadWxMedia(){
$token = $this->get_accessToken();
$type = "image";
$filepath = Env::get(‘root_path‘).‘public\\assets\\imageName.png‘; //文件在服务器的绝对路径,按自己存放位置修改
$data = array("media"=>new \CURLFile($filepath)); //php5.6以上必须用这种方法上传文件
$url = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=".$token."&type=".$type;
$action = new Action(); //封装的curl方法,看附录
$result = $action->curl_post($url,$data);
print_r($result);
}

//调用微信api,获取access_token,有效期7200s
public function get_accessToken(){
$url = ‘https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=你的appid&secret=你的秘钥‘; //替换成自己的小程序id和secret
$res = file_get_contents($url);
$data = json_decode($res,true);
$token = $data[‘access_token‘];
return $token;
}

  

访问 uploadWxMedia() 方法就会把设置好的图片上传,会返回一个json数据:

{"type":"image","media_id":"LTbNsi***************JqG","created_at":1558062553}

其中的 media_id 就是用来填写进第二步的回复图片中的值

附录

封装的curl方法

namespace think;
class Action
{
//get方式请求接口
public function get_json($url)
{
$data = file_get_contents($url);
//转换成数组
$data = json_decode($data,true);
//输出
return $data;
}
//post方式请求接口
public function curl_post($url,$data,$headers = null)
{
//$data 是一个 array() 数组;未编码
$curl = curl_init(); // 启动一个CURL会话
if(substr($url,0,5)==‘https‘){
// 跳过证书检查
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
//只有在CURL低于7.28.1时CURLOPT_SSL_VERIFYHOST才支持使用1表示true,高于这个版本就需要使用2表示了(true也不行)。
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
}
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
if($headers != null){
//post请求中携带header参数
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
}
//返回api的json对象
$response = curl_exec($curl);
//关闭URL请求
curl_close($curl);
//返回json对象
return $response;
}
}

  

原文地址:https://www.cnblogs.com/rianley/p/12306162.html

时间: 2024-11-03 16:32:02

微信小程序客服智能回复示例代码(PHP)的相关文章

微信小程序客服系统手机版五大功能介绍

很多朋友小程序上线后,客服消息这块一直没得到解决.小程序客服消息只能在PC端回复,是让众多小程序运营商及商家头疼的问题,因为一个再牛逼的客服,也不可能随时随地都抱着电脑,这就导致很多用户的留言不能及时得到回复,从而影响用户的使用体验,严重的可能导致顾客投诉.跳单,甚至直接把你的小程序打入"冷宫",挥挥手再也不见. ①微信小程序客服消息可以直接在手机回复吗? ②客服不在线会有消息提示吗? ③可以设置多客服吗? ④一个客服可以服务多个小程序免登入切换吗? ⑤消息可以分类,批量处理吗? 这是

微信小程序客服消息之解决方案

小程序自公开发布起就有消息推送功能,但由于张小龙对于微信小程序的定义为极简的生活方式,所以为了避免小程序发送过多的推送消息骚扰用户对于小程序消息推送制定了许多的规则和限制. 一.小程序客服消息的意义: 为丰富小程序的服务能力,提高服务质量,微信为小程序提供客服消息能力,以便小程序用户可以方便快捷地与小程序服务提供方进行沟通. 二.小程序把推送消息定义为两大类:模板消息和客服消息 模板消息:后台可以制作消息模板,商户可以将模板消息发送给接受过服务的用户,用户接受过一次服务(以是否产生支付数据为准)

一个超厉害的智能小程序:可接收你的小程序客服消息,无需开发,自动接入。

它是一款智能小程序客服的小程序工具.分四步为大家测评下 ①进入小程序 ②登入账号 ③查看回复消息 ④个人中心 一.进入小程序 它四个说明:登入,注册,体验,功能 1.登入界面,如果没有账号,请 点击这里 注册 2.同时,它还贴心地准备了测试账号,点击[体验小客服] 3.四大特点:小程序智能客服,多客服接待,自动回复,消息及时推送 (PS:请在PC端注册后,在芝麻小客服后台,设置多客服,自动回复等功能) 二.登入账号 1.输入手机号+密码 2.选择小程序(如果你绑定了多个小程序,这里可以一键切换)

小程序客服消息接入微信教程

很多商家在咨询小程序,都会咨询手机上能不能接待客户,当然可以,但需要开通客服助手小程序,下面就和大家分享一下小程序客服消息接入微信教程? 基本流程:客服入口-添加绑定客服微信号-用绑定客服微信号扫码-进入客服工具-在线接待客户 步骤一:找到客服入口 首先需要登录微信小程序管理后台,找到客服界面,如图所示: 步骤二:添加绑定客服微信号 点击"客服",进入客服界面时,在右侧,有一个"添加"按钮,可以添加客服人员. 点击"添加",输入您需要绑定的微信号

过滤器总结 微信小程序和百度智能小程序和vue过滤器

因为最近写了微信小程序和百度小程序,用到了过滤器,感觉还挺好用的,所以就来总结一下,希望能帮到你们. 1. 微信小程序过滤器: 1.1:首先建一个单独的wxs后缀的文件,一般放在utils文件夹里面.这里我命名为imgFilter.wxs(因为我项目里是用来处理图片的,哈哈) 1.2:写代码,为了方便理解,下面是一个简单的返回一个字符串拼接,当然里面的函数你想怎么处理都行,这里主要介绍思路和基本实现. var bar = function (x) { return 'hello'+ x; } m

「速成应用」一键生成微信小程序平台 可视化制作开发无需代码

经历了频繁的更新迭代,小程序已经构建起了趋于完善的生态,与此同时,以「速成应用」为代表的小程序第三方开发平台也在推动着小程序市场的发展.为了更好地助力企业打造微信内电商生态闭环,实现线上线下引流,「速成应用」于近日进行了全功能的更新,通过对各类功能组件的优化,帮助企业实现商业模式的转型升级与营销突破. 「速成应用」根据商家反馈的问题,重点对小程序模块中的电商.外卖等功能进行优化升级,旨在帮助企业解决门店经营与小程序线上营销两大难题.在这次升级过程中同样也对辅助功能进行了优化.升级完成后,全线功能

小程序客服加 默认标签及标题

<button class='nav-item-btn f26 cor5z flexca' open-type="contact" session-from="weapp" send-message-img="{{user.headThumb}}" show-message-card="{{true}}" send-message-title="我是标题我是标题我是标题我是标题我是标题我是标题我是标题我是标题我

分享为小程序添加自动回复消息的5种方法!自动客服功能的微信小程序

如何通过小程序客服消息引导自动关注公众号? 小程序客服自动回复一个图文链接? 小程序客服可以发小程序卡片吗? 小程序客服能像公众号一样设置关键词回复吗? 收到消息时自动回复? 微信小程序新手如何默认自动回复功能 如果你遇到以上问题,请往下看!教大家实现微信小程序客服自动回复消息功能,以帮助我们更好地与客户进行互动. 当我们的小程序接入客服,在小程序前端增加一个客服按钮,用户可以点击按钮主动和我们的客服互动! 但是有个问题,消息那么多,如何才能接待的过来,能否想微信公众号一样自动回复,关键词回复,

CabloyJS的微信API对接模块:当前支持微信公共号和微信小程序

Cabloy-微信是什么 Cabloy-微信是基于CabloyJS全栈业务开发框架开发的微信接口模块,当前整合了微信公共号和微信小程序的接口,达到开箱即用的使用效果.在Cabloy-微信的基础上,可以很方便的开发各类微信业务系统 特性 基于CabloyJS全栈框架提供的便利性和灵活性,Cabloy-微信主要有如下特性: 1. 一站式整合 当前整合了微信公共号和微信小程序的接口,具体如下: 场景 名称 说明 微信公共号 消息系统 自动完成接口对接,并自动进行用户注册 微信公共号 网页登录 自动跳转