所属分类:php教程
程序员必备接口测试调试工具:立即使用
Apipost = Postman + Swagger + Mock + Jmeter
Api设计、调试、文档、自动化测试工具
后端、前端、测试,同时在线协作,内容实时同步
怎样开启小程序客服功能
开启自定义的小程序的客服功能,需要两步,
第一步:在自己的微信平台开通消息推送的功能
具体的在官方wiki里有https://developers.weixin.qq.com/miniprogram/introduction/custom.html#%E5%A1%AB%E5%86%99%E6%B6%88%E6%81%AF%E6%8E%A8%E9%80%81%E9%85%8D%E7%BD%AE
第二步:完成自己的后台
前提:你的服务器可以被微信访问。
流程:用户出发某个事件后,向微信服务器发送数据包,如果你开启消息推送服务(第一步),那么微信服务器会进行数据的处理转发,具体的格式是xml还是json取决于你在微信后台的选择,我这里选择的json,微信通过主动调用你的接口将数据包返回给你,如果你想向用户响应某个信息,需要某个接口向微信服务器发送你的响应数据包,里面包含客服的openid.具体的详情看代码。
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()
{
$postStr = file_get_contents('php://input');//因为我的环境是php7
if (!empty($postStr) && is_string($postStr)){
$postArr = json_decode($postStr,true);
if(!empty($postArr['MsgType']) && $postArr['MsgType'] == 'text'){ //文本消息
$fromUsername = $postArr['FromUserName']; //发送者openid
$toUserName = $postArr['ToUserName']; //小程序id
$textTpl = array(
"ToUserName"=>$fromUsername,
"FromUserName"=>$toUserName,
"CreateTime"=>time(),
"MsgType"=>"transfer_customer_service",
);
exit(json_encode($textTpl));
}elseif(!empty($postArr['MsgType']) && $postArr['MsgType'] == 'image'){ //图文消息
$fromUsername = $postArr['FromUserName']; //发送者openid
$toUserName = $postArr['ToUserName']; //小程序id
$textTpl = array(
"ToUserName"=>$fromUsername,
"FromUserName"=>$toUserName,
"CreateTime"=>time(),
"MsgType"=>"transfer_customer_service",
);
exit(json_encode($textTpl));
}elseif($postArr['MsgType'] == 'event' && $postArr['Event']=='user_enter_tempsession'){
$fromUsername = $postArr['FromUserName'];
$data = array(
"touser"=>$fromUsername,
"msgtype"=>"link",
"link"=>[
"title"=>'this is title',
"description"=> "Is Really A Happy Day",
"url":=>"URL",
"thumb_url"=>"THUMB_URL"
]
);
$json = json_encode($data,JSON_UNESCAPED_UNICODE);
$access_token = $this->get_accessToken();
$url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$access_token;
//将数据返给微信服务器进行转发。
$this->curl_post($url,$json);
}else{
exit('aaa');
}
}else{
echo "";
exit;
}
}
public function get_accessToken(){
if(cache('access_token')){
return cache('access_token');
}
/* 不在有效期,重新发送请求,获取access_token */
else{
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->appid}&secret={$this->secret}";
$result = curl_get_https($url);
$res = json_decode($result,true); //json字符串转数组
if($res){
cache('access_token',$res['access_token'],7100);
return cache('access_token');
}else{
return 'api return error';
}
}
}
/**
* @Author callmelx
* @DateTime 2018-10-06
* @return [type] [description]
*/
public function curl_post($url,$data=''){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($data)){
curl_setopt($curl, CURLOPT_POSTFIELDS,$data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//curl_setopt($curl, CURLOPT_HTTPHEADER, $headers );
$output = curl_exec($curl);
if (curl_errno($curl)) {
echo 'Errno'.curl_error($curl);//捕抓异常
}
curl_close($curl);
if($output == 0){
echo 'success';exit;
}
}
}
登录后复制
有几个坑需要注意一下,如果你的token验证总是失败:
1.建议你看一下自己server服务器的token与现在的token是否相同。
2.如果你发现自己的代码绝对没有问题,token也绝对没有问题的话,而且还是报错,那么我建议检查一下自己服务器的文件的权限问题了,如果你是tp框架,检查一下啊自己的runtime是否给了777,如果你是给755的话可能还是不会起作用。
推荐学习:小程序开发
以上就是怎样开启小程序客服功能的详细内容,更多请关注zzsucai.com其它相关文章!